. */ namespace App\Tests\Validator\Constraints; use App\Validator\Constraints\UrlOrBuiltin; use App\Validator\Constraints\UrlOrBuiltinValidator; use PHPUnit\Framework\TestCase; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; class UrlOrBuiltinValidatorTest extends ConstraintValidatorTestCase { protected function createValidator(): UrlOrBuiltinValidator { return new UrlOrBuiltinValidator(); } public function testNullIsValid(): void { $this->validator->validate(null, new UrlOrBuiltin()); $this->assertNoViolation(); } public function testEmptyStringIsValid(): void { $this->validator->validate('', new UrlOrBuiltin()); $this->assertNoViolation(); } public function testValidUrlIsValid(): void { $this->validator->validate('https://example.com', new UrlOrBuiltin()); $this->assertNoViolation(); } public function testValidBuiltinIsValid(): void { $this->validator->validate('%FOOTPRINTS%/test/footprint.png', new UrlOrBuiltin()); $this->assertNoViolation(); } public function testInvalidUrlIsInvalid(): void { $constraint = new UrlOrBuiltin([ 'message' => 'myMessage', ]); $this->validator->validate('invalid-url', $constraint); $this->buildViolation('myMessage') ->setParameter('{{ value }}', '"invalid-url"') ->setCode(UrlOrBuiltin::INVALID_URL_ERROR) ->assertRaised(); } }