Missael H. Anda 2 年之前
父节点
当前提交
e7b56273b8

+ 10 - 0
tests/Fixtures/TestIntegerBackedEnum.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace Knuckles\Scribe\Tests\Fixtures;
+
+enum TestIntegerBackedEnum: int
+{
+    case One = 1;
+    case Two = 2;
+    case Three = 3;
+}

+ 10 - 0
tests/Fixtures/TestStringBackedEnum.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace Knuckles\Scribe\Tests\Fixtures;
+
+enum TestStringBackedEnum: string
+{
+    case Red = 'red';
+    case Green = 'green';
+    case Blue = 'blue';
+}

+ 15 - 17
tests/Unit/ValidationRuleParsingTest.php

@@ -510,8 +510,14 @@ class ValidationRuleParsingTest extends BaseLaravelTest
     /** @test */
     public function can_parse_enum_rules()
     {
+        if (phpversion() < 8.1) {
+            $this->markTestSkipped('Enums are only supported in PHP 8.1 or later');
+        }
+
         $ruleset = [
-            'enum' => ['required', new \Illuminate\Validation\Rules\Enum(Color::class)],
+            'enum' => ['required', new \Illuminate\Validation\Rules\Enum(
+                \Knuckles\Scribe\Tests\Fixtures\TestStringBackedEnum::class
+            )],
         ];
 
         $results = $this->strategy->parse($ruleset);
@@ -520,10 +526,16 @@ class ValidationRuleParsingTest extends BaseLaravelTest
             'Must be one of <code>red</code>, <code>green</code>, or <code>blue</code>.',
             $results['enum']['description']
         );
-        $this->assertTrue(in_array($results['enum']['example'], array_map(fn ($case) => $case->value, Color::cases())));
+        $this->assertTrue(in_array(
+            $results['enum']['example'],
+            array_map(fn ($case) => $case->value,
+            \Knuckles\Scribe\Tests\Fixtures\TestStringBackedEnum::cases()
+        )));
 
         $ruleset = [
-            'enum' => ['required', new \Illuminate\Validation\Rules\Enum(Type::class)],
+            'enum' => ['required', new \Illuminate\Validation\Rules\Enum(
+                \Knuckles\Scribe\Tests\Fixtures\TestIntegerBackedEnum::class
+            )],
         ];
 
         $results = $this->strategy->parse($ruleset);
@@ -531,20 +543,6 @@ class ValidationRuleParsingTest extends BaseLaravelTest
     }
 }
 
-enum Color: string
-{
-    case Red = 'red';
-    case Green = 'green';
-    case Blue = 'blue';
-}
-
-enum Type: int
-{
-    case One = 1;
-    case Two = 2;
-    case Three = 3;
-}
-
 class DummyValidationRule implements \Illuminate\Contracts\Validation\Rule
 {
     public function passes($attribute, $value)