From b38fdeb643006d022e7db0826b745c8b823a7055 Mon Sep 17 00:00:00 2001 From: Florian Guimier Date: Mon, 23 Feb 2026 18:05:52 +0100 Subject: [PATCH 1/2] IT9PE1-26509: add BelgianEnterpriseNumber validator --- .../Constraints/BelgianEnterpriseNumber.php | 14 +++++ .../BelgianEnterpriseNumberValidator.php | 35 +++++++++++++ .../BelgianEnterpriseNumberValidatorTest.php | 52 +++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 src/Validator/Constraints/BelgianEnterpriseNumber.php create mode 100644 src/Validator/Constraints/BelgianEnterpriseNumberValidator.php create mode 100644 tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php diff --git a/src/Validator/Constraints/BelgianEnterpriseNumber.php b/src/Validator/Constraints/BelgianEnterpriseNumber.php new file mode 100644 index 0000000..3902969 --- /dev/null +++ b/src/Validator/Constraints/BelgianEnterpriseNumber.php @@ -0,0 +1,14 @@ +context->buildViolation($constraint::MESSAGE) + ->setParameter('{{ value }}', $this->formatValue($value)) + ->setCode($constraint::WRONG_FORMAT_ERROR) + ->addViolation(); + } + } +} diff --git a/tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php b/tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php new file mode 100644 index 0000000..233185d --- /dev/null +++ b/tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php @@ -0,0 +1,52 @@ + + */ +class BelgianEnterpriseNumberValidatorTest extends ConstraintValidatorTestCase +{ + protected function getConstraint(): Constraint + { + return new BelgianEnterpriseNumber(); + } + + public function createValidator(): ConstraintValidator + { + return new BelgianEnterpriseNumberValidator(); + } + + public static function providerValidValues(): iterable + { + yield 'null value' => [null]; + yield 'empty string' => ['']; + yield 'valid number starting with 0' => ['0123456789']; + yield 'valid number starting with 1' => ['1234567890']; + yield 'valid number starting with 0 all zeros' => ['0000000000']; + yield 'valid number starting with 1 all digits' => ['1999999999']; + } + + public static function providerInvalidValues(): iterable + { + $expectedMessage = 'The Belgian Enterprise Number {{ value }} is not valid.'; + $code = BelgianEnterpriseNumber::WRONG_FORMAT_ERROR; + + yield 'too short' => ['012345678', $code, $expectedMessage]; + yield 'too long' => ['01234567890', $code, $expectedMessage]; + yield 'starts with 2' => ['2123456789', $code, $expectedMessage]; + yield 'starts with 9' => ['9123456789', $code, $expectedMessage]; + yield 'contains letters' => ['012345678A', $code, $expectedMessage]; + yield 'contains special characters' => ['01234-6789', $code, $expectedMessage]; + yield 'contains spaces' => ['0123 56789', $code, $expectedMessage]; + yield 'single digit' => ['0', $code, $expectedMessage]; + } +} From 4f1b27f75845b13f6c6f869360807572404b3a8d Mon Sep 17 00:00:00 2001 From: Florian Guimier Date: Tue, 24 Feb 2026 18:08:50 +0100 Subject: [PATCH 2/2] Fix --- .../Constraints/BelgianEnterpriseNumberValidatorTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php b/tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php index 233185d..6192587 100644 --- a/tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php +++ b/tests/Validator/Constraints/BelgianEnterpriseNumberValidatorTest.php @@ -37,7 +37,7 @@ public static function providerValidValues(): iterable public static function providerInvalidValues(): iterable { - $expectedMessage = 'The Belgian Enterprise Number {{ value }} is not valid.'; + $expectedMessage = BelgianEnterpriseNumber::MESSAGE; $code = BelgianEnterpriseNumber::WRONG_FORMAT_ERROR; yield 'too short' => ['012345678', $code, $expectedMessage];