mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 09:02:12 +00:00
[Addressing] Fix UTF-8 case-insensitive address comparison (#19085)
| Q | A |-----------------|----- | Branch? | 2.2 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Related tickets | fixes issue #19078 | License | MIT
This commit is contained in:
commit
6844018a46
2 changed files with 30 additions and 1 deletions
|
|
@ -26,7 +26,7 @@ final class AddressComparator implements AddressComparatorInterface
|
||||||
private function normalizeAddress(AddressInterface $address): array
|
private function normalizeAddress(AddressInterface $address): array
|
||||||
{
|
{
|
||||||
return array_map(function ($value) {
|
return array_map(function ($value) {
|
||||||
return strtolower(trim((string) $value));
|
return mb_strtolower(trim((string) $value));
|
||||||
}, [
|
}, [
|
||||||
$address->getCity(),
|
$address->getCity(),
|
||||||
$address->getCompany(),
|
$address->getCompany(),
|
||||||
|
|
|
||||||
|
|
@ -107,4 +107,33 @@ final class AddressComparatorTest extends TestCase
|
||||||
$secondAddressMock->expects(self::once())->method('getProvinceName')->willReturn('Queensland');
|
$secondAddressMock->expects(self::once())->method('getProvinceName')->willReturn('Queensland');
|
||||||
self::assertTrue($this->addressComparator->equal($firstAddressMock, $secondAddressMock));
|
self::assertTrue($this->addressComparator->equal($firstAddressMock, $secondAddressMock));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testIgnoresUnicodeCharacterCase(): void
|
||||||
|
{
|
||||||
|
/** @var AddressInterface&MockObject $firstAddressMock */
|
||||||
|
$firstAddressMock = $this->createMock(AddressInterface::class);
|
||||||
|
/** @var AddressInterface&MockObject $secondAddressMock */
|
||||||
|
$secondAddressMock = $this->createMock(AddressInterface::class);
|
||||||
|
$firstAddressMock->expects(self::once())->method('getCity')->willReturn('ŁÓDŹ');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getStreet')->willReturn('Ryans Dr');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getCompany')->willReturn('Burger');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getPostcode')->willReturn('4350');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getLastName')->willReturn('Jones');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getFirstName')->willReturn('Mia');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getPhoneNumber')->willReturn('999');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getCountryCode')->willReturn('PL');
|
||||||
|
$firstAddressMock->expects(self::once())->method('getProvinceCode')->willReturn(null);
|
||||||
|
$firstAddressMock->expects(self::once())->method('getProvinceName')->willReturn('Łódzkie');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getCity')->willReturn('łódź');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getStreet')->willReturn('Ryans Dr');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getCompany')->willReturn('Burger');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getPostcode')->willReturn('4350');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getLastName')->willReturn('Jones');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getFirstName')->willReturn('Mia');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getPhoneNumber')->willReturn('999');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getCountryCode')->willReturn('PL');
|
||||||
|
$secondAddressMock->expects(self::once())->method('getProvinceCode')->willReturn(null);
|
||||||
|
$secondAddressMock->expects(self::once())->method('getProvinceName')->willReturn('Łódzkie');
|
||||||
|
self::assertTrue($this->addressComparator->equal($firstAddressMock, $secondAddressMock));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue