|
2 | 2 |
|
3 | 3 | use DaniloPolani\JsonValidation\Contracts\HasRuleMessage; |
4 | 4 | use DaniloPolani\JsonValidation\JsonValidation; |
| 5 | +use DaniloPolani\JsonValidation\Tests\TestEnumRole; |
5 | 6 | use Illuminate\Contracts\Validation\ValidationRule; |
6 | 7 | use Illuminate\Support\Collection; |
7 | 8 | use Illuminate\Support\Facades\App; |
8 | 9 | use Illuminate\Translation\ArrayLoader; |
9 | 10 | use Illuminate\Translation\Translator; |
| 11 | +use Illuminate\Validation\Rules\Enum; |
| 12 | + |
| 13 | +$rules = require './vendor/laravel/framework/src/Illuminate/Translation/lang/en/validation.php'; |
10 | 14 |
|
11 | | -$rules = require './tests/validation.php'; |
12 | 15 | $rulesToLoad = Collection::make($rules)->mapWithKeys(fn (mixed $value, string $key) => [ |
13 | 16 | 'validation.' . $key => $value, |
14 | 17 | ])->toArray(); |
|
35 | 38 | }); |
36 | 39 |
|
37 | 40 | it('extracts the error message from a custom rule', function () { |
38 | | - $rule = new class () implements ValidationRule, HasRuleMessage { |
| 41 | + $rule = new class() implements ValidationRule, HasRuleMessage |
| 42 | + { |
39 | 43 | public function validate(string $attribute, mixed $value, \Closure $fail): void |
40 | 44 | { |
41 | 45 | return; |
@@ -244,3 +248,19 @@ public function message(): string |
244 | 248 | 'numeric', |
245 | 249 | 'string', |
246 | 250 | ]); |
| 251 | + |
| 252 | +it('handles "Enum" rule', function () use ($rules, $rulesToLoad) { |
| 253 | + $trans = new Translator(new ArrayLoader(), 'en'); |
| 254 | + $trans->addLines($rulesToLoad, 'en'); |
| 255 | + |
| 256 | + /** @var \DaniloPolani\JsonValidation\Tests\TestCase $this */ |
| 257 | + App::getFacadeApplication()->instance('translator', $trans); |
| 258 | + |
| 259 | + $expected = str_replace( |
| 260 | + ':attribute', |
| 261 | + 'role', |
| 262 | + $rules['enum'], |
| 263 | + ); |
| 264 | + |
| 265 | + expect(JsonValidation::getRuleErrorMessage('role', new Enum(TestEnumRole::class)))->toBe([$expected]); |
| 266 | +}); |
0 commit comments