Skip to content

Commit 7725cf1

Browse files
authored
Raise coverage to 100% (#47)
* Covers EnumTypeGuesser when no Enum constraint is on property * Fixed & covers enum service validator
1 parent b189bb3 commit 7725cf1

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

src/DependencyInjection/EnumExtension.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ public function load(array $configs, ContainerBuilder $container): void
4949
if ($requiresValidator) {
5050
$container->register('yokai_enum.validator_constraints.enum_validator', EnumValidator::class)
5151
->setArgument('$enumRegistry', $registry)
52-
->addTag('validator.constraint_validator');
52+
->addTag(
53+
'validator.constraint_validator',
54+
['alias' => 'yokai_enum.validator_constraints.enum_validator']
55+
);
5356
}
5457
if ($requiresTwig) {
5558
$container->register('yokai_enum.twig_extension.enum_extension', EnumTwigExtension::class)

src/Validator/Constraints/Enum.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ public function getDefaultOption(): string
3232
*/
3333
public function validatedBy(): string
3434
{
35-
return 'enum';
35+
return 'yokai_enum.validator_constraints.enum_validator';
3636
}
3737
}

tests/Form/Extension/EnumTypeGuesserTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Symfony\Component\Form\Guess\Guess;
1111
use Symfony\Component\Form\Guess\TypeGuess;
1212
use Symfony\Component\Form\Test\TypeTestCase;
13+
use Symfony\Component\Validator\Constraints\Choice;
1314
use Symfony\Component\Validator\Constraints\Compound;
1415
use Symfony\Component\Validator\Mapping\ClassMetadata;
1516
use Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface;
@@ -31,6 +32,7 @@ class EnumTypeGuesserTest extends TypeTestCase
3132

3233
private const TEST_PROPERTY_DIRECT = 'direct';
3334
private const TEST_PROPERTY_COMPOUND = 'compound';
35+
private const TEST_PROPERTY_NONE = 'none';
3436

3537
/**
3638
* @var EnumTypeGuesser
@@ -53,6 +55,7 @@ protected function setUp(): void
5355
$this->enumRegistry->add(new StateEnum());
5456

5557
$metadata = new ClassMetadata(self::TEST_CLASS);
58+
$metadata->addPropertyConstraint(self::TEST_PROPERTY_NONE, new Choice(['choices' => ['new', 'validated']]));
5659
$metadata->addPropertyConstraint(self::TEST_PROPERTY_DIRECT, new Enum(['enum' => StateEnum::class]));
5760
if (class_exists(Compound::class)) {
5861
$metadata->addPropertyConstraint(
@@ -106,6 +109,11 @@ public function testGuessTypeCompound(): void
106109
self::assertEquals($guess, $this->guesser->guessType(self::TEST_CLASS, self::TEST_PROPERTY_COMPOUND));
107110
}
108111

112+
public function testGuessTypeNone(): void
113+
{
114+
self::assertNull($this->guesser->guessType(self::TEST_CLASS, self::TEST_PROPERTY_NONE));
115+
}
116+
109117
public function testGuessRequired(): void
110118
{
111119
self::assertNull($this->guesser->guessRequired(self::TEST_CLASS, self::TEST_PROPERTY_DIRECT));
@@ -148,4 +156,5 @@ class EnumTypeGuesserTest_TestClass
148156
{
149157
public $direct;
150158
public $compound;
159+
public $none;
151160
}

tests/Validator/Constraints/EnumValidatorTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ protected function createValidator(): EnumValidator
2626
return new EnumValidator($registry);
2727
}
2828

29+
public function testEnumIsValidatedByService(): void
30+
{
31+
self::assertSame('yokai_enum.validator_constraints.enum_validator', (new Enum())->validatedBy());
32+
}
33+
2934
public function testAcceptOnlyEnum(): void
3035
{
3136
$this->expectException(UnexpectedTypeException::class);

0 commit comments

Comments
 (0)