fix: enum rule no longer overrides description

This commit is contained in:
Rasmus Bertell
2023-05-12 12:46:47 +03:00
parent 632a17bda4
commit 85813bf651
2 changed files with 16 additions and 1 deletions

View File

@@ -203,7 +203,7 @@ trait ParsesValidationRules
if (enum_exists($type) && method_exists($type, 'tryFrom')) {
$cases = array_map(fn ($case) => $case->value, $type::cases());
$parameterData['type'] = gettype($cases[0]);
$parameterData['description'] = ' Must be one of ' . w::getListOfValuesAsFriendlyHtmlString($cases) . ' ';
$parameterData['description'] .= ' Must be one of ' . w::getListOfValuesAsFriendlyHtmlString($cases) . ' ';
$parameterData['setter'] = fn () => Arr::random($cases);
}

View File

@@ -554,6 +554,21 @@ class ValidationRuleParsingTest extends BaseLaravelTest
$results['enum']['example'],
array_map(fn ($case) => $case->value, Fixtures\TestIntegerBackedEnum::cases())
));
$results = $this->strategy->parse([
'enum' => ['required', Rule::enum(Fixtures\TestStringBackedEnum::class)],
], [
'enum' => ['description' => 'A description'],
]);
$this->assertEquals('string', $results['enum']['type']);
$this->assertEquals(
'A description. 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, Fixtures\TestStringBackedEnum::cases())
));
}
}