| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- namespace Tests\Unit\Rules;
- use App\Http\Requests\StudentRequest;
- use App\Http\Requests\StudentResponsibleRequest;
- use App\Rules\AdultBirthDate;
- use Illuminate\Support\Facades\Validator;
- use Tests\TestCase;
- class AdultBirthDateTest extends TestCase
- {
- public function test_it_rejects_a_birth_date_from_a_minor(): void
- {
- $validator = Validator::make(
- ['birth_date' => now()->subYears(17)->toDateString()],
- ['birth_date' => ['date', new AdultBirthDate]],
- );
- $this->assertTrue($validator->fails());
- $this->assertSame(
- __('validation.responsible_must_be_adult'),
- $validator->errors()->first('birth_date'),
- );
- }
- public function test_it_accepts_a_birth_date_from_an_adult(): void
- {
- $validator = Validator::make(
- ['birth_date' => now()->subYears(18)->toDateString()],
- ['birth_date' => ['date', new AdultBirthDate]],
- );
- $this->assertFalse($validator->fails());
- }
- public function test_it_is_used_by_both_responsible_requests(): void
- {
- $studentRules = StudentRequest::create('/', 'POST')->rules();
- $responsibleRules = StudentResponsibleRequest::create('/', 'POST')->rules();
- $studentAdultRules = array_filter(
- $studentRules['responsible.birth_date'],
- fn (mixed $rule): bool => $rule instanceof AdultBirthDate,
- );
- $responsibleAdultRules = array_filter(
- $responsibleRules['birth_date'],
- fn (mixed $rule): bool => $rule instanceof AdultBirthDate,
- );
- $this->assertCount(1, $studentAdultRules);
- $this->assertCount(1, $responsibleAdultRules);
- }
- }
|