From 7e3af840bc18a31c98bec01a0acc510506048b19 Mon Sep 17 00:00:00 2001 From: damiansakwinski Date: Thu, 31 Jul 2025 13:05:22 +0200 Subject: [PATCH 1/2] Add CU support --- .../Constraints/ZipCodeValidator.php | 1 + tests/Constraints/CuZipCodeValidatorTest.php | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tests/Constraints/CuZipCodeValidatorTest.php diff --git a/src/ZipCodeValidator/Constraints/ZipCodeValidator.php b/src/ZipCodeValidator/Constraints/ZipCodeValidator.php index e4e44bf..67298e2 100644 --- a/src/ZipCodeValidator/Constraints/ZipCodeValidator.php +++ b/src/ZipCodeValidator/Constraints/ZipCodeValidator.php @@ -59,6 +59,7 @@ class ZipCodeValidator extends ConstraintValidator 'CN' => '\\d{6}', 'CO' => '\\d{6}', 'CR' => '\\d{4,5}|\\d{3}-\\d{4}', + 'CU' => '\\d{5}', 'CV' => '\\d{4}', 'CX' => '6798', 'CY' => '\\d{4}', diff --git a/tests/Constraints/CuZipCodeValidatorTest.php b/tests/Constraints/CuZipCodeValidatorTest.php new file mode 100644 index 0000000..809fdf0 --- /dev/null +++ b/tests/Constraints/CuZipCodeValidatorTest.php @@ -0,0 +1,91 @@ +validator = new ZipCodeValidator; + } + + /** + * @dataProvider chValidZipCodes + */ + public function testValidationOfCuZipCode(string $zipCode): void + { + $constraint = new ZipCode('CU'); + + /** @var ExecutionContext|MockObject $contextMock */ + $contextMock = $this->getMockBuilder(ExecutionContext::class) + ->disableOriginalConstructor() + ->getMock(); + + //be sure that buildViolation never gets called + $contextMock->expects($this->never())->method('buildViolation'); + + $contextMock->setConstraint($constraint); + $this->validator->initialize($contextMock); + + // Test some variations + $this->validator->validate($zipCode, $constraint); + } + + public static function chValidZipCodes(): array + { + return [ + ['11300'], + ['22700'], + ['33400'], + ['67600'], + ]; + } + + /** + * @dataProvider cuInvalidZipCodes + */ + public function testValidationErrorWithInvalidCuZipCode(string $zipcode): void + { + $constraint = new ZipCode('CU'); + + $violationBuilderMock = $this->getMockBuilder(ConstraintViolationBuilderInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $violationBuilderMock->expects($this->once())->method('setParameter')->willReturnSelf(); + + /** @var ExecutionContext|MockObject $contextMock */ + $contextMock = $this->getMockBuilder(ExecutionContext::class) + ->disableOriginalConstructor() + ->getMock(); + $contextMock->expects($this->once()) + ->method('buildViolation') + ->with($constraint->message) + ->willReturn($violationBuilderMock); + + $contextMock->setConstraint($constraint); + $this->validator->initialize($contextMock); + $this->validator->validate($zipcode, $constraint); + } + + public static function cuInvalidZipCodes(): array + { + return [ + ['1420'], + ['CA123'], + ['CACAC'], + ['ch1289'], + ['14-241'], + ]; + } +} From 09cde5a724dd6a6fdb5cfa4912aff44801659a35 Mon Sep 17 00:00:00 2001 From: damiansakwinski Date: Thu, 31 Jul 2025 13:12:15 +0200 Subject: [PATCH 2/2] Fix the name --- tests/Constraints/CuZipCodeValidatorTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Constraints/CuZipCodeValidatorTest.php b/tests/Constraints/CuZipCodeValidatorTest.php index 809fdf0..b48a930 100644 --- a/tests/Constraints/CuZipCodeValidatorTest.php +++ b/tests/Constraints/CuZipCodeValidatorTest.php @@ -21,7 +21,7 @@ public function setUp(): void } /** - * @dataProvider chValidZipCodes + * @dataProvider cuValidZipCodes */ public function testValidationOfCuZipCode(string $zipCode): void { @@ -42,7 +42,7 @@ public function testValidationOfCuZipCode(string $zipCode): void $this->validator->validate($zipCode, $constraint); } - public static function chValidZipCodes(): array + public static function cuValidZipCodes(): array { return [ ['11300'],