diff --git a/tests/Doctrine/Tests/Models/Enums/TypedCard.php b/tests/Doctrine/Tests/Models/Enums/TypedCard.php new file mode 100644 index 00000000000..c80a8b6ed6f --- /dev/null +++ b/tests/Doctrine/Tests/Models/Enums/TypedCard.php @@ -0,0 +1,20 @@ +_em = $this->getEntityManager(null, new AttributeDriver([dirname(__DIR__, 2) . '/Models/Enums'])); + $this->_schemaTool = new SchemaTool($this->_em); + parent::setUp(); if ($this->isSecondLevelCacheEnabled) { $this->markTestSkipped(); } - - $this->setUpEntitySchema([ - Card::class, - ]); } - public function testEnumMapping(): void + /** + * @param class-string $cardClass + * + * @dataProvider provideCardClasses + */ + public function testEnumMapping(string $cardClass): void { - $card = new Card(); + $this->setUpEntitySchema([$cardClass]); + + $card = new $cardClass(); $card->suit = Suit::Clubs; $this->_em->persist($card); @@ -42,9 +53,16 @@ public function testEnumMapping(): void $this->assertEquals(Suit::Clubs, $fetchedCard->suit); } - public function testEnumWithNonMatchingDatabaseValueThrowsException(): void + /** + * @param class-string $cardClass + * + * @dataProvider provideCardClasses + */ + public function testEnumWithNonMatchingDatabaseValueThrowsException(string $cardClass): void { - $card = new Card(); + $this->setUpEntitySchema([$cardClass]); + + $card = new $cardClass(); $card->suit = Suit::Clubs; $this->_em->persist($card); @@ -63,4 +81,15 @@ public function testEnumWithNonMatchingDatabaseValueThrowsException(): void $this->_em->find(Card::class, $card->id); } + + /** + * @return array + */ + public function provideCardClasses(): array + { + return [ + Card::class => [Card::class], + TypedCard::class => [TypedCard::class], + ]; + } }