From 13e4175fe1e75a5f17eed49c78ecbc9beecf87da Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Thu, 17 Jul 2025 18:23:33 +0200 Subject: [PATCH] Try --- .../Doctrine/ORM/EntityColumnRuleTest.php | 17 +++++++++++++++ .../ORM/data-attributes/enum-values.php | 21 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 tests/Rules/Doctrine/ORM/data-attributes/enum-values.php diff --git a/tests/Rules/Doctrine/ORM/EntityColumnRuleTest.php b/tests/Rules/Doctrine/ORM/EntityColumnRuleTest.php index f0a799e6..c4cd0af7 100644 --- a/tests/Rules/Doctrine/ORM/EntityColumnRuleTest.php +++ b/tests/Rules/Doctrine/ORM/EntityColumnRuleTest.php @@ -18,6 +18,7 @@ use PHPStan\Type\Doctrine\Descriptors\DateTimeType; use PHPStan\Type\Doctrine\Descriptors\DateType; use PHPStan\Type\Doctrine\Descriptors\DecimalType; +use PHPStan\Type\Doctrine\Descriptors\EnumType; use PHPStan\Type\Doctrine\Descriptors\IntegerType; use PHPStan\Type\Doctrine\Descriptors\JsonType; use PHPStan\Type\Doctrine\Descriptors\Ramsey\UuidTypeDescriptor; @@ -26,6 +27,7 @@ use PHPStan\Type\Doctrine\Descriptors\StringType; use PHPStan\Type\Doctrine\ObjectMetadataResolver; use function array_unshift; +use function defined; use function strpos; use const PHP_VERSION_ID; @@ -74,6 +76,7 @@ protected function getRule(): Rule new IntegerType(), new StringType(), new SimpleArrayType(), + new EnumType(), new UuidTypeDescriptor(FakeTestingUuidType::class), new ReflectionDescriptor(CarbonImmutableType::class, $this->createReflectionProvider(), self::getContainer()), new ReflectionDescriptor(CarbonType::class, $this->createReflectionProvider(), self::getContainer()), @@ -413,6 +416,20 @@ public function testEnumType(?string $objectManagerLoader): void ]); } + /** + * @dataProvider dataObjectManagerLoader + */ + public function testEnumValues(?string $objectManagerLoader): void + { + if (!defined('\Doctrine\DBAL\Types\Types::ENUM')) { + self::markTestSkipped('Test requires ENUM type.'); + } + + $this->allowNullablePropertyForRequiredField = false; + $this->objectManagerLoader = $objectManagerLoader; + $this->analyse([__DIR__ . '/data-attributes/enum-values.php'], []); + } + /** * @dataProvider dataObjectManagerLoader */ diff --git a/tests/Rules/Doctrine/ORM/data-attributes/enum-values.php b/tests/Rules/Doctrine/ORM/data-attributes/enum-values.php new file mode 100644 index 00000000..34d66f52 --- /dev/null +++ b/tests/Rules/Doctrine/ORM/data-attributes/enum-values.php @@ -0,0 +1,21 @@ + ['a', 'b', 'c']])] + public $type1; + + /** @var 'a'|'b'|'c' */ + #[ORM\Column(type: "string", options: ['values' => ['a', 'b', 'c']])] + public $type2; + + /** @var 'a'|'b' */ + #[ORM\Column(type: "string", options: ['values' => ['a', 'b', 'c']])] + public $type3; +}