<?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'); 
 
 |