/ tests / Services / AutoRequirementServiceTest.php
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  }