From 6e729347f2915ba6b2ac0ef5afc4ef2eaf3b6578 Mon Sep 17 00:00:00 2001 From: Buster Neece Date: Wed, 26 Feb 2025 12:33:17 -0600 Subject: [PATCH 1/2] Update ExpandEnums.php --- src/Processors/ExpandEnums.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Processors/ExpandEnums.php b/src/Processors/ExpandEnums.php index 8e712bc5..3169d030 100644 --- a/src/Processors/ExpandEnums.php +++ b/src/Processors/ExpandEnums.php @@ -56,6 +56,15 @@ protected function expandContextEnum(Analysis $analysis): void return ($useName || !($case instanceof \ReflectionEnumBackedCase)) ? $case->name : $case->getBackingValue(); }, $re->getCases()); + if (!$useName) { + $schemaX = Generator::isDefault($schema->x) ? [] : $schema->x; + $schemaX['enumNames'] = array_map(function ($case) { + return $case->name; + }, $re->getCases()); + + $schema->x = $schemaX; + } + $schema->type = $useName ? 'string' : $enumType; $this->mapNativeType($schema, $schemaType); From 45d0a5e512e6540d54cdceb3aa4534d854b60652 Mon Sep 17 00:00:00 2001 From: Buster Neece Date: Wed, 26 Feb 2025 12:36:25 -0600 Subject: [PATCH 2/2] Update ExpandEnumsTest.php --- tests/Processors/ExpandEnumsTest.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/Processors/ExpandEnumsTest.php b/tests/Processors/ExpandEnumsTest.php index 0af7ccae..49da685c 100644 --- a/tests/Processors/ExpandEnumsTest.php +++ b/tests/Processors/ExpandEnumsTest.php @@ -61,6 +61,15 @@ public function testExpandBackedStringEnum(): void $this->assertEquals('string', $schema->type); } + public function testEnumNamesInBackedStringEnum(): void + { + $analysis = $this->analysisFromFixtures(['PHP/Enums/StatusEnumStringBacked.php']); + $analysis->process([new ExpandEnums()]); + $schema = $analysis->getSchemaForSource(StatusEnumStringBacked::class); + + $this->assertEquals(['DRAFT', 'PUBLISHED', 'ARCHIVED'], $schema->x['enumNames']); + } + public static function expandEnumClassStringFixtures(): iterable { if (!class_exists('\\ReflectionEnum')) {