From 5176a0141fc84b06d7610109de6952497a2e8911 Mon Sep 17 00:00:00 2001 From: mauro Date: Thu, 5 Dec 2024 16:08:23 -0300 Subject: [PATCH] =?UTF-8?q?test:=20teste=20unit=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit teste consultar estruturas por estrutura pai --- src/rn/ProcessoEletronicoRN.php | 4 +- ...ConsultarEstruturasPorEstruturaPaiTest.php | 122 ++++++++++++++++++ ...ConsultarEstruturasPorEstruturaPaiTest.php | 122 ++++++++++++++++++ ...ConsultarEstruturasPorEstruturaPaiTest.php | 122 ++++++++++++++++++ 4 files changed, 368 insertions(+), 2 deletions(-) create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 58166c2f..639c396b 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -474,7 +474,7 @@ public function buscarEstrutura( * @param $idRepositorioEstrutura * @return array|null */ - private function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) + protected function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) { //Verificar limitação de repositórios/unidades mapeadas $arrEstruturasCadastradas = null; @@ -540,7 +540,7 @@ private function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) * @param null|string $numeroDeIdentificacaoDaEstrutura * @return array */ - private function buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura = null) + protected function buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura = null) { $parametros = new stdClass(); $parametros->filtroDeEstruturasPorEstruturaPai = new stdClass(); diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 00000000..6fe7e2dc --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,122 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'validarRestricaoUnidadesCadastradas', 'buscarEstruturasPorEstruturaPai']) + ->getMock(); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para um caso de sucesso. + * + * Verifica se a lista de estruturas é retornada e ordenada corretamente com base nos nomes. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiRetornaEstruturasOrdenadas() + { + $idRepositorioEstrutura = 1; + $mockEstruturas = [ + (object)['nome' => 'Unidade B', 'codigo' => '002'], + (object)['nome' => 'Unidade A', 'codigo' => '001'], + (object)['nome' => 'Unidade C', 'codigo' => '003'], + ]; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->with($idRepositorioEstrutura) + ->willReturn(null); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, null) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + + $this->assertCount(3, $resultado); + $this->assertEquals('Unidade A', $resultado[0]->nome); + $this->assertEquals('Unidade B', $resultado[1]->nome); + $this->assertEquals('Unidade C', $resultado[2]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para uma unidade pai específica. + * + * Verifica se a busca por estrutura pai é realizada corretamente ao fornecer + * um número de identificação específico. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiComUnidadePaiEspecifica() + { + $idRepositorioEstrutura = 1; + $numeroDeIdentificacaoDaEstrutura = '001'; + $mockEstruturas = [ + (object)['nome' => 'Unidade D', 'codigo' => '004'], + ]; + + $this->mockService->expects($this->never()) + ->method('validarRestricaoUnidadesCadastradas'); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura); + + $this->assertCount(1, $resultado); + $this->assertEquals('Unidade D', $resultado[0]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai quando ocorre um erro. + * + * Verifica se uma exceção InfraException é lançada corretamente ao ocorrer + * um erro no método validarRestricaoUnidadesCadastradas. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->willThrowException(new Exception('Erro no serviço')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + } +} diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 00000000..6fe7e2dc --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,122 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'validarRestricaoUnidadesCadastradas', 'buscarEstruturasPorEstruturaPai']) + ->getMock(); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para um caso de sucesso. + * + * Verifica se a lista de estruturas é retornada e ordenada corretamente com base nos nomes. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiRetornaEstruturasOrdenadas() + { + $idRepositorioEstrutura = 1; + $mockEstruturas = [ + (object)['nome' => 'Unidade B', 'codigo' => '002'], + (object)['nome' => 'Unidade A', 'codigo' => '001'], + (object)['nome' => 'Unidade C', 'codigo' => '003'], + ]; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->with($idRepositorioEstrutura) + ->willReturn(null); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, null) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + + $this->assertCount(3, $resultado); + $this->assertEquals('Unidade A', $resultado[0]->nome); + $this->assertEquals('Unidade B', $resultado[1]->nome); + $this->assertEquals('Unidade C', $resultado[2]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para uma unidade pai específica. + * + * Verifica se a busca por estrutura pai é realizada corretamente ao fornecer + * um número de identificação específico. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiComUnidadePaiEspecifica() + { + $idRepositorioEstrutura = 1; + $numeroDeIdentificacaoDaEstrutura = '001'; + $mockEstruturas = [ + (object)['nome' => 'Unidade D', 'codigo' => '004'], + ]; + + $this->mockService->expects($this->never()) + ->method('validarRestricaoUnidadesCadastradas'); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura); + + $this->assertCount(1, $resultado); + $this->assertEquals('Unidade D', $resultado[0]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai quando ocorre um erro. + * + * Verifica se uma exceção InfraException é lançada corretamente ao ocorrer + * um erro no método validarRestricaoUnidadesCadastradas. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->willThrowException(new Exception('Erro no serviço')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + } +} diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 00000000..6fe7e2dc --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,122 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'validarRestricaoUnidadesCadastradas', 'buscarEstruturasPorEstruturaPai']) + ->getMock(); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para um caso de sucesso. + * + * Verifica se a lista de estruturas é retornada e ordenada corretamente com base nos nomes. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiRetornaEstruturasOrdenadas() + { + $idRepositorioEstrutura = 1; + $mockEstruturas = [ + (object)['nome' => 'Unidade B', 'codigo' => '002'], + (object)['nome' => 'Unidade A', 'codigo' => '001'], + (object)['nome' => 'Unidade C', 'codigo' => '003'], + ]; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->with($idRepositorioEstrutura) + ->willReturn(null); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, null) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + + $this->assertCount(3, $resultado); + $this->assertEquals('Unidade A', $resultado[0]->nome); + $this->assertEquals('Unidade B', $resultado[1]->nome); + $this->assertEquals('Unidade C', $resultado[2]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para uma unidade pai específica. + * + * Verifica se a busca por estrutura pai é realizada corretamente ao fornecer + * um número de identificação específico. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiComUnidadePaiEspecifica() + { + $idRepositorioEstrutura = 1; + $numeroDeIdentificacaoDaEstrutura = '001'; + $mockEstruturas = [ + (object)['nome' => 'Unidade D', 'codigo' => '004'], + ]; + + $this->mockService->expects($this->never()) + ->method('validarRestricaoUnidadesCadastradas'); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura); + + $this->assertCount(1, $resultado); + $this->assertEquals('Unidade D', $resultado[0]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai quando ocorre um erro. + * + * Verifica se uma exceção InfraException é lançada corretamente ao ocorrer + * um erro no método validarRestricaoUnidadesCadastradas. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->willThrowException(new Exception('Erro no serviço')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + } +}