Merge branch 'issue309_address_lines' into 'master'

address: render Address as lines

See merge request Chill-Projet/chill-bundles!277
This commit is contained in:
Julien Fastré 2022-01-10 11:49:38 +00:00
commit e677c0fe2f
8 changed files with 451 additions and 105 deletions

View File

@ -11,6 +11,8 @@ and this project adheres to
## Unreleased ## Unreleased
<!-- write down unreleased development here --> <!-- write down unreleased development here -->
* [address] define address lines according postal standards for France and Belgium (default) and change AddressRender, chill_entity_render_box and AddressRenderBox.vue
* [household] change translations (champs-libres/departement-de-la-vendee/accent-suivi-developpement#109) * [household] change translations (champs-libres/departement-de-la-vendee/accent-suivi-developpement#109)
* [household] add address i18n in household component (champs-libres/departement-de-la-vendee/accent-suivi-developpement#158) * [household] add address i18n in household component (champs-libres/departement-de-la-vendee/accent-suivi-developpement#158)
* [household] add on the fly i18n in household component * [household] add on the fly i18n in household component

View File

@ -315,11 +315,6 @@ parameters:
count: 1 count: 1
path: src/Bundle/ChillMainBundle/Security/PasswordRecover/TokenManager.php path: src/Bundle/ChillMainBundle/Security/PasswordRecover/TokenManager.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 3
path: src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php
- -
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 1 count: 1

View File

@ -60,6 +60,8 @@ class Address
/** /**
* @var string|null * @var string|null
* *
* used for the CEDEX information
*
* @ORM\Column(type="string", length=255, nullable=true) * @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"write"}) * @Groups({"write"})
*/ */

View File

@ -2,21 +2,28 @@
<component :is="component" class="chill-entity entity-address my-3"> <component :is="component" class="chill-entity entity-address my-3">
<component :is="component" class="address" :class="multiline"> <component :is="component" class="address" :class="multiline">
<p v-if="address.text" <div v-if="isMultiline === true">
class="street"> <p v-for="(l, i) in address.lines" :key="`line-${i}`">
{{ address.text }}, {{ l }}
</p> </p>
<p v-if="address.postcode" </div>
class="postcode"> <div v-else>
{{ address.postcode.code }} {{ address.postcode.name }} <p v-if="address.text"
</p> class="street">
<p v-if="address.country" {{ address.text }}
class="country"> </p>
{{ address.country.name.fr }} <p v-if="address.postcode"
</p> class="postcode">
{{ address.postcode.code }} {{ address.postcode.name }}
</p>
<p v-if="address.country"
class="country">
{{ address.country.name.fr }}
</p>
</div>
</component> </component>
<div v-if="isMultiline === true" class="address-more"> <!-- <div v-if="isMultiline === true" class="address-more">
<div v-if="address.floor"> <div v-if="address.floor">
<span class="floor"> <span class="floor">
<b>{{ $t('floor') }}</b>: {{ address.floor }} <b>{{ $t('floor') }}</b>: {{ address.floor }}
@ -52,7 +59,7 @@
<b>{{ $t('distribution') }}</b>: {{ address.distribution }} <b>{{ $t('distribution') }}</b>: {{ address.distribution }}
</span> </span>
</div> </div>
</div> </div> -->
<div v-if="useDatePane === true" class="address-more"> <div v-if="useDatePane === true" class="address-more">
<div v-if="address.validFrom"> <div v-if="address.validFrom">

View File

@ -9,57 +9,23 @@
* with_delimiter bool add a delimiter between fragments * with_delimiter bool add a delimiter between fragments
* has_no_address bool * has_no_address bool
* multiline bool multiline display * multiline bool multiline display
* extended_infos bool add extra informations (step, floor, etc.) * extended_infos bool add extra informations (step, floor, etc.) DEPRECATED
#} #}
{% macro raw(address, options, streetLine) %} {% macro raw(lines) %}
{% for l in lines %}
{% if address.street is not empty %} <p>{{ l }}</p>
<p>{{ streetLine }}</p> {% endfor %}
{% endif %}
{% if options['extended_infos'] %}
{{ _self.extended(address, options) }}
{% endif %}
{% if address.postCode is not empty %}
<p class="postcode">
<span class="code">{{ address.postCode.code }}</span>
<span class="name">{{ address.postCode.name }}</span>
</p>
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
{% endif %}
{% endmacro %} {% endmacro %}
{% macro extended(address, options) %} {% macro inline(address, options, streetLine, lines) %}
{% if address.floor is not empty %}
<span class="floor">{{ 'address more.floor'|trans }} {{ address.floor }}</span>
{% endif %}
{% if address.corridor is not empty %}
<span class="corridor">{{ 'address more.corridor'|trans }} {{ address.corridor }}</span>
{% endif %}
{% if address.steps is not empty %}
<span class="steps">{{ 'address more.steps'|trans }} {{ address.steps }}</span>
{% endif %}
{% if address.buildingName is not empty %}
<span class="buildingName">{{ 'address more.buildingName'|trans }} {{ address.buildingName }}</span>
{% endif %}
{% if address.flat is not empty %}
<span class="flat">{{ 'address more.flat'|trans }} {{ address.flat }}</span>
{% endif %}
{% if address.extra is not empty %}
<span class="extra">{{ 'address more.extra'|trans }} {{ address.extra }}</span>
{% endif %}
{% if address.distribution is not empty %}
<span class="distribution">{{ 'address more.distribution'|trans }} {{ address.distribution }}</span>
{% endif %}
{% endmacro %}
{% macro inline(address, options, streetLine) %}
{% if options['has_no_address'] == true and address.isNoAddress == true %} {% if options['has_no_address'] == true and address.isNoAddress == true %}
{% if address.postCode is not empty %} {% if address.postCode is not empty %}
<p class="postcode"> <p class="postcode">
<span class="code">{{ address.postCode.code }}</span> <span class="code">{{ address.postCode.code }}</span>
<span class="name">{{ address.postCode.name }}</span> <span class="name">{{ address.postCode.name }}</span>
<span class="name">{{ address.distribution }}</span>
</p> </p>
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p> <p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
{% endif %} {% endif %}
@ -68,7 +34,7 @@
</span> </span>
{% else %} {% else %}
<span class="address{% if options['multiline'] %} multiline{% endif %}{% if options['with_delimiter'] %} delimiter{% endif %}"> <span class="address{% if options['multiline'] %} multiline{% endif %}{% if options['with_delimiter'] %} delimiter{% endif %}">
{{ _self.raw(address, options, streetLine) }} {{ _self.raw(lines) }}
</span> </span>
{% endif %} {% endif %}
{{ _self.validity(address, options) }} {{ _self.validity(address, options) }}
@ -97,7 +63,7 @@
{% if options['with_picto'] %} {% if options['with_picto'] %}
<i class="fa fa-li fa-map-marker"></i> <i class="fa fa-li fa-map-marker"></i>
{% endif %} {% endif %}
{{ _self.inline(address, options, streetLine) }} {{ _self.inline(address, options, streetLine, lines) }}
</li> </li>
{%- endif -%} {%- endif -%}
@ -106,7 +72,7 @@
{% if options['with_picto'] %} {% if options['with_picto'] %}
<i class="fa fa-fw fa-map-marker"></i> <i class="fa fa-fw fa-map-marker"></i>
{% endif %} {% endif %}
{{ _self.inline(address, options, streetLine) }} {{ _self.inline(address, options, streetLine, lines) }}
</span> </span>
{%- endif -%} {%- endif -%}
@ -118,20 +84,21 @@
<p class="postcode"> <p class="postcode">
<span class="code">{{ address.postCode.code }}</span> <span class="code">{{ address.postCode.code }}</span>
<span class="name">{{ address.postCode.name }}</span> <span class="name">{{ address.postCode.name }}</span>
<span class="name">{{ address.distribution }}</span>
</p> </p>
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p> <p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
</div> </div>
{% endif %} {% endif %}
<div class="noaddress"> <div class="noaddress">
{{ 'address.consider homeless'|trans }} {{ 'address.consider homeless'|trans }}
</div> </div>
{% else %} {% else %}
<div class="address{% if options['multiline'] %} multiline{% endif %}{% if options['with_delimiter'] %} delimiter{% endif %}"> <div class="address{% if options['multiline'] %} multiline{% endif %}{% if options['with_delimiter'] %} delimiter{% endif %}">
{% if options['with_picto'] %} {% if options['with_picto'] %}
<i class="fa fa-fw fa-map-marker"></i> <i class="fa fa-fw fa-map-marker"></i>
{% endif %} {% endif %}
{{ _self.raw(address, options, streetLine) }} {{ _self.raw(lines) }}
</div> </div>
{% endif %} {% endif %}
{{ _self.validity(address, options) }} {{ _self.validity(address, options) }}

View File

@ -13,6 +13,7 @@ namespace Chill\MainBundle\Serializer\Normalizer;
use Chill\DocGeneratorBundle\Serializer\Helper\NormalizeNullValueHelper; use Chill\DocGeneratorBundle\Serializer\Helper\NormalizeNullValueHelper;
use Chill\MainBundle\Entity\Address; use Chill\MainBundle\Entity\Address;
use Chill\MainBundle\Templating\Entity\AddressRender;
use DateTimeInterface; use DateTimeInterface;
use Symfony\Component\Serializer\Exception\UnexpectedValueException; use Symfony\Component\Serializer\Exception\UnexpectedValueException;
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
@ -46,6 +47,13 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
'validTo' => DateTimeInterface::class, 'validTo' => DateTimeInterface::class,
]; ];
private AddressRender $addressRender;
public function __construct(AddressRender $addressRender)
{
$this->addressRender = $addressRender;
}
/** /**
* @param Address $address * @param Address $address
* @param null|string $format * @param null|string $format
@ -53,19 +61,9 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
public function normalize($address, $format = null, array $context = []) public function normalize($address, $format = null, array $context = [])
{ {
if ($address instanceof Address) { if ($address instanceof Address) {
$text = $address->isNoAddress() ? '' : $address->getStreet() . ', ' . $address->getStreetNumber();
if (null !== $address->getPostCode()->getCountry()->getCountryCode()) {
if ($address->getPostCode()->getCountry()->getCountryCode() === 'FR') {
$text = $address->isNoAddress() ? '' : $address->getStreetNumber() . ', ' . $address->getStreet();
} else {
$text = $address->isNoAddress() ? '' : $address->getStreetNumber() . ', ' . $address->getStreet();
}
}
$data = [ $data = [
'address_id' => $address->getId(), 'address_id' => $address->getId(),
'text' => $text, 'text' => $address->isNoAddress() ? null : $this->addressRender->renderStreetLine($address, []),
'street' => $address->getStreet(), 'street' => $address->getStreet(),
'streetNumber' => $address->getStreetNumber(), 'streetNumber' => $address->getStreetNumber(),
'postcode' => [ 'postcode' => [
@ -85,6 +83,7 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
'buildingName' => $address->getBuildingName(), 'buildingName' => $address->getBuildingName(),
'distribution' => $address->getDistribution(), 'distribution' => $address->getDistribution(),
'extra' => $address->getExtra(), 'extra' => $address->getExtra(),
'lines' => $this->addressRender->renderLines($address),
]; ];
if ('json' === $format) { if ('json' === $format) {

View File

@ -12,6 +12,7 @@ declare(strict_types=1);
namespace Chill\MainBundle\Templating\Entity; namespace Chill\MainBundle\Templating\Entity;
use Chill\MainBundle\Entity\Address; use Chill\MainBundle\Entity\Address;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Symfony\Component\Templating\EngineInterface; use Symfony\Component\Templating\EngineInterface;
use function array_merge; use function array_merge;
@ -26,14 +27,18 @@ class AddressRender implements ChillEntityRenderInterface
'with_delimiter' => false, 'with_delimiter' => false,
'has_no_address' => false, 'has_no_address' => false,
'multiline' => true, 'multiline' => true,
/* deprecated */
'extended_infos' => false, 'extended_infos' => false,
]; ];
private EngineInterface $templating; private EngineInterface $templating;
public function __construct(EngineInterface $templating) private TranslatableStringHelper $translatableStringHelper;
public function __construct(EngineInterface $templating, TranslatableStringHelper $translatableStringHelper)
{ {
$this->templating = $templating; $this->templating = $templating;
$this->translatableStringHelper = $translatableStringHelper;
} }
/** /**
@ -50,43 +55,49 @@ class AddressRender implements ChillEntityRenderInterface
'streetLine' => $this->renderStreetLine($addr), 'streetLine' => $this->renderStreetLine($addr),
'render' => $options['render'] ?? 'bloc', 'render' => $options['render'] ?? 'bloc',
'options' => $options, 'options' => $options,
'lines' => $this->renderLines($addr),
]); ]);
} }
/** /**
* @param Address addr * @param Address addr
* @param mixed $addr * @param mixed $addr
*
* @return string[]
*/ */
public function renderString($addr, array $options): string public function renderLines($addr): array
{ {
$lines = []; $lines = [];
$lines[0] = $this->renderStreetLine($addr); if (null !== $addr->getPostCode()) {
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
if (!empty($addr->getPostcode())) { $lines[] = $this->renderIntraBuildingLine($addr);
$lines[1] = strtr('{postcode} {label}', [ $lines[] = $this->renderBuildingLine($addr);
'{postcode}' => $addr->getPostcode()->getCode(), $lines[] = $this->renderStreetLine($addr);
'{label}' => $addr->getPostcode()->getName(), $lines[] = $this->renderDeliveryLine($addr);
]); $lines[] = $this->renderCityLine($addr);
$lines[] = $this->renderCountryLine($addr);
} else {
$lines[] = $this->renderBuildingLine($addr);
$lines[] = $this->renderDeliveryLine($addr);
$lines[] = $this->renderStreetLine($addr);
$lines[] = $this->renderCityLine($addr);
$lines[] = $this->renderCountryLine($addr);
}
} }
return implode(' - ', $lines); return array_values(array_filter($lines, static fn ($l) => null !== $l));
} }
public function supports($entity, array $options): bool public function renderStreetLine(Address $addr): ?string
{ {
return $entity instanceof Address; if (null !== $addr->getStreet() && $addr->getStreet() !== '') {
}
private function renderStreetLine($addr): string
{
if (!empty($addr->getStreet())) {
$street = $addr->getStreet(); $street = $addr->getStreet();
} else { } else {
$street = ''; $street = '';
} }
if (!empty($addr->getStreetNumber())) { if (null !== $addr->getStreetNumber() && $addr->getStreetNumber() !== '') {
$streetNumber = $addr->getStreetNumber(); $streetNumber = $addr->getStreetNumber();
} else { } else {
$streetNumber = ''; $streetNumber = '';
@ -100,8 +111,111 @@ class AddressRender implements ChillEntityRenderInterface
} }
} }
if (',' === $res) { if ((',' === $res) || ('' === $res)) {
$res = ''; $res = null;
}
return $res;
}
/**
* @param Address addr
* @param mixed $addr
*/
public function renderString($addr, array $options): string
{
return implode(' - ', $this->renderLines($addr));
}
public function supports($entity, array $options): bool
{
return $entity instanceof Address;
}
private function renderBuildingLine(Address $addr): ?string
{
if (null !== $addr->getBuildingName() && $addr->getBuildingName() !== '') {
$building = $addr->getBuildingName();
} else {
$building = '';
}
$intraBuilding = $this->renderIntraBuildingLine($addr);
if (null === $intraBuilding) {
$intraBuilding = '';
}
$res = trim($building . ' - ' . $intraBuilding, ' - ');
if ('' === $res) {
$res = null;
}
if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) {
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
$res = $addr->getBuildingName();
}
}
return $res;
}
private function renderCityLine($addr): string
{
if (null !== $addr->getPostcode()) {
$res = strtr('{postcode} {label}', [
'{postcode}' => $addr->getPostcode()->getCode(),
'{label}' => $addr->getPostcode()->getName(),
]);
if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) {
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
if ($addr->getDistribution()) {
$res = $res . ' ' . $addr->getDistribution();
}
}
}
}
return $res ?? '';
}
private function renderCountryLine($addr): ?string
{
return $this->translatableStringHelper->localize(
$addr->getPostCode()->getCountry()->getName()
);
}
private function renderDeliveryLine($addr): ?string
{
return $addr->getExtra();
}
private function renderIntraBuildingLine($addr): ?string
{
$arr = [];
if ($addr->getFlat()) {
$arr[] = 'appart ' . $addr->getFlat();
}
if ($addr->getFloor()) {
$arr[] = 'ét ' . $addr->getFloor();
}
if ($addr->getCorridor()) {
$arr[] = 'coul ' . $addr->getCorridor();
}
if ($addr->getSteps()) {
$arr[] = 'esc ' . $addr->getSteps();
}
$res = implode(' - ', $arr);
if ('' === $res) {
$res = null;
} }
return $res; return $res;

