| 
<?php
 use App\Infraestrutura\Adaptadores\HTTP\ImplementacaoCurlClienteHTTP;
 
 global $jwt;
 
 if(!is_file(__DIR__.'/../../../.env')) {
 return;
 }
 
 beforeEach(function(){
 
 $this->clientHTTPAuth = new ImplementacaoCurlClienteHTTP([
 'baseURL' => 'http://localhost:8052'
 ]);
 
 $this->clientHTTPApi = new ImplementacaoCurlClienteHTTP([
 'baseURL' => 'http://localhost:8053'
 ]);
 });
 
 describe('(Modelo Documentos):', function() use (&$jwt) {
 
 it("Deverá criar um modelo de documento.", function () use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->upload('/modelos', [
 'files' => [
 __DIR__.'/modelo_declaracao.docx',
 ],
 'nome' => 'Modelo de Documento',
 ]);
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('message')
 ->and($resposta->body['message'])->toBe('Modelo de documento cadastrado com sucesso');
 
 });
 
 it("Deverá retornar uma lista de documentos.", function () use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/modelos');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(3)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0]['nome'])->toBe('Declaração de Residência');
 
 });
 
 it("Atualizar um modelo de documento.", function () use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/modelos');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(3);
 
 $modelo = $resposta->body[0];
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->upload('/modelos', [
 'files' => [
 __DIR__.'/modelo_declaracao.docx',
 ],
 'codigo' => $modelo['codigo'],
 'nome' => 'Titulo Modelo de Documento Atualizado',
 ]);
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('message')
 ->and($resposta->body['message'])->toBe('Modelo de documento cadastrado com sucesso');
 
 })->group('Integracao', 'Modelos')
 ->skip('Rever isso, ele esta criando e não atualizando');
 
 it('Devera retornar o link para visualizar o PDF preview', function() use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 $resposta = $this->clientHTTPApi->get('/modelos');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(3);
 
 $modelo = $resposta->body[0];
 
 $resposta = $this->clientHTTPApi->get('/modelos/preview/'.$modelo['codigo']);
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('link')
 ->and($resposta->body['link'])->toBeString()
 ->and($resposta->body['link'])->toContain('https://jusizi-para-teste.ac2eb7e5c09270f176d3958a5550eee0.r2.cloudflarestorage.com');
 })
 ;
 
 
 it('Devera gerar um documento apartir de um modelo para um cliente e retornar o Link para Download', function() use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 $resposta = $this->clientHTTPApi->get('/modelos');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(3);
 
 $modelo = $resposta->body[0];
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/clientes');
 
 $cliente = array_filter($resposta->body, function ($cliente) {
 return $cliente['documento'] === '619.085.330-72';
 });
 
 $cliente = array_shift($cliente);
 
 $resposta = $this->clientHTTPApi->get('/clientes/gerardocumento/?modelo='.$modelo['codigo'].'&cliente='.$cliente['codigo']);
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('link')
 ->and($resposta->body)->toHaveKey('message')
 ->and($resposta->body['link'])->toBeString()
 ->and($resposta->body['link'])->toContain('https://jusizi-para-teste.ac2eb7e5c09270f176d3958a5550eee0.r2.cloudflarestorage.com')
 ->and($resposta->body['message'])->toBe('Documento gerado com sucesso');
 
 });
 
 })->group('Integracao', 'Modelos');
 |