| 
<?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('(Cobranca Simples):', function() use (&$jwt) {
 
 it('Deverá criar uma cobrança para um cliente no valor de 42,00.', function() use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/contasbancarias');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('clientID')
 ->and($resposta->body[0])->toHaveKey('chaveAPI')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0]['nome'])->toBe('Conta Principal - Empresa Teste atualizada');
 
 $contaBancaria = $resposta->body[0];
 
 
 $resposta = $this->clientHTTPApi->post('/clientes/consultarinformacoesnainternet', [
 'documento' => '84167670097'
 ]);
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/clientes');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nomeCompleto');
 
 $cliente = $resposta->body[0];
 
 $contaBancariaCodigo = $contaBancaria['codigo'];
 $clienteCodigo = $cliente['codigo'];
 
 $resposta = $this->clientHTTPApi->post('/cobranca',[
 'clienteCodigo' => $clienteCodigo,
 'descricao' => 'Cobrança de teste - descrição da boa',
 'dataVencimento' => date('Y-m-d', strtotime('+6 day')),
 'meioDePagamento' => 'Boleto',
 'juros' => 1,
 'multa' => 2,
 'parcelas' => 1,
 'contaBancariaCodigo' => $contaBancariaCodigo,
 'composicaoDaCobranca' => [
 [
 'descricao' => 'Descricao do item aqui',
 'planoDeContaCodigo' => 1,
 'valor' => 21.00
 ],
 [
 'descricao' => 'Descricao do item aqui doisX',
 'planoDeContaCodigo' => 2,
 'valor' => 21.00
 ]
 ]
 ]);
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('message')
 ->and($resposta->body['message'])->toBe('Cobrança realizada com sucesso');
 })
 ->group('Integracao', 'Cobranca');
 
 it('Deverá consultar as cobranças e terá que existir 1 cobrança.', function() use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/cobranca');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('dataVencimento')
 ->and($resposta->body[0])->toHaveKey('pagadorNomeCompleto')
 ->and($resposta->body[0])->toHaveKey('descricao')
 ->and($resposta->body[0])->toHaveKey('valor')
 ->and($resposta->body[0])->toHaveKey('meioDePagamentoName');
 })
 ->group('Integracao', 'Cobranca');
 
 })
 ->group('Integracao', 'Cobranca');
 
 describe('(Cobranca Parcelada):', function() use (&$jwt) {
 
 it('Deverá criar uma cobrança para um cliente no valor de 1453.00 e fazer em 3 parcelas de 484.33.', function() use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/contasbancarias');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('clientID')
 ->and($resposta->body[0])->toHaveKey('chaveAPI')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0]['nome'])->toBe('Conta Principal - Empresa Teste atualizada');
 
 $contaBancaria = $resposta->body[0];
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/clientes');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nomeCompleto');
 
 $cliente = $resposta->body[0];
 
 $contaBancariaCodigo = $contaBancaria['codigo'];
 $clienteCodigo = $cliente['codigo'];
 
 $resposta = $this->clientHTTPApi->post('/cobranca',[
 'clienteCodigo' => $clienteCodigo,
 'descricao' => 'Soraka - A mulher que cura',
 'dataVencimento' => date('Y-m-d', strtotime('+10 day')),
 'meioDePagamento' => 'Boleto',
 'juros' => 1,
 'multa' => 2,
 'parcelas' => 3,
 'contaBancariaCodigo' => $contaBancariaCodigo,
 'composicaoDaCobranca' => [
 [
 'descricao' => '',
 'planoDeContaCodigo' => 3,
 'valor' => 78.00
 ],
 [
 'descricao' => 'É o Judaz',
 'planoDeContaCodigo' => 4,
 'valor' => 478.00
 ],
 [
 'descricao' => 'Algum item ai',
 'planoDeContaCodigo' => 7,
 'valor' => 897.00
 ]
 ]
 ]);
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('message')
 ->and($resposta->body['message'])->toBe('Cobrança realizada com sucesso');
 })
 ->group('Integracao', 'Cobranca');
 
 it('Deverá consultar as cobranças e terá que existir 2 cobrança.', function() use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/cobranca');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(2)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('dataVencimento')
 ->and($resposta->body[0])->toHaveKey('pagadorNomeCompleto')
 ->and($resposta->body[0])->toHaveKey('descricao')
 ->and($resposta->body[0])->toHaveKey('valor')
 ->and($resposta->body[0])->toHaveKey('meioDePagamentoName');
 })
 ->group('Integracao', 'Cobranca');
 
 })
 ->group('Integracao', 'Cobranca');
 
 |