CertificationRequestServiceTest.php
1 <?php 2 3 namespace Tests\Services; 4 5 use App\Http\Services\CertificationRequestService; 6 use App\Http\Services\DossierService; 7 use App\Models\Document; 8 use App\Models\Dossier; 9 use File; 10 use Illuminate\Http\UploadedFile; 11 use Illuminate\Support\Facades\Storage; 12 use Illuminate\Support\Str; 13 use Tests\TestCase; 14 15 class CertificationRequestServiceTest extends TestCase 16 { 17 public string $path = 'test_files/certification_request.zip'; 18 public string $ccn = 'test_files/certification_request_ccn/2023-06-27_2023-02_solicitud_certificacion_v1.0.1.zip'; 19 20 public function setUp(): void 21 { 22 parent::setUp(); 23 $this->actingAs($this->getAdminUser()); 24 } 25 26 /** @test */ 27 public function constructor_can_unzip_and_validate() 28 { 29 $certReq = new CertificationRequestService($this->path); 30 31 Storage::assertExists($certReq->tmp); 32 Storage::assertExists($certReq->request); 33 34 $this->assertArrayHasKey('dossier_modo', $certReq->data); 35 } 36 37 /** @test */ 38 public function build_inactive_dossier() 39 { 40 $certReq = new CertificationRequestService($this->path); 41 $dossier = $certReq->build(false, $this->getAdminUser()->id); 42 43 $this->assertInstanceOf(Dossier::class, $dossier); 44 $this->assertFalse($dossier->active); 45 46 $this->assertDatabaseHas('toes', [ 47 'alias' => $certReq->data['toe_alias'], 48 ]); 49 $this->assertDatabaseHas('entities', [ 50 'nif' => $certReq->data['applicant_nif'], 51 ]); 52 $this->assertDatabaseHas('entities', [ 53 'nif' => $certReq->data['laboratory_nif'], 54 ]); 55 } 56 57 /** @test */ 58 public function find_request_in_path() 59 { 60 $pdf = CertificationRequestService::findRequestFile('test_files/certification_request_ccn'); 61 62 $this->assertNotNull($pdf); 63 $this->assertTrue(Str::contains($pdf, 'solicitud_certificacion.pdf')); 64 } 65 66 /** @test */ 67 public function get_pdf_format() 68 { 69 $format = CertificationRequestService::getFormat('test_files/certification_request_ccn/01. FOR-001/solicitud_certificacion.pdf'); 70 71 $this->assertNotNull($format); 72 $this->assertEquals('ccn', $format); 73 } 74 75 /** @test */ 76 public function build_from_ccn_form() 77 { 78 // constructor 79 $certReq = new CertificationRequestService($this->ccn); 80 81 $this->assertArrayHasKey('dossier_modo', $certReq->data); 82 $this->assertArrayHasKey('toe_public_vulnerabilities_link', $certReq->data); 83 84 // build 85 $dossier = $certReq->build(false, $this->getAdminUser()->id); 86 87 $this->assertInstanceOf(Dossier::class, $dossier); 88 $this->assertFalse($dossier->active); 89 $this->assertDatabaseHas('toes', [ 90 'alias' => $certReq->data['toe_alias'], 91 ]); 92 $this->assertDatabaseHas('entities', [ 93 'nif' => $certReq->data['applicant_nif'], 94 ]); 95 $this->assertDatabaseHas('entities', [ 96 'nif' => $certReq->data['laboratory_nif'], 97 ]); 98 } 99 }