| 
<?php
 use App\Dominio\ObjetoValor\IdentificacaoUnica;
 use App\Aplicacao\Compartilhado\Entidades\EntidadeUsuarioLogado;
 use App\Infraestrutura\Adaptadores\Cache\ImplementacaoCacheMemoria;
 use App\Infraestrutura\Adaptadores\Agenda\ImplementacaoGoogleAgenda;
 use App\Infraestrutura\Adaptadores\Ambiente\ImplementacaoAmbienteArquivo;
 use App\Dominio\Repositorios\Autenticacao\Fronteiras\SaidaFronteiraBuscarContaPorCodigo;
 
 
 $ambiente = new ImplementacaoAmbienteArquivo();
 
 $entidadeUsuarioLogado = EntidadeUsuarioLogado::instanciarEntidadeUsuarioLogado(new SaidaFronteiraBuscarContaPorCodigo(
 empresaCodigo: (new IdentificacaoUnica())->get(),
 contaCodigo: (new IdentificacaoUnica())->get(),
 nomeCompleto: 'Matheus Maydana',
 email: '[email protected]',
 documento: '17816441010',
 hashSenha: '',
 oab: '123456',
 ));
 
 $cache = new ImplementacaoCacheMemoria();
 
 $agenda = new ImplementacaoGoogleAgenda(
 ambiente: $ambiente,
 cache: $cache,
 //codigoAutorizacao: '4/0AdLIrYf6svLebAQTf_QeQhw8rg3q9sapnCKvnJ3UlrxUiyH8zYMgcGN4C_pff1olKt-MKQ'
 );
 
 test('O codigo de autorização deverá ser vazio', function() use (&$agenda){
 
 expect($agenda->codigoAutorizacao)->toBeEmpty();
 })->group('ImplementacaoGoogleAgenda');
 
 test('O metodo checkCode deverá lançar uma exceção', function() use (&$agenda){
 
 $agenda->checkCode();
 
 })->group('ImplementacaoGoogleAgenda')->throws('Você não forneceu um código de autorização, acesse.');
 
 
 test('Deverá acessar a URL para gerar o codigo de autorizacao', function() use (&$agenda){
 
 $agenda->codigoAutorizacao = '4/0AdLIrYf6svLebAQTf_QeQhw8rg3q9sapnCKvnJ3UlrxUiyH8zYMgcGN4C_pff1olKt-MKQ';
 expect($agenda->codigoAutorizacao)->toBe('4/0AdLIrYf6svLebAQTf_QeQhw8rg3q9sapnCKvnJ3UlrxUiyH8zYMgcGN4C_pff1olKt-MKQ');
 
 })->group('ImplementacaoGoogleAgenda');
 
 test('Deve retornar a URL de login: '.$agenda->getLoginUrl(), function() use (&$agenda){
 
 $url = $agenda->getLoginUrl();
 expect($url)->toBeString();
 
 })->group('ImplementacaoGoogleAgenda');
 
 test('Deve setar o novo codigoAutorizacao', function() use (&$agenda){
 
 $agenda->codigoAutorizacao = '4/0AdLIrYdtPzxvW5Fit389HMnv0z7-0QysvBRpOSDASBvSIdvGlE1GjvGfSvR_zW1aj4eNqA';
 
 expect($agenda->codigoAutorizacao)->toBe('4/0AdLIrYdtPzxvW5Fit389HMnv0z7-0QysvBRpOSDASBvSIdvGlE1GjvGfSvR_zW1aj4eNqA');
 
 })->group('ImplementacaoGoogleAgenda');
 
 
 test('Deve setar o accessToken', function() use (&$agenda){
 $agenda->setAccessToken('ya29.a0AXooCgvi_-d1RLrEVXgpXRxSqNYpX184QDApIWZsGUg1aL_B0IkRTBlS3PvH3AhM7UGDK2YaYVR5xNzJDGh4GLhh6FV2FcRJ_dY5r5Q3sTF_25N5Uji1Z1Z3hJBO798WsD-YGII70LiEo-Uto24RSlCLbGXm8Dm49psaCgYKAaUSARISFQHGX2Mi3lRnA7VXwmT9ZdM2slLkVw0170');
 expect($agenda->_getAccessToken())->toBe('ya29.a0AXooCgvi_-d1RLrEVXgpXRxSqNYpX184QDApIWZsGUg1aL_B0IkRTBlS3PvH3AhM7UGDK2YaYVR5xNzJDGh4GLhh6FV2FcRJ_dY5r5Q3sTF_25N5Uji1Z1Z3hJBO798WsD-YGII70LiEo-Uto24RSlCLbGXm8Dm49psaCgYKAaUSARISFQHGX2Mi3lRnA7VXwmT9ZdM2slLkVw0170');
 
 })->group('ImplementacaoGoogleAgenda');
 
 test('Deve retornar um array com os eventos da agenda', function() use (&$agenda){
 
 $eventos = $agenda->listarEventos();
 expect($eventos)->toBeArray();
 
 })->group('ImplementacaoGoogleAgenda')->skip('Isse teste não sei fazer ainda, por conta de precisa de um "navegador" para fazer a requisição.');
 |