View File

@ -15,6 +15,7 @@ use Chill\MainBundle\Entity\Address;
use Chill\MainBundle\Entity\Country; use Chill\MainBundle\Entity\Country;
use Chill\MainBundle\Entity\PostalCode; use Chill\MainBundle\Entity\PostalCode;
use Chill\MainBundle\Templating\Entity\AddressRender; use Chill\MainBundle\Templating\Entity\AddressRender;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Iterator; use Iterator;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\Templating\EngineInterface; use Symfony\Component\Templating\EngineInterface;
@ -30,11 +31,11 @@ final class AddressRenderTest extends KernelTestCase
self::bootKernel(); self::bootKernel();
} }
public function addressDataProvider(): Iterator public function addressDataProviderBEWithBuilding(): Iterator
{ {
$addr = new Address(); $addr = new Address();
$country = (new Country()) $country = (new Country())
->setName(['fr' => 'Pays']) ->setName(['fr' => 'Belgium'])
->setCountryCode('BE'); ->setCountryCode('BE');
$postCode = new PostalCode(); $postCode = new PostalCode();
$postCode->setName('Locality') $postCode->setName('Locality')
@ -45,20 +46,279 @@ final class AddressRenderTest extends KernelTestCase
->setStreetNumber('5') ->setStreetNumber('5')
->setPostcode($postCode); ->setPostcode($postCode);
yield [$addr, 'Rue ABC, 5 - 012345 Locality']; $addr->setBuildingName('Résidence "Les Bleuets"');
yield [$addr, 'Résidence "Les Bleuets" - Rue ABC, 5 - 012345 Locality - Belgium'];
}
public function addressDataProviderBEWithSteps(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'Belgium'])
->setCountryCode('BE');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setStreet('Rue ABC')
->setStreetNumber('5')
->setPostcode($postCode);
$addr->setSteps('4');
yield [$addr, 'esc 4 - Rue ABC, 5 - 012345 Locality - Belgium'];
}
public function addressDataProviderFRWithBuilding(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'France'])
->setCountryCode('FR');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setStreet('Rue ABC')
->setStreetNumber('5')
->setPostcode($postCode);
$addr->setBuildingName('Résidence "Les Bleuets"');
yield [$addr, 'Résidence "Les Bleuets" - 5, Rue ABC - 012345 Locality - France'];
}
public function addressDataProviderFRWithSteps(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'France'])
->setCountryCode('FR');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setStreet('Rue ABC')
->setStreetNumber('5')
->setPostcode($postCode);
$addr->setSteps('4');
yield [$addr, 'esc 4 - 5, Rue ABC - 012345 Locality - France'];
}
public function complexAddressDataProviderBE(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'Belgium'])
->setCountryCode('BE');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setStreet('Rue ABC')
->setStreetNumber('5')
->setPostcode($postCode);
$addr->setBuildingName('Résidence "Les Bleuets"');
$addr->setFlat('1');
$addr->setFloor('2');
$addr->setCorridor('3');
$addr->setSteps('4');
yield [$addr, 'Résidence "Les Bleuets" - appart 1 - ét 2 - coul 3 - esc 4 - Rue ABC, 5 - 012345 Locality - Belgium'];
}
public function complexAddressDataProviderFR(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'France'])
->setCountryCode('FR');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setStreet('Rue ABC')
->setStreetNumber('5')
->setPostcode($postCode);
$addr->setBuildingName('Résidence "Les Bleuets"');
$addr->setFlat('1');
$addr->setFloor('2');
$addr->setCorridor('3');
$addr->setSteps('4');
$addr->setExtra('A droite de la porte');
$addr->setDistribution('CEDEX');
yield [$addr, 'appart 1 - ét 2 - coul 3 - esc 4 - Résidence "Les Bleuets" - 5, Rue ABC - A droite de la porte - 012345 Locality CEDEX - France'];
}
public function noFullAddressDataProviderBE(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'Belgium'])
->setCountryCode('BE');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setPostcode($postCode)
->setIsNoAddress(true);
yield [$addr, '012345 Locality - Belgium'];
}
public function simpleAddressDataProviderBE(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'Belgium'])
->setCountryCode('BE');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setStreet('Rue ABC')
->setStreetNumber('5')
->setPostcode($postCode);
yield [$addr, 'Rue ABC, 5 - 012345 Locality - Belgium'];
}
public function simpleAddressDataProviderFR(): Iterator
{
$addr = new Address();
$country = (new Country())
->setName(['fr' => 'France'])
->setCountryCode('FR');
$postCode = new PostalCode();
$postCode->setName('Locality')
->setCode('012345')
->setCountry($country);
$addr->setStreet('Rue ABC')
->setStreetNumber('5')
->setPostcode($postCode);
yield [$addr, '5, Rue ABC - 012345 Locality - France'];
} }
/** /**
* @dataProvider addressDataProvider * @dataProvider complexAddressDataProviderBE
*/ */
public function testRenderString(Address $addr, string $expectedString): void public function testRenderComplexAddressBE(Address $addr, string $expectedString): void
{ {
$engine = self::$container->get(EngineInterface::class); $engine = self::$container->get(EngineInterface::class);
$renderer = new AddressRender($engine); $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, [])); $this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
return; /**
$this->assertIsString($renderer->renderBox($addr, [])); * @dataProvider complexAddressDataProviderFR
*/
public function testRenderComplexAddressFR(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
/**
* @dataProvider noFullAddressDataProviderBE
*/
public function testRenderNoFullAddressBE(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
/**
* @dataProvider simpleAddressDataProviderBE
*/
public function testRenderStringSimpleAddressBE(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
/**
* @dataProvider simpleAddressDataProviderFR
*/
public function testRenderStringSimpleAddressFR(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
/**
* @dataProvider addressDataProviderBEWithBuilding
*/
public function testRenderWithBuildingAddressBE(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
/**
* @dataProvider addressDataProviderFRWithBuilding
*/
public function testRenderWithBuildingAddressFR(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
/**
* @dataProvider addressDataProviderBEWithSteps
*/
public function testRenderWithStepsAddressBE(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
}
/**
* @dataProvider addressDataProviderFRWithSteps
*/
public function testRenderWithStepsAddressFR(Address $addr, string $expectedString): void
{
$engine = self::$container->get(EngineInterface::class);
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
$renderer = new AddressRender($engine, $translatableStringHelper);
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
} }
} }