AutoRequirementServiceTest.php
1 <?php 2 3 namespace Tests\Services; 4 5 use App\Http\Services\AutoRequirementService; 6 use App\Http\Services\InboxFileService; 7 use App\Http\Services\ValidationService; 8 use App\Models\Dossier; 9 use App\Models\Norm; 10 use App\Models\NormScope; 11 use App\Models\RequirementTemplate; 12 use App\Models\Validation; 13 use App\Models\ValidationRequirement; 14 use App\Models\ValidationRequirementResponse; 15 use App\Models\ValidationType; 16 use App\Utils\AutoRequirements\AutoValidators\AlwaysFail; 17 use Exception; 18 use Illuminate\Http\UploadedFile; 19 use Illuminate\Support\Facades\Storage; 20 use Tests\TestCase; 21 22 class AutoRequirementServiceTest extends TestCase 23 { 24 25 /** 26 * @throws Exception|\Throwable 27 */ 28 public function test_always_fail_auto_requirement_() 29 { 30 Storage::fake('local'); 31 32 $path = UploadedFile::fake()->create('test.pdf', 100)->store('tmp'); 33 $norm = Norm::factory()->create(); 34 $normScope = NormScope::factory()->create([ 35 'norm_id' => $norm->id, 36 ]); 37 ValidationType::factory()->create([ 38 'name' => 'InformeValidacionSolicitudCertificacion', 39 'norm_id' => $norm->id, 40 'template_id' => 5, 41 ]); 42 $dossier = Dossier::factory()->create([ 43 'norm_id' => $norm->id, 44 'norm_scope_id' => $normScope->id, 45 ]); 46 /** @var RequirementTemplate $requirementTemplate */ 47 $requirementTemplate = RequirementTemplate::factory()->create(); 48 $requirementTemplate->automagic_class = AlwaysFail::class; 49 $requirementTemplate->save(); 50 51 $requirement = new ValidationRequirement(); 52 53 54 $inboxFile = InboxFileService::create(1, $dossier->id, 1, $path); 55 56 $requirement->validation_id = $inboxFile->validation_id; 57 $requirement->requirement_template_id = $requirementTemplate->id; 58 $requirement->save(); 59 60 $inboxFile->validation->requirements()->save($requirement); 61 62 63 AutoRequirementService::run($inboxFile->validation); 64 65 $inboxFile->validation->refresh(); 66 67 $this->assertCount(3, $inboxFile->validation->requirements->first()->responses); 68 69 } 70 71 72 }