. */ namespace App\Tests\Validator\Constraints; use App\Validator\Constraints\ValidGTINValidator; use PHPUnit\Framework\TestCase; use Symfony\Component\Validator\ConstraintValidatorInterface; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; class ValidGTINValidatorTest extends ConstraintValidatorTestCase { public function testAllowNull(): void { $this->validator->validate(null, new \App\Validator\Constraints\ValidGTIN()); $this->assertNoViolation(); } public function testValidGTIN8(): void { $this->validator->validate('12345670', new \App\Validator\Constraints\ValidGTIN()); $this->assertNoViolation(); } public function testValidGTIN12(): void { $this->validator->validate('123456789012', new \App\Validator\Constraints\ValidGTIN()); $this->assertNoViolation(); } public function testValidGTIN13(): void { $this->validator->validate('1234567890128', new \App\Validator\Constraints\ValidGTIN()); $this->assertNoViolation(); } public function testValidGTIN14(): void { $this->validator->validate('12345678901231', new \App\Validator\Constraints\ValidGTIN()); $this->assertNoViolation(); } public function testInvalidGTIN(): void { $this->validator->validate('1234567890123', new \App\Validator\Constraints\ValidGTIN()); $this->buildViolation('validator.invalid_gtin') ->assertRaised(); } protected function createValidator(): ConstraintValidatorInterface { return new ValidGTINValidator(); } }