';
diff --git a/src/pen_tipo_procedimento_lista.php b/src/pen_tipo_procedimento_lista.php
new file mode 100644
index 000000000..6cf1780c0
--- /dev/null
+++ b/src/pen_tipo_procedimento_lista.php
@@ -0,0 +1,305 @@
+setBolLigado(false);
+ //InfraDebug::getInstance()->setBolDebugInfra(true);
+ //InfraDebug::getInstance()->limpar();
+ //////////////////////////////////////////////////////////////////////////////
+
+ SessaoSEI::getInstance()->validarLink();
+
+ SessaoSEI::getInstance()->validarPermissao($_GET['acao']);
+
+ switch ($_GET['acao']) {
+ case 'pen_map_orgaos_exportar_tipos_processos':
+ $strTitulo = 'Exportação de Tipos de Processo';
+ if ($_POST['dadosInput']) {
+ try {
+ $arrStrIds = explode(',', $_POST['dadosInput']);
+ $qtdSelecao = count($arrStrIds);
+
+ $objTipoProcedimentoDTO = new TipoProcedimentoDTO();
+ $objTipoProcedimentoDTO->retNumIdTipoProcedimento();
+ $objTipoProcedimentoDTO->retStrNome();
+ $objTipoProcedimentoDTO->setNumIdTipoProcedimento($arrStrIds, InfraDTO::$OPER_IN);
+ PaginaSEI::getInstance()->prepararOrdenacao($objTipoProcedimentoDTO, 'Nome', InfraDTO::$TIPO_ORDENACAO_ASC);
+
+ $objTipoProcedimentoRN = new TipoProcedimentoRN();
+ if (InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0")) {
+ $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->pesquisar($objTipoProcedimentoDTO);
+ } else {
+ $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->listarRN0244($objTipoProcedimentoDTO);
+ }
+
+ $dados = array();
+ $dados[] = ['ID', 'Nome'];
+
+ foreach ($arrObjTipoProcedimentoDTO as $key => $value) {
+ $dados[] = array(
+ $value->getNumIdTipoProcedimento(),
+ $value->getStrNome(),
+ );
+ }
+
+ $nomeArquivo = 'tipos_processos.csv';
+ header('Content-Type: text/csv');
+ header('Content-Disposition: attachment; filename="' . $nomeArquivo . '";');
+ $fp = fopen('php://output', 'w');
+
+ foreach ($dados as $linha) {
+ fputcsv($fp, $linha, ';');
+ }
+ fclose($fp);
+ exit(0);
+ } catch (Exception $e) {
+ PaginaSEI::getInstance()->processarExcecao($e);
+ }
+ }
+ break;
+ default:
+ throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida.");
+ }
+
+ $arrComandosModal = array();
+ $arrComandosModal[] = '
E xportar';
+ $arrComandosModal[] = '
F echar';
+ $arrComandosModalFinal = array();
+ $arrComandosModalFinal[] = '
E xportar';
+ $arrComandosModalFinal[] = '
F echar';
+
+ $strResultadoExportar = '';
+
+ $strResultadoExportar .= '
' . "\n";
+ $strResultadoExportar .= ' ';
+
+ $strResultadoExportar .= '';
+ $strResultadoExportar .= 'ID ' . "\n";
+ $strResultadoExportar .= 'Tipo de Processo ' . "\n";
+ $strResultadoExportar .= ' ' . "\n";
+ $strResultadoExportar .= '
';
+
+ $arrComandos = array();
+
+ $arrComandos[] = '
P esquisar';
+ $arrComandos[] = '
E xportar';
+
+ $objTipoProcedimentoDTO = new TipoProcedimentoDTO();
+ $objTipoProcedimentoDTO->retNumIdTipoProcedimento();
+ $objTipoProcedimentoDTO->retStrNome();
+ //$objTipoProcedimentoDTO->retStrDescricao();
+
+ if ($_GET['acao'] == 'tipo_procedimento_reativar') {
+ //Lista somente inativos
+ $objTipoProcedimentoDTO->setBolExclusaoLogica(false);
+ $objTipoProcedimentoDTO->setStrSinAtivo('N');
+ }
+
+ $strNomeTipoProcessoPesquisa = !empty($_POST['txtNomeTipoProcessoPesquisa']) && !is_null($_POST['txtNomeTipoProcessoPesquisa'])
+ ? $_POST['txtNomeTipoProcessoPesquisa']
+ : "";
+ if (trim($strNomeTipoProcessoPesquisa) != '') {
+ $objTipoProcedimentoDTO->setStrNome('%' . trim($strNomeTipoProcessoPesquisa) . '%', InfraDTO::$OPER_LIKE);
+ }
+
+ $strIdAssunto = !empty($_POST['hdnIdAssuntoTipoProcesso']) && !is_null($_POST['hdnIdAssuntoTipoProcesso'])
+ ? $_POST['hdnIdAssuntoTipoProcesso']
+ : "";
+ if (!InfraString::isBolVazia($strIdAssunto)) {
+ $objTipoProcedimentoDTO->setNumIdAssunto($strIdAssunto);
+ }
+
+ PaginaSEI::getInstance()->prepararOrdenacao($objTipoProcedimentoDTO, 'Nome', InfraDTO::$TIPO_ORDENACAO_ASC);
+
+ $objTipoProcedimentoRN = new TipoProcedimentoRN();
+ if (InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0")) {
+ $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->pesquisar($objTipoProcedimentoDTO);
+ } else {
+ $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->listarRN0244($objTipoProcedimentoDTO);
+ }
+ $numRegistros = count($arrObjTipoProcedimentoDTO);
+
+ if ($numRegistros > 0) {
+
+ $strResultado = '';
+
+ if ($_GET['acao'] != 'tipo_procedimento_reativar') {
+ $strSumarioTabela = 'Tabela de Tipos de Processo.';
+ $strCaptionTabela = 'Tipos de Processo';
+ } else {
+ $strSumarioTabela = 'Tabela de Tipos de Processo Inativos.';
+ $strCaptionTabela = 'Tipos de Processo Inativos';
+ }
+
+ $strResultado .= '
' . "\n"; //70
+ $strResultado .= '' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . ' ';
+ $strResultado .= '';
+ $strResultado .= '' . PaginaSEI::getInstance()->getThCheck() . ' ' . "\n";
+
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'ID', 'IdTipoProcedimento', $arrObjTipoProcedimentoDTO) . ' ' . "\n";
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'Nome', 'Nome', $arrObjTipoProcedimentoDTO) . ' ' . "\n";
+ $strResultado .= ' ' . "\n";
+ $strCssTr = '';
+ for ($i = 0; $i < $numRegistros; $i++) {
+ $idTipoProcedimento = $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento();
+
+ $strCssTr = ($strCssTr == '') ? ' ' : ' ';
+
+ $strResultado .= $strCssTr;
+
+ $strResultado .= '' . PaginaSEI::getInstance()->getTrCheck($i, $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento(), $arrObjTipoProcedimentoDTO[$i]->getStrNome()) . ' ';
+
+ $strResultado .= '' . $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento() . ' ';
+ $strResultado .= '' . PaginaSEI::tratarHTML($arrObjTipoProcedimentoDTO[$i]->getStrNome()) . ' ';
+ $strResultado .= ' ' . "\n";
+ }
+ $strResultado .= '
';
+ }
+ $arrComandos[] = '
F echar';
+
+ $strLinkAjaxAssuntoRI1223 = SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=assunto_auto_completar_RI1223');
+} catch (Exception $e) {
+ PaginaSEI::getInstance()->processarExcecao($e);
+}
+
+PaginaSEI::getInstance()->montarDocType();
+PaginaSEI::getInstance()->abrirHtml();
+PaginaSEI::getInstance()->abrirHead();
+PaginaSEI::getInstance()->montarMeta();
+PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo);
+PaginaSEI::getInstance()->montarStyle();
+PaginaSEI::getInstance()->abrirStyle();
+?>
+
+.no-close .ui-dialog-titlebar-close {display: none;}
+.ui-dialog .ui-dialog-title {margin: 0.4em 0;}
+.ui-widget-header {background: #1351b4;border: 0;color: #fff;font-weight: normal;padding: 2px;}
+
+#lblNomeTipoProcessoPesquisa {position:absolute;left:0%;top:0%;}
+#txtNomeTipoProcessoPesquisa {position:absolute;left:0%;top:40%;width:25%;}
+
+#lblAssuntoTipoProcesso {position:absolute;left:26%;top:0%;}
+#txtAssuntoTipoProcesso {position:absolute;left:26%;top:40%;width:25%;}
+
+.ui-dialog {z-index: 1001 !important;}
+
+
+PaginaSEI::getInstance()->fecharStyle();
+PaginaSEI::getInstance()->montarJavaScript();
+?>
+
+
+PaginaSEI::getInstance()->fecharHead();
+PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"');
+?>
+
+
+
+
+PaginaSEI::getInstance()->fecharBody();
+PaginaSEI::getInstance()->fecharHtml();
+?>
diff --git a/src/rn/PenMapTipoProcedimentoRN.php b/src/rn/PenMapTipoProcedimentoRN.php
new file mode 100644
index 000000000..333aa9e86
--- /dev/null
+++ b/src/rn/PenMapTipoProcedimentoRN.php
@@ -0,0 +1,151 @@
+getObjInfraIBanco());
+ return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro listando mapeamento externos.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para listagem de dados.
+ * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function consultarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO)
+ {
+ try {
+ $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD($this->getObjInfraIBanco());
+ return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro listando mapeamento externos.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para alteração de dados.
+ * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function alterarControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO)
+ {
+ try {
+ $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance());
+ return $objPenMapTipoProcedimentoBD->alterar($objPenMapTipoProcedimentoDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro alterando mapeamento de procedimento.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para cadastro de dados.
+ * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function cadastrarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO)
+ {
+ try {
+ $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance());
+ return $objPenMapTipoProcedimentoBD->cadastrar($objPenMapTipoProcedimentoDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro cadastrando mapeamento de procedimento.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para exclusão de dados.
+ * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function excluirControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO)
+ {
+ try {
+ $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance());
+ return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro excluindo mapeamento de procedimento.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para contagem de procedimento mapeadas
+ * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function contarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO)
+ {
+ try {
+ $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance());
+ return $objPenMapTipoProcedimentoBD->contar($objPenMapTipoProcedimentoDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro contando mapeamento de procedimento.', $e);
+ }
+ }
+
+ /**
+ * @param array $arrObjTipoProcedimentoDTO
+ * @param string $mensagem
+ * @return void
+ */
+ public function validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem)
+ {
+ $arrTipoProcedimento = array();
+ $mapeamentos = array();
+ foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) {
+ $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO();
+ $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao();
+ $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoDestino($objTipoProcedimentoDTO->getIdTipoProcedimento());
+
+ if ($this->contarConectado($objMapeamentoTipoProcedimentoDTO)) {
+ $arrObjMapeamentoTipoProcedimentoDTO = $this->listarConectado($objMapeamentoTipoProcedimentoDTO);
+
+ foreach ($arrObjMapeamentoTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) {
+ $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO();
+ $objPenOrgaoExternoDTO->retStrOrgaoDestino();
+ $objPenOrgaoExternoDTO->setDblId($objPenMapTipoProcedimentoDTO->getNumIdMapOrgao());
+
+ $objPenOrgaoExternoRN = new PenOrgaoExternoRN();
+ $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO);
+ $mapeamentos[$objPenOrgaoExternoDTO->getStrOrgaoDestino()] = $objPenOrgaoExternoDTO->getStrOrgaoDestino();
+ $arrTipoProcedimento[$objTipoProcedimentoDTO->getNome()] = $objTipoProcedimentoDTO->getNome();
+ }
+ }
+ }
+ if (count($arrTipoProcedimento) > 0) {
+ $mensagem = sprintf($mensagem, implode('", "', $mapeamentos), implode('", "', $arrTipoProcedimento));
+ LogSEI::getInstance()->gravar($mensagem, LogSEI::$AVISO);
+ throw new InfraException($mensagem);
+ }
+ }
+}
diff --git a/src/rn/PenOrgaoExternoRN.php b/src/rn/PenOrgaoExternoRN.php
new file mode 100644
index 000000000..43ec3be1f
--- /dev/null
+++ b/src/rn/PenOrgaoExternoRN.php
@@ -0,0 +1,127 @@
+validarAuditarPermissao('pen_map_orgaos_externos_listar', __METHOD__, $objDTO);
+ $objBD = new PenOrgaoExternoBD($this->getObjInfraIBanco());
+ return $objBD->listar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro listando orgãos externos.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para consulta de dados.
+ * @param PenOrgaoExternoDTO $objDTO
+ * @return PenOrgaoExternoDTO
+ * @throws InfraException
+ */
+ protected function consultarConectado(PenOrgaoExternoDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_visualizar', __METHOD__, $objDTO);
+ $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance());
+ return $objBD->consultar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro consultando mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para alteração de dados.
+ * @param PenOrgaoExternoDTO $objDTO
+ * @return PenOrgaoExternoDTO
+ * @throws InfraException
+ */
+ protected function alterarControlado(PenOrgaoExternoDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO);
+ $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance());
+ return $objBD->alterar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro alterando mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para cadastro de dados.
+ * @param PenOrgaoExternoDTO $objDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function cadastrarConectado(PenOrgaoExternoDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO);
+ $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance());
+ return $objBD->cadastrar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro cadastrando mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para exclusão de dados.
+ * @param PenOrgaoExternoDTO $objDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function excluirControlado(PenOrgaoExternoDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_excluir', __METHOD__, $objDTO);
+ $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance());
+ return $objBD->excluir($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro excluindo mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para contagem de unidades mapeadas
+ * @param PenOrgaoExternoDTO $objDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function contarConectado(PenOrgaoExternoDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_listar', __METHOD__, $objDTO);
+ $objBD = new PenOrgaoExternoBD($this->getObjInfraIBanco());
+ return $objBD->contar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro contando mapeamento de unidades.', $e);
+ }
+ }
+}
diff --git a/src/rn/PenParametroRN.php b/src/rn/PenParametroRN.php
index 0ec23ab94..4e81db5b9 100755
--- a/src/rn/PenParametroRN.php
+++ b/src/rn/PenParametroRN.php
@@ -189,4 +189,32 @@ private function validarUnidadeRecebimento(PenParametroDTO $objPenParametroDTO,
}
}
+ /**
+ * @param array $arrObjTipoProcedimentoDTO
+ * @param string $mensagem
+ * @return void
+ * @throws InfraException
+ */
+ public function validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem)
+ {
+ $mapeamentos = array();
+ foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) {
+ $objPenParametroDTO = new PenParametroDTO();
+ $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO');
+ $objPenParametroDTO->setStrValor($objTipoProcedimentoDTO->getIdTipoProcedimento());
+ $objPenParametroDTO->retStrNome();
+ $objPenParametroDTO->retStrValor();
+
+ if ($this->contarConectado($objPenParametroDTO) > 0) {
+ $mapeamentos[$objTipoProcedimentoDTO->getIdTipoProcedimento()] =
+ $objTipoProcedimentoDTO->getIdTipoProcedimento() . '-' . $objTipoProcedimentoDTO->getNome();
+ }
+ }
+
+ if (count($mapeamentos) > 0) {
+ $mensagem = sprintf($mensagem, implode('", "', $mapeamentos));
+ LogSEI::getInstance()->gravar($mensagem, LogSEI::$AVISO);
+ throw new InfraException($mensagem);
+ }
+ }
}
diff --git a/src/rn/PenUnidadeRN.php b/src/rn/PenUnidadeRN.php
index c7a968fd6..20a921561 100755
--- a/src/rn/PenUnidadeRN.php
+++ b/src/rn/PenUnidadeRN.php
@@ -123,4 +123,20 @@ protected function contarConectado(PenUnidadeDTO $objPenUnidadeDTO) {
}
}
+ /**
+ * Método utilizado para consultar dados.
+ * @param UnidadeDTO $objDTO
+ * @return PenUnidadeDTO
+ * @throws InfraException
+ */
+ protected function consultarConectado(PenUnidadeDTO $objDTO){
+ try {
+ $objBD = new PenUnidadeBD(BancoSEI::getInstance());
+ return $objBD->consultar($objDTO);
+ }
+ catch (Exception $e) {
+ throw new InfraException('Erro consultar mapeamento de unidades.', $e);
+ }
+ }
+
}
diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php
index 6ce4ad23f..045b36c25 100755
--- a/src/rn/ReceberProcedimentoRN.php
+++ b/src/rn/ReceberProcedimentoRN.php
@@ -1062,7 +1062,15 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo)
$objProcedimentoDTO->setArrObjDocumentoDTO(array());
$numIdTipoProcedimento = $this->objPenParametroRN->getParametro('PEN_TIPO_PROCESSO_EXTERNO');
- $this->atribuirTipoProcedimento($objProcedimentoDTO, $numIdTipoProcedimento, $strProcessoNegocio);
+ $remetente = $objMetadadosProcedimento->metadados->remetente;
+ $destinatario = $objMetadadosProcedimento->metadados->destinatario;
+ $this->atribuirTipoProcedimento(
+ $objProcedimentoDTO,
+ $remetente,
+ $destinatario,
+ $numIdTipoProcedimento,
+ $strProcessoNegocio
+ );
// Obtém código da unidade através de mapeamento entre SEI e Barramento
$objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario);
@@ -1429,18 +1437,39 @@ private function obterTipoProcessoPeloNomeOrgaoUnidade($strNomeTipoProcesso, $nu
return $objTipoProcedimentoDTO;
}
- private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $numIdTipoProcedimento, $strProcessoNegocio)
- {
+ /**
+ * Atribuir tipo de procedimento
+ * Procura tipo de procedimento
+ * Procura tipo de procedimento no mapeamento entre orgão
+ * Procura tipo de procedimento padrão
+ *
+ * @param ProcedimentoDTO $objProcedimentoDTO
+ * @param \stdClass $remetente
+ * @param \stdClass $destinatario
+ * @param string|int $numIdTipoProcedimento
+ * @param string|int $strProcessoNegocio
+ * @return ProcedimentoDTO
+ * @throws InfraException
+ */
+ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $remetente, $destinatario, $numIdTipoProcedimento, $strProcessoNegocio)
+ {
if(!empty(trim($strProcessoNegocio))){
+ // Verifica se existe relacionamento entre orgãos
+ $objTipoProcedimentoDTO = $this->obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio);
+
+ if(is_null($objTipoProcedimentoDTO)){
+ // Verifica se existe tipo de processo igual cadastrado
$objTipoProcedimentoDTO = $this->obterTipoProcessoPeloNomeOrgaoUnidade(
$strProcessoNegocio,
SessaoSEI::getInstance()->getNumIdOrgaoUnidadeAtual(),
SessaoSEI::getInstance()->getNumIdUnidadeAtual()
);
+ }
}
if(is_null($objTipoProcedimentoDTO)){
- $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento);
+ // Verifica tipo de processo padrão cadastrado
+ $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento);
}
if (is_null($objTipoProcedimentoDTO)){
@@ -1470,6 +1499,48 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $
$objProcedimentoDTO->getObjProtocoloDTO()->setArrObjRelProtocoloAssuntoDTO($arrObjAssuntoDTO);
}
+ /**
+ * Verificar se tem mapeamento entre orgão
+ *
+ * @param \stdClass $remetente
+ * @param \stdClass $destinatario
+ * @param string|int $strProcessoNegocio
+ * @return TipoProcedimentoDTO
+ */
+ public function obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio)
+ {
+ $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO();
+
+ $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($remetente->numeroDeIdentificacaoDaEstrutura);
+ $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($destinatario->numeroDeIdentificacaoDaEstrutura);
+ $objPenOrgaoExternoDTO->setStrAtivo('S');
+
+ $objPenOrgaoExternoDTO->retDblId();
+
+ $objPenOrgaoExternoRN = new PenOrgaoExternoRN();
+ $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO);
+
+ if (!is_null($objPenOrgaoExternoDTO)) {
+ $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO();
+ $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($objPenOrgaoExternoDTO->getDblId());
+ $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso($strProcessoNegocio);
+ $objMapeamentoTipoProcedimentoDTO->setStrAtivo('S');
+
+ $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino();
+
+ $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN();
+ $objMapeamentoTipoProcedimentoDTO = $objMapeamentoTipoProcedimentoRN->consultar($objMapeamentoTipoProcedimentoDTO);
+
+ if (!is_null($objMapeamentoTipoProcedimentoDTO) && !is_null($objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino())) {
+ $idTipoProcessoDestino = $objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino();
+
+ return $this->obterTipoProcessoPadrao($idTipoProcessoDestino);
+ }
+ }
+
+ return null;
+ }
+
private function atribuirDadosUnidade(ProcedimentoDTO $objProcedimentoDTO, $objDestinatario)
{
diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php
index e5a42c4cc..c56d3ae75 100755
--- a/src/scripts/sei_atualizar_versao_modulo_pen.php
+++ b/src/scripts/sei_atualizar_versao_modulo_pen.php
@@ -272,7 +272,8 @@ protected function atualizarVersaoConectado()
$this->instalarV3032();
case '3.3.2':
$this->instalarV3040();
-
+ case '3.4.0':
+ $this->instalarV3050();
break; // Ausência de [break;] proposital para realizar a atualização incremental de versões
default:
@@ -2551,6 +2552,80 @@ protected function instalarV3040() {
$objInfraMetaBD->adicionarColuna('md_pen_unidade', 'nome_unidade_rh', $objInfraMetaBD->tipoTextoVariavel(250), 'null');
$this->atualizarNumeroVersao("3.4.0");
}
+
+ protected function instalarV3050()
+ {
+ $objMetaBD = $this->objMeta;
+
+ $objMetaBD->criarTabela(array(
+ 'tabela' => 'md_pen_orgao_externo',
+ 'cols' => array(
+ 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'id_orgao_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'str_orgao_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO),
+ 'id_estrutura_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'str_estrutura_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO),
+ 'id_orgao_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'str_orgao_destino' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO),
+ 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'),
+ 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO)
+ ),
+ 'pk' => array('cols' => array('id')),
+ 'fks' => array(
+ 'unidade' => array('nome' => 'fk_md_pen_mapeamento_orgao_externo', 'cols' => array('id_unidade', 'id_unidade')),
+ )
+ ));
+
+ # Criar sequencia para tramite em bloco
+ $objInfraSequenciaRN = new InfraSequenciaRN();
+ $objInfraSequenciaDTO = new InfraSequenciaDTO();
+
+ //Sequência: md_pen_seq_tramita_em_bloco
+ $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_orgao_externo');
+ $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0;
+
+ BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_orgao_externo', $numMaxId + 1);
+ $objInfraSequenciaDTO->setStrNome('md_pen_orgao_externo');
+ $objInfraSequenciaDTO->retStrNome();
+ $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO);
+ $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO);
+
+ $objMetaBD->criarTabela(array(
+ 'tabela' => 'md_pen_map_tipo_processo',
+ 'cols' => array(
+ 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'id_map_orgao' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'id_tipo_processo_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'id_tipo_processo_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO),
+ 'nome_tipo_processo' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::SNULLO),
+ 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'),
+ 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO)
+ ),
+ 'pk' => array('cols' => array('id')),
+ 'fks' => array(
+ 'unidade' => array('nome' => 'fk_md_pen_mapeamento_tipo_processo', 'cols' => array('id_unidade', 'id_unidade')),
+ 'md_pen_orgao_externo' => array('nome' => 'fk_md_pen_mapeamento_orgao', 'cols' => array('id', 'id_map_orgao')),
+ )
+ ));
+
+ # Criar sequencia
+ $objInfraSequenciaRN = new InfraSequenciaRN();
+ $objInfraSequenciaDTO = new InfraSequenciaDTO();
+
+ //Sequência
+ $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_orgao_externo');
+ $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0;
+
+ BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_map_tipo_procedimento', $numMaxId + 1);
+ $objInfraSequenciaDTO->setStrNome('md_pen_map_tipo_processo');
+ $objInfraSequenciaDTO->retStrNome();
+ $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO);
+ $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO);
+
+ $this->atualizarNumeroVersao("3.5.0");
+ }
}
diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php
index 0a0f180ee..67e4d2852 100755
--- a/src/scripts/sip_atualizar_versao_modulo_pen.php
+++ b/src/scripts/sip_atualizar_versao_modulo_pen.php
@@ -1,7 +1,7 @@
instalarV3031();
case '3.3.1':
$this->instalarV3032();
+ case '3.3.2':
+ $this->instalarV3050();
+
break; // Ausência de [break;] proposital para realizar a atualização incremental de versões
default:
@@ -1832,6 +1835,106 @@ protected function instalarV3032()
{
$this->atualizarNumeroVersao("3.3.2");
}
+
+ protected function instalarV3050()
+ {
+ /* Corrige nome de menu de trâmite de documentos */
+ $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance());
+
+ $numIdSistema = $this->getNumIdSistema('SEI');
+ $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema);
+
+ $objItemMenuDTO = new ItemMenuDTO();
+ $objItemMenuDTO->setNumIdSistema($numIdSistema);
+ $objItemMenuDTO->setNumIdMenu($numIdMenu);
+ $objItemMenuDTO->setStrRotulo('Processo Eletrônico Nacional');
+ $objItemMenuDTO->setNumMaxRegistrosRetorno(1);
+ $objItemMenuDTO->retNumIdItemMenu();
+
+ $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO);
+
+ if (empty($objItemMenuDTO)) {
+ throw new InfraException('Menu "Processo Eletrônico Nacional" não foi localizado');
+ }
+
+ // Adicionar submenu
+ $this->logar('Atribuição de permissões do módulo ao perfil do SEI');
+
+ $this->criarRecurso('pen_map_orgaos_externos_salvar', 'Salvar relacionamento entre órgãos', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_excluir', 'Excluir relacionamento entre órgãos', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_cadastrar', 'Cadastro de relacionamento entre órgãos', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_desativar', 'Desativar relacionamento entre órgãos', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_reativar', 'Reativar relacionamento entre órgãos', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_mapeamento', 'Mapeamento de tipo de processo', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_mapeamento_excluir', 'Excluir apeamento de tipo de processo', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_atualizar', 'Atualizar relacionamento entre órgãos', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_externos_visualizar', 'Visualizar relacionamento entre órgãos', $numIdSistema);
+ $this->criarRecurso('pen_map_orgaos_importar_tipos_processos', 'Importar tipos de processo', $numIdSistema);
+ $this->criarRecurso('pen_map_tipo_processo_padrao', 'Importar tipos de processo', $numIdSistema);
+ $this->criarRecurso('pen_map_tipo_processo_padrao_salvar', 'Importar tipos de processo', $numIdSistema);
+
+ $numIdRecursoListar = $this->criarRecurso('pen_map_orgaos_externos_listar', 'Listagem de relacionamento entre órgãos', $numIdSistema);
+ $numIdRecursoExportar = $this->criarRecurso('pen_map_orgaos_exportar_tipos_processos', 'Listagem de relacionamento entre órgãos', $numIdSistema);
+ $numIdRecursoReativar = $this->criarRecurso('pen_map_tipo_processo_reativar', 'Reativar mapeamento de tipo de processo', $numIdSistema);
+
+ $numIdPerfilSeiAdministrador = ScriptSip::obterIdPerfil($numIdSistema, "Administrador");
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_listar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_salvar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_excluir');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_cadastrar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_atualizar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_visualizar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_desativar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_reativar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_importar_tipos_processos');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_exportar_tipos_processos');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_mapeamento');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_mapeamento_excluir');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_padrao');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_padrao_salvar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_reativar');
+
+ // Administrao > Processo Eletrônico Nacional > Mapeamento de Tipos de Processo
+ $numIdItemMenu = $this->criarMenu('Mapeamento de Tipos de Processo', 40, $objItemMenuDTO->getNumIdItemMenu(), $numIdMenu, null, $numIdSistema);
+
+ // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Listar
+ $numIdItemMenuRecuso = $this->criarMenu('Relacionamento entre Órgãos', 20, $numIdItemMenu, $numIdMenu, $numIdRecursoListar, $numIdSistema);
+ $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoListar, $numIdMenu, $numIdItemMenuRecuso);
+
+ // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Exportar Tipo de Processo
+ $numIdItemMenuRecuso = $this->criarMenu('Exportação de Tipos de Processo', 21, $numIdItemMenu, $numIdMenu, $numIdRecursoExportar, $numIdSistema);
+ $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoExportar, $numIdMenu, $numIdItemMenuRecuso);
+
+ // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Reativar Tipo de Processo
+ $numIdItemMenuRecuso = $this->criarMenu('Reativar Tipos de Processo', 22, $numIdItemMenu, $numIdMenu, $numIdRecursoReativar, $numIdSistema);
+ $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoReativar, $numIdMenu, $numIdItemMenuRecuso);
+
+ // Nova versão
+ $this->atualizarNumeroVersao("3.5.0");
+ }
+
+ /**
+ * Cadastrar item do menu em um perfil expecifico
+ *
+ * @return void
+ */
+ private function cadastrarRelPergilItemMenu($numIdPerfil, $numIdRecurso, $numIdMenu, $numIdItemMenuRecuso)
+ {
+ $numIdSistema = $this->getNumIdSistema('SEI');
+
+ $objDTO = new RelPerfilItemMenuDTO();
+ $objBD = new RelPerfilItemMenuBD(BancoSip::getInstance());
+
+ $objDTO->setNumIdPerfil($numIdPerfil);
+ $objDTO->setNumIdSistema($numIdSistema);
+ $objDTO->setNumIdRecurso($numIdRecurso);
+ $objDTO->setNumIdMenu($numIdMenu);
+ $objDTO->setNumIdItemMenu($numIdItemMenuRecuso);
+
+ if ($objBD->contar($objDTO) == 0) {
+ $objBD->cadastrar($objDTO);
+ }
+ }
}
diff --git a/tests_sei3/funcional/phpunit.xml b/tests_sei3/funcional/phpunit.xml
index 3c07c70d1..fc1d4cd30 100755
--- a/tests_sei3/funcional/phpunit.xml
+++ b/tests_sei3/funcional/phpunit.xml
@@ -32,6 +32,8 @@
+
@@ -72,6 +74,8 @@
+
diff --git a/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php
new file mode 100644
index 000000000..02a20ced4
--- /dev/null
+++ b/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php
@@ -0,0 +1,65 @@
+getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']);
+
+ foreach ($tiposProcessos as $tipoProcesso) {
+ $bancoOrgaoA->execute(
+ "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ".
+ "VALUES(?,?,?,?,?,?,?)",
+ array(
+ $tipoProcesso[0],
+ $tipoProcesso[1],
+ $tipoProcesso[2],
+ $tipoProcesso[3],
+ $tipoProcesso[4],
+ $tipoProcesso[5],
+ $tipoProcesso[6]
+ )
+ );
+ }
+
+ return $tiposProcessos;
+ }
+
+ public function deletar($dados = []): void
+ {
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']);
+
+ foreach ($tiposProcessos as $tipoProcesso) {
+ $bancoOrgaoA->execute(
+ "DELETE FROM md_pen_map_tipo_processo WHERE id = ?",
+ array($tipoProcesso[0])
+ );
+ }
+
+ }
+
+ public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S')
+ {
+ $tiposProcessos = array();
+
+ $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+ $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+ $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+
+ return $tiposProcessos;
+ }
+}
\ No newline at end of file
diff --git a/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php
new file mode 100644
index 000000000..f4695d727
--- /dev/null
+++ b/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php
@@ -0,0 +1,91 @@
+consultar();
+ if (!empty($penUnidade)) {
+ $this->atualizar();
+ } else {
+ $this->cadastrar();
+ }
+ }
+
+ /**
+ * Consultar mapeamento de unidade
+ *
+ * @return array|null
+ */
+ public function consultar()
+ {
+ return self::$bancoOrgaoA->query(
+ 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?',
+ array(110000001, self::$dados['id'])
+ );
+ }
+
+ /**
+ * Cadastrar mapeamento de unidade
+ *
+ * @return void
+ */
+ public function cadastrar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ".
+ "VALUES(?, ?, ?, ?)",
+ array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome'])
+ );
+ }
+
+ /**
+ * Atualizar mapeamento de unidade
+ *
+ * @return void
+ */
+ public function atualizar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ".
+ "WHERE id_unidade = ? AND id_unidade_rh = ?",
+ array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id'])
+ );
+ }
+
+ /**
+ * Deletear mapeamento de unidade
+ *
+ * @return void
+ */
+ public function deletar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?",
+ array(110000001, self::$dados['id'])
+ );
+ }
+}
\ No newline at end of file
diff --git a/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php
new file mode 100644
index 000000000..b1c2d304f
--- /dev/null
+++ b/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php
@@ -0,0 +1,43 @@
+gravar();
+
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $bancoOrgaoA->execute(
+ "insert into md_pen_orgao_externo ".
+ "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ".
+ "values (?,?,?,?,?,?,?,?,?,?) ",
+ array(
+ 999999,
+ $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'],
+ $dados['id'], $dados['nome'],
+ 'S', 110000001, date('Y-m-d H:i:s')
+ )
+ );
+
+ return 999999;
+ }
+
+ public function deletar(int $id): void
+ {
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id));
+ }
+}
diff --git a/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php
new file mode 100644
index 000000000..142f3e132
--- /dev/null
+++ b/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php
@@ -0,0 +1,264 @@
+test->frame(null);
+ $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_externos_listar')]";
+ $link = $this->test->byXPath($xpath);
+ $url = $link->attribute('href');
+ $this->test->url($url);
+ }
+
+ /**
+ * Setar parametro para novo mapeamento de orgãos externos
+ *
+ * @return void
+ */
+ public function setarParametros($estrutura, $origem, $destino)
+ {
+ $this->selectRepositorio($estrutura, 'Origem');
+ $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem
+ $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino
+ }
+
+ /**
+ * Seleciona repositório por sigla
+ *
+ * @param string $siglaRepositorio
+ * @param string $origemDestino
+ * @return string
+ */
+ private function selectRepositorio($siglaRepositorio, $origemDestino)
+ {
+ $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino));
+
+ if(isset($siglaRepositorio)){
+ $this->repositorioSelect->selectOptionByLabel($siglaRepositorio);
+ }
+
+ return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value();
+ }
+
+ /**
+ * Seleciona unidade por nome
+ *
+ * @param string $nomeUnidade
+ * @param string $origemDestino
+ * @param ?string $hierarquia
+ * @return string
+ */
+ private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null)
+ {
+ $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino);
+ $this->unidadeInput->clear();
+ $this->unidadeInput->value($nomeUnidade);
+ $this->test->keys(Keys::ENTER);
+ $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) {
+ $bolExisteAlerta=null;
+ $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->value();
+ if(!empty($hierarquia)){
+ $nomeUnidade .= ' - ' . $hierarquia;
+ }
+
+ try{
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }catch(Exception $e){
+ }
+ $testCase->byPartialLinkText($nomeUnidade)->click();
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+
+ return $this->unidadeInput->value();
+ }
+
+ /**
+ * Seleciona unidade por nome
+ *
+ * @param string $nomeUnidade
+ * @param string $origemDestino
+ * @param ?string $hierarquia
+ * @return string
+ */
+ private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null)
+ {
+ $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino);
+ $this->unidadeInput->clear();
+ $this->unidadeInput->value($nomeUnidade);
+ $this->test->keys(Keys::ENTER);
+ $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) {
+ $bolExisteAlerta=null;
+ $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->value();
+ if(!empty($hierarquia)){
+ $nomeUnidade .= ' - ' . $hierarquia;
+ }
+
+ try{
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }catch(Exception $e){
+ }
+ $testCase->byPartialLinkText($nomeUnidade)->click();
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+
+ return $this->unidadeInput->value();
+ }
+
+ /**
+ * Seleciona botão novo da página
+ *
+ * @return void
+ */
+ public function novoMapOrgao()
+ {
+ $this->test->byId("btnNovo")->click();
+ }
+
+ /**
+ * Seleciona botão editar da primeira linha de tabela
+ *
+ * @return void
+ */
+ public function editarMapOrgao()
+ {
+ $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click();
+ }
+
+ /**
+ * Selecionar primeira checkbox de exclusão
+ * Seleciona botão excluir
+ * Seleciona botão de confirmação
+ *
+ * @return void
+ */
+ public function selecionarExcluirMapOrgao()
+ {
+ $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click();
+ $this->test->byId("btnExcluir")->click();
+ $this->test->acceptAlert();
+
+ // return $this->alertTextAndClose();
+ }
+
+ /**
+ * Selcionar botão salvar da página
+ *
+ * @return void
+ */
+ public function salvar()
+ {
+ $this->test->byId("btnSalvar")->click();
+ }
+
+ public function abrirSelecaoDeArquivoParaImportacao()
+ {
+ $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click();
+ sleep(2);
+ $fileChooser = $this->test->byId('importArquivoCsv');
+ $this->test->waitUntil(function ($testCase) use ($fileChooser) {
+ $fileChooser
+ ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv')
+ ->keys(Keys::CLEAR);
+ },PEN_WAIT_TIMEOUT);
+ $this->test->waitUntil(function($testCase) {
+ return true;
+ });
+ }
+
+ /**
+ * Buscar orgão de origem por nome
+ *
+ * @param string $origem
+ * @return string|null
+ */
+ public function buscarOrgaoOrigem($origem)
+ {
+ try {
+ $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text();
+ return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ?
+ $orgaoOrigem :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+
+ /**
+ * Buscar orgão de destino por nome
+ *
+ * @param string $origem
+ * @return string|null
+ */
+ public function buscarOrgaoDestino($destino)
+ {
+ try {
+ $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text();
+ return !empty($orgaoDestino) && !is_null($orgaoDestino) ?
+ $orgaoDestino :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+
+ /**
+ * Buscar mensagem de alerta da página
+ *
+ * @return string
+ */
+ public function buscarMensagemAlerta()
+ {
+ $bolExisteAlerta = $this->alertTextAndClose();
+ $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null;
+
+ return $bolExisteAlerta;
+ }
+
+ /**
+ * Lispar campo de pesquisa
+ * Colocar texto para pesquisa
+ * Clicar no bot?o pesquisar
+ *
+ * @param string $textoPesquisa
+ * @return void
+ */
+ public function selecionarPesquisa($textoPesquisa)
+ {
+ $this->test->byId('txtSiglaOrigem')->clear();
+ $this->test->byId('txtSiglaOrigem')->value($textoPesquisa);
+ $this->test->byId("btnPesquisar")->click();
+ }
+
+ /**
+ * Buscar item de tabela por nome
+ *
+ * @param string $nome
+ * @return string|null
+ */
+ public function buscarNome($nome)
+ {
+ try {
+ $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text();
+ return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ?
+ $nomeSelecionado :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+}
diff --git a/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php
new file mode 100644
index 000000000..64d01ac84
--- /dev/null
+++ b/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php
@@ -0,0 +1,92 @@
+test->frame(null);
+ $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_exportar_tipos_processos')]";
+ $link = $this->test->byXPath($xpath);
+ $url = $link->attribute('href');
+ $this->test->url($url);
+ }
+
+ /**
+ * Seleciona botão editar da primeira linha de tabela
+ *
+ * @return void
+ */
+ public function selecionarParaExportar()
+ {
+ $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click();
+ $this->test->byXPath("(//input[@id='chkInfraItem2'])")->click();
+ $this->test->byXPath("(//input[@id='chkInfraItem3'])")->click();
+ $this->test->byXPath("(//input[@id='chkInfraItem5'])")->click();
+ $this->test->byId("btnExportar")->click();
+ }
+
+ public function verificarExisteBotao(string $nomeBtn)
+ {
+ try {
+ return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text();
+ } catch (Exception $e) {
+ return null;
+ }
+ }
+
+ public function verificarQuantidadeDeLinhasSelecionadas()
+ {
+ $this->test->waitUntil(function($testCase) {
+ $trs = $this->test->byId('tableExportar')
+ ->elements($this->test->using('css selector')->value('tr'));
+ $testCase->assertEquals(count($trs), 5);
+ return true;
+ });
+ }
+
+ public function btnExportar()
+ {
+ $this->test->byId("btnExportarModal")->click();
+ sleep(5);
+ }
+
+ /**
+ * Lispar campo de pesquisa
+ * Colocar texto para pesquisa
+ *
+ * @return void
+ */
+ public function selecionarPesquisa()
+ {
+ $this->test->byId('txtNomeTipoProcessoPesquisa')->clear();
+ $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria');
+ $this->test->byId("sbmPesquisar")->click();
+ }
+
+ /**
+ * Buscar se foi pesquisado
+ *
+ * @return void
+ */
+ public function buscarPesquisa()
+ {
+ try {
+ $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text();
+ return !empty($elementos) && !is_null($elementos);
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+}
diff --git a/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php
new file mode 100644
index 000000000..794a2f834
--- /dev/null
+++ b/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php
@@ -0,0 +1,49 @@
+test->frame(null);
+ $xpath = "//a[contains(@href, 'acao=pen_map_tipo_processo_reativar')]";
+ $link = $this->test->byXPath($xpath);
+ $url = $link->attribute('href');
+ $this->test->url($url);
+ }
+
+ public function reativarMapeamento()
+ {
+ $this->test->byXPath("//a[contains(@class, 'reativar')]")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ public function reativarMapeamentoCheckbox()
+ {
+ $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click();
+ $this->test->byXPath("(//input[@id='chkInfraItem1'])")->click();
+ $this->test->byId("btnReativar")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ /**
+ * Buscar mensagem de alerta da página
+ *
+ * @return string
+ */
+ public function buscarMensagemAlerta()
+ {
+ $bolExisteAlerta = $this->alertTextAndClose();
+ $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null;
+
+ return $bolExisteAlerta;
+ }
+}
diff --git a/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php
new file mode 100644
index 000000000..ce646c79c
--- /dev/null
+++ b/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php
@@ -0,0 +1,70 @@
+test->frame(null);
+ $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_externos_listar')]";
+ $link = $this->test->byXPath($xpath);
+ $url = $link->attribute('href');
+ $this->test->url($url);
+ }
+
+ public function reativarMapeamento()
+ {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo");
+ $this->test->byXPath("//a[contains(@class, 'reativar')]")->click();
+ $bolExisteAlerta = $this->alertTextAndClose();
+ $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null;
+
+ return $this->alertTextAndClose();
+ }
+
+ public function reativarMapeamentoCheckbox()
+ {
+ $this->test->byXPath("(//input[@id='chkInfraItem0'])[1]")->click();
+ $this->test->byId("btnReativar")->click();
+ $bolExisteAlerta = $this->alertTextAndClose();
+ $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null;
+
+ return $this->alertTextAndClose();
+ }
+
+ public function desativarMapeamento()
+ {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo");
+ $this->test->byXPath("//a[contains(@class, 'desativar')]")->click();
+ $bolExisteAlerta = $this->alertTextAndClose();
+ $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null;
+
+ return $this->alertTextAndClose();
+ }
+
+ public function desativarMapeamentoCheckbox()
+ {
+ $this->test->byXPath("(//input[@id='chkInfraItem0'])[1]")->click();
+ $this->test->byId("btnDesativar")->click();
+ $bolExisteAlerta = $this->alertTextAndClose();
+ $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null;
+
+ return $this->alertTextAndClose();
+ }
+
+ public function selectEstado($estado)
+ {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado);
+ }
+
+ public function mensagemValidacao($status)
+ {
+ return utf8_encode("Relacionamento entre Órgãos foi {$status} com sucesso.");
+ }
+}
diff --git a/tests_sei3/funcional/tests/CenarioBaseTestCase.php b/tests_sei3/funcional/tests/CenarioBaseTestCase.php
index cf14d36da..235f37a86 100755
--- a/tests_sei3/funcional/tests/CenarioBaseTestCase.php
+++ b/tests_sei3/funcional/tests/CenarioBaseTestCase.php
@@ -38,6 +38,12 @@ class CenarioBaseTestCase extends Selenium2TestCase
protected $paginaAnexarProcesso = null;
protected $paginaCancelarDocumento = null;
protected $paginaTramitarProcessoEmLote = null;
+ protected $paginaMoverDocumento = null;
+ protected $paginaCadastroOrgaoExterno = null;
+ protected $paginaCadastroMapEnvioCompDigitais = null;
+ protected $paginaTramiteMapeamentoOrgaoExterno = null;
+ protected $paginaExportarTiposProcesso = null;
+ protected $paginaTipoProcessoReativar = null;
public function setUpPage(): void
{
@@ -56,6 +62,10 @@ public function setUpPage(): void
$this->paginaCancelarDocumento = new PaginaCancelarDocumento($this);
$this->paginaMoverDocumento = new PaginaMoverDocumento($this);
$this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this);
+ $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this);
+ $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this);
+ $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this);
+ $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this);
$this->currentWindow()->maximize();
}
@@ -192,6 +202,7 @@ protected function definirContextoTeste($nomeContexto)
'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'),
'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'),
'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'),
+ 'SIGLA_ESTRUTURA' => constant($nomeContexto . '_SIGLA_ESTRUTURA'),
'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'),
'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'),
'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'),
@@ -221,6 +232,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha)
$this->url($url);
PaginaLogin::executarAutenticacao($this, $login, $senha);
PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade);
+ $this->url($url);
}
protected function selecionarUnidadeInterna($unidadeDestino)
diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php
new file mode 100644
index 000000000..221f2a982
--- /dev/null
+++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php
@@ -0,0 +1,139 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_desativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Ativo');
+ $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento();
+
+ $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('desativado');
+ $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert);
+ }
+
+ /**
+ * Teste de reativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Inativo');
+ $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento();
+
+ $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('reativado');
+ $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_desativacao_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Ativo');
+ $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox();
+
+ $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('desativado');
+ $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert);
+
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativar_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Inativo');
+ $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox();
+
+ $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('reativado');
+ $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert);
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php
new file mode 100644
index 000000000..7f8ae3e74
--- /dev/null
+++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php
@@ -0,0 +1,74 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste para excluir de mapeamento de orgão exteno
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_excluir_mapeamento_orgao_externo()
+ {
+ // Configuração do dados para teste do cenário
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId);
+ sleep(1);
+ $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $menssagemValidacao = utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.');
+
+ $this->assertStringContainsString(
+ $menssagemValidacao,
+ $mensagemRetornoAlert
+ );
+ }
+
+ function tearDown(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDown();
+ }
+}
diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php
new file mode 100644
index 000000000..4c237b093
--- /dev/null
+++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php
@@ -0,0 +1,63 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos();
+
+ $this->paginaExportarTiposProcesso->selecionarParaExportar();
+ $this->assertEquals(
+ $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'),
+ 'Exportar'
+ );
+ $this->assertEquals(
+ $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'),
+ 'Fechar'
+ );
+ $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas();
+ $this->paginaExportarTiposProcesso->btnExportar();
+ }
+
+ /**
+ * Teste para pesquisar tipos de processos
+ *
+ * @return void
+ */
+ public function test_pesquisar_tipos_de_processos()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos();
+ $this->paginaExportarTiposProcesso->selecionarPesquisa();
+ sleep(1);
+ $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa());
+ }
+}
diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php
new file mode 100644
index 000000000..61e47e501
--- /dev/null
+++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php
@@ -0,0 +1,107 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+
+ $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A);
+ $importacaoTiposProcessoFixture->cadastrar([
+ 'idMapeamento' => self::$penOrgaoExternoId,
+ 'sinAtivo' => 'N'
+ ]);
+ }
+
+ /**
+ * Teste de reativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar();
+
+ $this->paginaTipoProcessoReativar->reativarMapeamento();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.');
+ $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert);
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativar_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar();
+
+ $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.');
+ $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert);
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A);
+ $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php
new file mode 100644
index 000000000..b537d57f2
--- /dev/null
+++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php
@@ -0,0 +1,135 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE']
+ ]);
+ $penMapUnidadesFixture->gravar();
+ }
+
+ /**
+ * Teste de cadastro de novo mapeamento entre ogrãos
+ *
+ * @return void
+ */
+ public function test_cadastrar_novo_mapeamento_orgao_externo()
+ {
+ // Configuração do dados para teste do cenário
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+ $this->paginaCadastroOrgaoExterno->novoMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'),
+ $mensagem
+ );
+ }
+
+ /**
+ * Teste para cadastro de mapeamento de orgão exteno já existente
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+ $this->paginaCadastroOrgaoExterno->novoMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Cadastro de relacionamento entre órgãos já existente.'),
+ $mensagem
+ );
+ }
+
+ /**
+ * Teste para editar mapeamento de orgão exteno
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_editar_mapeamento_orgao_externo()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+
+ $this->paginaCadastroOrgaoExterno->editarMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'),
+ $mensagem
+ );
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php
new file mode 100644
index 000000000..8b5be9979
--- /dev/null
+++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php
@@ -0,0 +1,72 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste para pesquisar mapeamento entre orgãos
+ *
+ * @Depends test_desativacao_mapeamento_orgao_externo
+ *
+ * @return void
+ */
+ public function test_pesquisar_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+
+ // Buscar pesquisa vazia
+ $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE'] . 'B');
+ $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']);
+ $this->assertNull($nomeRepositorioCadastrado);
+
+ // Buscar pesquisa com sucesso
+ $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']);
+ $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']);
+ $this->assertNotNull($nomeRepositorioCadastrado);
+ }
+
+ function tearDown(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDown();
+ }
+}
diff --git a/tests_sei4/funcional/phpunit.xml b/tests_sei4/funcional/phpunit.xml
index 5db7c46c4..c3abae0d7 100755
--- a/tests_sei4/funcional/phpunit.xml
+++ b/tests_sei4/funcional/phpunit.xml
@@ -34,6 +34,8 @@
+
@@ -74,6 +76,8 @@
+
diff --git a/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php
new file mode 100644
index 000000000..02a20ced4
--- /dev/null
+++ b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php
@@ -0,0 +1,65 @@
+getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']);
+
+ foreach ($tiposProcessos as $tipoProcesso) {
+ $bancoOrgaoA->execute(
+ "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ".
+ "VALUES(?,?,?,?,?,?,?)",
+ array(
+ $tipoProcesso[0],
+ $tipoProcesso[1],
+ $tipoProcesso[2],
+ $tipoProcesso[3],
+ $tipoProcesso[4],
+ $tipoProcesso[5],
+ $tipoProcesso[6]
+ )
+ );
+ }
+
+ return $tiposProcessos;
+ }
+
+ public function deletar($dados = []): void
+ {
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']);
+
+ foreach ($tiposProcessos as $tipoProcesso) {
+ $bancoOrgaoA->execute(
+ "DELETE FROM md_pen_map_tipo_processo WHERE id = ?",
+ array($tipoProcesso[0])
+ );
+ }
+
+ }
+
+ public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S')
+ {
+ $tiposProcessos = array();
+
+ $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+ $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+ $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+
+ return $tiposProcessos;
+ }
+}
\ No newline at end of file
diff --git a/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php
new file mode 100644
index 000000000..f4695d727
--- /dev/null
+++ b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php
@@ -0,0 +1,91 @@
+consultar();
+ if (!empty($penUnidade)) {
+ $this->atualizar();
+ } else {
+ $this->cadastrar();
+ }
+ }
+
+ /**
+ * Consultar mapeamento de unidade
+ *
+ * @return array|null
+ */
+ public function consultar()
+ {
+ return self::$bancoOrgaoA->query(
+ 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?',
+ array(110000001, self::$dados['id'])
+ );
+ }
+
+ /**
+ * Cadastrar mapeamento de unidade
+ *
+ * @return void
+ */
+ public function cadastrar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ".
+ "VALUES(?, ?, ?, ?)",
+ array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome'])
+ );
+ }
+
+ /**
+ * Atualizar mapeamento de unidade
+ *
+ * @return void
+ */
+ public function atualizar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ".
+ "WHERE id_unidade = ? AND id_unidade_rh = ?",
+ array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id'])
+ );
+ }
+
+ /**
+ * Deletear mapeamento de unidade
+ *
+ * @return void
+ */
+ public function deletar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?",
+ array(110000001, self::$dados['id'])
+ );
+ }
+}
\ No newline at end of file
diff --git a/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php
new file mode 100644
index 000000000..5191cb637
--- /dev/null
+++ b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php
@@ -0,0 +1,43 @@
+gravar();
+
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $bancoOrgaoA->execute(
+ "insert into md_pen_orgao_externo ".
+ "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ".
+ "values (?,?,?,?,?,?,?,?,?,?) ",
+ array(
+ 999999,
+ $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'],
+ $dados['id'], $dados['nome'],
+ 'S', 110000001, date('Y-m-d H:i:s')
+ )
+ );
+
+ return 999999;
+ }
+
+ public function deletar(int $id): void
+ {
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id));
+ }
+}
diff --git a/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php
new file mode 100644
index 000000000..d13d5d4fb
--- /dev/null
+++ b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php
@@ -0,0 +1,257 @@
+test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos'));
+ $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click();
+ }
+
+ /**
+ * Setar parametro para novo mapeamento de orgãos externos
+ *
+ * @return void
+ */
+ public function setarParametros($estrutura, $origem, $destino)
+ {
+ $this->selectRepositorio($estrutura, 'Origem');
+ $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem
+ $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino
+ }
+
+ /**
+ * Seleciona repositório por sigla
+ *
+ * @param string $siglaRepositorio
+ * @param string $origemDestino
+ * @return string
+ */
+ private function selectRepositorio($siglaRepositorio, $origemDestino)
+ {
+ $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino));
+
+ if(isset($siglaRepositorio)){
+ $this->repositorioSelect->selectOptionByLabel($siglaRepositorio);
+ }
+
+ return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value();
+ }
+
+ /**
+ * Seleciona unidade por nome
+ *
+ * @param string $nomeUnidade
+ * @param string $origemDestino
+ * @param ?string $hierarquia
+ * @return string
+ */
+ private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null)
+ {
+ $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino);
+ $this->unidadeInput->clear();
+ $this->unidadeInput->value($nomeUnidade);
+ $this->test->keys(Keys::ENTER);
+ $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) {
+ $bolExisteAlerta=null;
+ $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->value();
+ if(!empty($hierarquia)){
+ $nomeUnidade .= ' - ' . $hierarquia;
+ }
+
+ try{
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }catch(Exception $e){
+ }
+ $testCase->byPartialLinkText($nomeUnidade)->click();
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+
+ return $this->unidadeInput->value();
+ }
+
+ /**
+ * Seleciona unidade por nome
+ *
+ * @param string $nomeUnidade
+ * @param string $origemDestino
+ * @param ?string $hierarquia
+ * @return string
+ */
+ private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null)
+ {
+ $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino);
+ $this->unidadeInput->clear();
+ $this->unidadeInput->value($nomeUnidade);
+ $this->test->keys(Keys::ENTER);
+ $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) {
+ $bolExisteAlerta=null;
+ $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->value();
+ if(!empty($hierarquia)){
+ $nomeUnidade .= ' - ' . $hierarquia;
+ }
+
+ try{
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }catch(Exception $e){
+ }
+ $testCase->byPartialLinkText($nomeUnidade)->click();
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+
+ return $this->unidadeInput->value();
+ }
+
+ /**
+ * Seleciona botão novo da página
+ *
+ * @return void
+ */
+ public function novoMapOrgao()
+ {
+ $this->test->byId("btnNovo")->click();
+ }
+
+ /**
+ * Seleciona botão editar da primeira linha de tabela
+ *
+ * @return void
+ */
+ public function editarMapOrgao()
+ {
+ $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click();
+ }
+
+ /**
+ * Selecionar primeira checkbox de exclusão
+ * Seleciona botão excluir
+ * Seleciona botão de confirmação
+ *
+ * @return void
+ */
+ public function selecionarExcluirMapOrgao()
+ {
+ $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click();
+ $this->test->byId("btnExcluir")->click();
+ $this->test->acceptAlert();
+ }
+
+ /**
+ * Selcionar botão salvar da página
+ *
+ * @return void
+ */
+ public function salvar()
+ {
+ $this->test->byId("btnSalvar")->click();
+ }
+
+ public function abrirSelecaoDeArquivoParaImportacao()
+ {
+ $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click();
+ sleep(2);
+ $fileChooser = $this->test->byId('importArquivoCsv');
+ $this->test->waitUntil(function ($testCase) use ($fileChooser) {
+ $fileChooser
+ ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv')
+ ->keys(Keys::CLEAR);
+ },PEN_WAIT_TIMEOUT);
+ $this->test->waitUntil(function($testCase) {
+ return true;
+ });
+ }
+
+ /**
+ * Buscar orgão de origem por nome
+ *
+ * @param string $origem
+ * @return string|null
+ */
+ public function buscarOrgaoOrigem($origem)
+ {
+ try {
+ $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text();
+ return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ?
+ $orgaoOrigem :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+
+ /**
+ * Buscar orgão de destino por nome
+ *
+ * @param string $origem
+ * @return string|null
+ */
+ public function buscarOrgaoDestino($destino)
+ {
+ try {
+ $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text();
+ return !empty($orgaoDestino) && !is_null($orgaoDestino) ?
+ $orgaoDestino :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+
+ /**
+ * Buscar mensagem de alerta da página
+ *
+ * @return string
+ */
+ public function buscarMensagemAlerta()
+ {
+ $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]");
+ return !empty($alerta->text()) ? $alerta->text() : "";
+ }
+
+ /**
+ * Lispar campo de pesquisa
+ * Colocar texto para pesquisa
+ * Clicar no bot?o pesquisar
+ *
+ * @param string $textoPesquisa
+ * @return void
+ */
+ public function selecionarPesquisa($textoPesquisa)
+ {
+ $this->test->byId('txtSiglaOrigem')->clear();
+ $this->test->byId('txtSiglaOrigem')->value($textoPesquisa);
+ $this->test->byId("btnPesquisar")->click();
+ }
+
+ /**
+ * Buscar item de tabela por nome
+ *
+ * @param string $nome
+ * @return string|null
+ */
+ public function buscarNome($nome)
+ {
+ try {
+ $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text();
+ return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ?
+ $nomeSelecionado :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+}
diff --git a/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php
new file mode 100644
index 000000000..e9b4f2f31
--- /dev/null
+++ b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php
@@ -0,0 +1,89 @@
+test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo'));
+ $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click();
+ }
+
+ /**
+ * Seleciona botão editar da primeira linha de tabela
+ *
+ * @return void
+ */
+ public function selecionarParaExportar()
+ {
+ $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click();
+ $this->test->byXPath("(//label[@for='chkInfraItem2'])[1]")->click();
+ $this->test->byXPath("(//label[@for='chkInfraItem3'])[1]")->click();
+ $this->test->byXPath("(//label[@for='chkInfraItem5'])[1]")->click();
+ $this->test->byId("btnExportar")->click();
+ }
+
+ public function verificarExisteBotao(string $nomeBtn)
+ {
+ try {
+ return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text();
+ } catch (Exception $e) {
+ return null;
+ }
+ }
+
+ public function verificarQuantidadeDeLinhasSelecionadas()
+ {
+ $this->test->waitUntil(function($testCase) {
+ $trs = $this->test->byId('tableExportar')
+ ->elements($this->test->using('css selector')->value('tr'));
+ $testCase->assertEquals(count($trs), 5);
+ return true;
+ });
+ }
+
+ public function btnExportar()
+ {
+ $this->test->byId("btnExportarModal")->click();
+ sleep(5);
+ }
+
+ /**
+ * Lispar campo de pesquisa
+ * Colocar texto para pesquisa
+ *
+ * @return void
+ */
+ public function selecionarPesquisa()
+ {
+ $this->test->byId('txtNomeTipoProcessoPesquisa')->clear();
+ $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria');
+ $this->test->byId("sbmPesquisar")->click();
+ }
+
+ /**
+ * Buscar se foi pesquisado
+ *
+ * @return void
+ */
+ public function buscarPesquisa()
+ {
+ try {
+ $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text();
+ return !empty($elementos) && !is_null($elementos);
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+}
diff --git a/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php
new file mode 100644
index 000000000..0db1c2bbe
--- /dev/null
+++ b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php
@@ -0,0 +1,32 @@
+test->byId("txtInfraPesquisarMenu")->value("Reativar Tipos de Processo");
+ $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click();
+ }
+
+ public function reativarMapeamento()
+ {
+ $this->test->byXPath("//a[contains(@class, 'reativar')]")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ public function reativarMapeamentoCheckbox()
+ {
+ $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click();
+ $this->test->byId("btnReativar")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+}
diff --git a/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php
new file mode 100644
index 000000000..90fbb578d
--- /dev/null
+++ b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php
@@ -0,0 +1,54 @@
+test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos'));
+
+ $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click();
+ $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click();
+ }
+
+ public function reativarMapeamento () {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo");
+ $this->test->byXPath("//a[contains(@class, 'reativar')]")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ public function reativarMapeamentoCheckbox() {
+ $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click();
+ $this->test->byId("btnReativar")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+
+ public function desativarMapeamento () {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo");
+ $this->test->byXPath("//a[contains(@class, 'desativar')]")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ public function desativarMapeamentoCheckbox() {
+ $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click();
+ $this->test->byId("btnDesativar")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+
+ public function selectEstado($estado) {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado);
+ }
+}
diff --git a/tests_sei4/funcional/tests/CenarioBaseTestCase.php b/tests_sei4/funcional/tests/CenarioBaseTestCase.php
index cf14d36da..9521cd56b 100755
--- a/tests_sei4/funcional/tests/CenarioBaseTestCase.php
+++ b/tests_sei4/funcional/tests/CenarioBaseTestCase.php
@@ -38,6 +38,11 @@ class CenarioBaseTestCase extends Selenium2TestCase
protected $paginaAnexarProcesso = null;
protected $paginaCancelarDocumento = null;
protected $paginaTramitarProcessoEmLote = null;
+ protected $paginaMoverDocumento = null;
+ protected $paginaCadastroOrgaoExterno = null;
+ protected $paginaCadastroMapEnvioCompDigitais = null;
+ protected $paginaExportarTiposProcesso = null;
+ protected $paginaTipoProcessoReativar = null;
public function setUpPage(): void
{
@@ -56,6 +61,10 @@ public function setUpPage(): void
$this->paginaCancelarDocumento = new PaginaCancelarDocumento($this);
$this->paginaMoverDocumento = new PaginaMoverDocumento($this);
$this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this);
+ $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this);
+ $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this);
+ $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this);
+ $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this);
$this->currentWindow()->maximize();
}
@@ -192,6 +201,7 @@ protected function definirContextoTeste($nomeContexto)
'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'),
'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'),
'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'),
+ 'SIGLA_ESTRUTURA' => constant($nomeContexto . '_SIGLA_ESTRUTURA'),
'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'),
'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'),
'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'),
@@ -221,6 +231,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha)
$this->url($url);
PaginaLogin::executarAutenticacao($this, $login, $senha);
PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade);
+ $this->url($url);
}
protected function selecionarUnidadeInterna($unidadeDestino)
diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php
new file mode 100644
index 000000000..f053a0790
--- /dev/null
+++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php
@@ -0,0 +1,142 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_desativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de reativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_desativacao_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativar_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+}
diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php
new file mode 100644
index 000000000..e0712b15f
--- /dev/null
+++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php
@@ -0,0 +1,71 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste para excluir de mapeamento de orgão exteno
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_excluir_mapeamento_orgao_externo()
+ {
+ // Configuração do dados para teste do cenário
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId);
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'),
+ $mensagem
+ );
+ }
+
+ function tearDown(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDown();
+ }
+}
diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php
new file mode 100644
index 000000000..4c237b093
--- /dev/null
+++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php
@@ -0,0 +1,63 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos();
+
+ $this->paginaExportarTiposProcesso->selecionarParaExportar();
+ $this->assertEquals(
+ $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'),
+ 'Exportar'
+ );
+ $this->assertEquals(
+ $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'),
+ 'Fechar'
+ );
+ $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas();
+ $this->paginaExportarTiposProcesso->btnExportar();
+ }
+
+ /**
+ * Teste para pesquisar tipos de processos
+ *
+ * @return void
+ */
+ public function test_pesquisar_tipos_de_processos()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos();
+ $this->paginaExportarTiposProcesso->selecionarPesquisa();
+ sleep(1);
+ $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa());
+ }
+}
diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php
new file mode 100644
index 000000000..9543d181c
--- /dev/null
+++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php
@@ -0,0 +1,105 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+
+ $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A);
+ $importacaoTiposProcessoFixture->cadastrar([
+ 'idMapeamento' => self::$penOrgaoExternoId,
+ 'sinAtivo' => 'N'
+ ]);
+ }
+
+ /**
+ * Teste de reativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar();
+
+ $this->paginaTipoProcessoReativar->reativarMapeamento();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativar_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar();
+
+ $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A);
+ $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php
new file mode 100644
index 000000000..1675b805e
--- /dev/null
+++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php
@@ -0,0 +1,145 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE']
+ ]);
+ $penMapUnidadesFixture->gravar();
+ }
+
+ /**
+ * Teste de cadastro de novo mapeamento entre ogrãos
+ *
+ * @return void
+ */
+ public function test_cadastrar_novo_mapeamento_orgao_externo()
+ {
+ // Configuração do dados para teste do cenário
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+ $this->paginaCadastroOrgaoExterno->novoMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']);
+ $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']);
+
+ $this->assertNotNull($orgaoOrigem);
+ $this->assertNotNull($orgaoDestino);
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'),
+ $mensagem
+ );
+ }
+
+ /**
+ * Teste para cadastro de mapeamento de orgão exteno já existente
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+ $this->paginaCadastroOrgaoExterno->novoMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Cadastro de relacionamento entre órgãos já existente.'),
+ $mensagem
+ );
+ }
+
+ /**
+ * Teste para editar mapeamento de orgão exteno
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_editar_mapeamento_orgao_externo()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+
+ $this->paginaCadastroOrgaoExterno->editarMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']);
+ $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']);
+
+ $this->assertNotNull($orgaoOrigem);
+ $this->assertNotNull($orgaoDestino);
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'),
+ $mensagem
+ );
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php
new file mode 100644
index 000000000..8b5be9979
--- /dev/null
+++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php
@@ -0,0 +1,72 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste para pesquisar mapeamento entre orgãos
+ *
+ * @Depends test_desativacao_mapeamento_orgao_externo
+ *
+ * @return void
+ */
+ public function test_pesquisar_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+
+ // Buscar pesquisa vazia
+ $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE'] . 'B');
+ $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']);
+ $this->assertNull($nomeRepositorioCadastrado);
+
+ // Buscar pesquisa com sucesso
+ $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']);
+ $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']);
+ $this->assertNotNull($nomeRepositorioCadastrado);
+ }
+
+ function tearDown(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDown();
+ }
+}
diff --git a/tests_super/funcional/phpunit.xml b/tests_super/funcional/phpunit.xml
index d2d5f939e..bb6075a27 100644
--- a/tests_super/funcional/phpunit.xml
+++ b/tests_super/funcional/phpunit.xml
@@ -34,6 +34,8 @@
+
@@ -64,7 +66,7 @@
-
+
@@ -74,6 +76,8 @@
+
diff --git a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php
new file mode 100644
index 000000000..02a20ced4
--- /dev/null
+++ b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php
@@ -0,0 +1,65 @@
+getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']);
+
+ foreach ($tiposProcessos as $tipoProcesso) {
+ $bancoOrgaoA->execute(
+ "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ".
+ "VALUES(?,?,?,?,?,?,?)",
+ array(
+ $tipoProcesso[0],
+ $tipoProcesso[1],
+ $tipoProcesso[2],
+ $tipoProcesso[3],
+ $tipoProcesso[4],
+ $tipoProcesso[5],
+ $tipoProcesso[6]
+ )
+ );
+ }
+
+ return $tiposProcessos;
+ }
+
+ public function deletar($dados = []): void
+ {
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']);
+
+ foreach ($tiposProcessos as $tipoProcesso) {
+ $bancoOrgaoA->execute(
+ "DELETE FROM md_pen_map_tipo_processo WHERE id = ?",
+ array($tipoProcesso[0])
+ );
+ }
+
+ }
+
+ public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S')
+ {
+ $tiposProcessos = array();
+
+ $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+ $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+ $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')];
+
+ return $tiposProcessos;
+ }
+}
\ No newline at end of file
diff --git a/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php
new file mode 100644
index 000000000..f4695d727
--- /dev/null
+++ b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php
@@ -0,0 +1,91 @@
+consultar();
+ if (!empty($penUnidade)) {
+ $this->atualizar();
+ } else {
+ $this->cadastrar();
+ }
+ }
+
+ /**
+ * Consultar mapeamento de unidade
+ *
+ * @return array|null
+ */
+ public function consultar()
+ {
+ return self::$bancoOrgaoA->query(
+ 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?',
+ array(110000001, self::$dados['id'])
+ );
+ }
+
+ /**
+ * Cadastrar mapeamento de unidade
+ *
+ * @return void
+ */
+ public function cadastrar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ".
+ "VALUES(?, ?, ?, ?)",
+ array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome'])
+ );
+ }
+
+ /**
+ * Atualizar mapeamento de unidade
+ *
+ * @return void
+ */
+ public function atualizar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ".
+ "WHERE id_unidade = ? AND id_unidade_rh = ?",
+ array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id'])
+ );
+ }
+
+ /**
+ * Deletear mapeamento de unidade
+ *
+ * @return void
+ */
+ public function deletar(): void
+ {
+ self::$bancoOrgaoA->execute(
+ "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?",
+ array(110000001, self::$dados['id'])
+ );
+ }
+}
\ No newline at end of file
diff --git a/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php
new file mode 100644
index 000000000..25aebcda3
--- /dev/null
+++ b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php
@@ -0,0 +1,43 @@
+gravar();
+
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $bancoOrgaoA->execute(
+ "insert into md_pen_orgao_externo ".
+ "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ".
+ "values (?,?,?,?,?,?,?,?,?,?) ",
+ array(
+ 999999,
+ $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'],
+ $dados['id'], $dados['nome'],
+ 'S', 110000001, date('Y-m-d H:i:s')
+ )
+ );
+
+ return 999999;
+ }
+
+ public function deletar(int $id): void
+ {
+ $bancoOrgaoA = new DatabaseUtils(self::$contexto);
+ $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id));
+ }
+}
\ No newline at end of file
diff --git a/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php
new file mode 100644
index 000000000..d13d5d4fb
--- /dev/null
+++ b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php
@@ -0,0 +1,257 @@
+test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos'));
+ $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click();
+ }
+
+ /**
+ * Setar parametro para novo mapeamento de orgãos externos
+ *
+ * @return void
+ */
+ public function setarParametros($estrutura, $origem, $destino)
+ {
+ $this->selectRepositorio($estrutura, 'Origem');
+ $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem
+ $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino
+ }
+
+ /**
+ * Seleciona repositório por sigla
+ *
+ * @param string $siglaRepositorio
+ * @param string $origemDestino
+ * @return string
+ */
+ private function selectRepositorio($siglaRepositorio, $origemDestino)
+ {
+ $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino));
+
+ if(isset($siglaRepositorio)){
+ $this->repositorioSelect->selectOptionByLabel($siglaRepositorio);
+ }
+
+ return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value();
+ }
+
+ /**
+ * Seleciona unidade por nome
+ *
+ * @param string $nomeUnidade
+ * @param string $origemDestino
+ * @param ?string $hierarquia
+ * @return string
+ */
+ private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null)
+ {
+ $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino);
+ $this->unidadeInput->clear();
+ $this->unidadeInput->value($nomeUnidade);
+ $this->test->keys(Keys::ENTER);
+ $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) {
+ $bolExisteAlerta=null;
+ $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->value();
+ if(!empty($hierarquia)){
+ $nomeUnidade .= ' - ' . $hierarquia;
+ }
+
+ try{
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }catch(Exception $e){
+ }
+ $testCase->byPartialLinkText($nomeUnidade)->click();
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+
+ return $this->unidadeInput->value();
+ }
+
+ /**
+ * Seleciona unidade por nome
+ *
+ * @param string $nomeUnidade
+ * @param string $origemDestino
+ * @param ?string $hierarquia
+ * @return string
+ */
+ private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null)
+ {
+ $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino);
+ $this->unidadeInput->clear();
+ $this->unidadeInput->value($nomeUnidade);
+ $this->test->keys(Keys::ENTER);
+ $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) {
+ $bolExisteAlerta=null;
+ $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->value();
+ if(!empty($hierarquia)){
+ $nomeUnidade .= ' - ' . $hierarquia;
+ }
+
+ try{
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }catch(Exception $e){
+ }
+ $testCase->byPartialLinkText($nomeUnidade)->click();
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+
+ return $this->unidadeInput->value();
+ }
+
+ /**
+ * Seleciona botão novo da página
+ *
+ * @return void
+ */
+ public function novoMapOrgao()
+ {
+ $this->test->byId("btnNovo")->click();
+ }
+
+ /**
+ * Seleciona botão editar da primeira linha de tabela
+ *
+ * @return void
+ */
+ public function editarMapOrgao()
+ {
+ $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click();
+ }
+
+ /**
+ * Selecionar primeira checkbox de exclusão
+ * Seleciona botão excluir
+ * Seleciona botão de confirmação
+ *
+ * @return void
+ */
+ public function selecionarExcluirMapOrgao()
+ {
+ $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click();
+ $this->test->byId("btnExcluir")->click();
+ $this->test->acceptAlert();
+ }
+
+ /**
+ * Selcionar botão salvar da página
+ *
+ * @return void
+ */
+ public function salvar()
+ {
+ $this->test->byId("btnSalvar")->click();
+ }
+
+ public function abrirSelecaoDeArquivoParaImportacao()
+ {
+ $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click();
+ sleep(2);
+ $fileChooser = $this->test->byId('importArquivoCsv');
+ $this->test->waitUntil(function ($testCase) use ($fileChooser) {
+ $fileChooser
+ ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv')
+ ->keys(Keys::CLEAR);
+ },PEN_WAIT_TIMEOUT);
+ $this->test->waitUntil(function($testCase) {
+ return true;
+ });
+ }
+
+ /**
+ * Buscar orgão de origem por nome
+ *
+ * @param string $origem
+ * @return string|null
+ */
+ public function buscarOrgaoOrigem($origem)
+ {
+ try {
+ $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text();
+ return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ?
+ $orgaoOrigem :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+
+ /**
+ * Buscar orgão de destino por nome
+ *
+ * @param string $origem
+ * @return string|null
+ */
+ public function buscarOrgaoDestino($destino)
+ {
+ try {
+ $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text();
+ return !empty($orgaoDestino) && !is_null($orgaoDestino) ?
+ $orgaoDestino :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+
+ /**
+ * Buscar mensagem de alerta da página
+ *
+ * @return string
+ */
+ public function buscarMensagemAlerta()
+ {
+ $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]");
+ return !empty($alerta->text()) ? $alerta->text() : "";
+ }
+
+ /**
+ * Lispar campo de pesquisa
+ * Colocar texto para pesquisa
+ * Clicar no bot?o pesquisar
+ *
+ * @param string $textoPesquisa
+ * @return void
+ */
+ public function selecionarPesquisa($textoPesquisa)
+ {
+ $this->test->byId('txtSiglaOrigem')->clear();
+ $this->test->byId('txtSiglaOrigem')->value($textoPesquisa);
+ $this->test->byId("btnPesquisar")->click();
+ }
+
+ /**
+ * Buscar item de tabela por nome
+ *
+ * @param string $nome
+ * @return string|null
+ */
+ public function buscarNome($nome)
+ {
+ try {
+ $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text();
+ return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ?
+ $nomeSelecionado :
+ null;
+ } catch (Exception $ex) {
+ return null;
+ }
+ }
+}
diff --git a/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php
new file mode 100644
index 000000000..e9b4f2f31
--- /dev/null
+++ b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php
@@ -0,0 +1,89 @@
+test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo'));
+ $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click();
+ }
+
+ /**
+ * Seleciona botão editar da primeira linha de tabela
+ *
+ * @return void
+ */
+ public function selecionarParaExportar()
+ {
+ $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click();
+ $this->test->byXPath("(//label[@for='chkInfraItem2'])[1]")->click();
+ $this->test->byXPath("(//label[@for='chkInfraItem3'])[1]")->click();
+ $this->test->byXPath("(//label[@for='chkInfraItem5'])[1]")->click();
+ $this->test->byId("btnExportar")->click();
+ }
+
+ public function verificarExisteBotao(string $nomeBtn)
+ {
+ try {
+ return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text();
+ } catch (Exception $e) {
+ return null;
+ }
+ }
+
+ public function verificarQuantidadeDeLinhasSelecionadas()
+ {
+ $this->test->waitUntil(function($testCase) {
+ $trs = $this->test->byId('tableExportar')
+ ->elements($this->test->using('css selector')->value('tr'));
+ $testCase->assertEquals(count($trs), 5);
+ return true;
+ });
+ }
+
+ public function btnExportar()
+ {
+ $this->test->byId("btnExportarModal")->click();
+ sleep(5);
+ }
+
+ /**
+ * Lispar campo de pesquisa
+ * Colocar texto para pesquisa
+ *
+ * @return void
+ */
+ public function selecionarPesquisa()
+ {
+ $this->test->byId('txtNomeTipoProcessoPesquisa')->clear();
+ $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria');
+ $this->test->byId("sbmPesquisar")->click();
+ }
+
+ /**
+ * Buscar se foi pesquisado
+ *
+ * @return void
+ */
+ public function buscarPesquisa()
+ {
+ try {
+ $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text();
+ return !empty($elementos) && !is_null($elementos);
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+}
diff --git a/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php
new file mode 100644
index 000000000..f8c8aa451
--- /dev/null
+++ b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php
@@ -0,0 +1,33 @@
+test->byId("txtInfraPesquisarMenu")->value("Reativar Tipos de Processo");
+ $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click();
+ }
+
+ public function reativarMapeamento()
+ {
+ $this->test->byXPath("//a[contains(@class, 'reativar')]")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ public function reativarMapeamentoCheckbox()
+ {
+ $this->test->byXPath("(//div[contains(@class, 'infraCheckboxDiv')])[1]")->click();
+ $this->test->byXPath("(//div[contains(@class, 'infraCheckboxDiv')])[2]")->click();
+ $this->test->byId("btnReativar")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+}
diff --git a/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php
new file mode 100644
index 000000000..90fbb578d
--- /dev/null
+++ b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php
@@ -0,0 +1,54 @@
+test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos'));
+
+ $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click();
+ $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click();
+ }
+
+ public function reativarMapeamento () {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo");
+ $this->test->byXPath("//a[contains(@class, 'reativar')]")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ public function reativarMapeamentoCheckbox() {
+ $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click();
+ $this->test->byId("btnReativar")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+
+ public function desativarMapeamento () {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo");
+ $this->test->byXPath("//a[contains(@class, 'desativar')]")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+ public function desativarMapeamentoCheckbox() {
+ $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click();
+ $this->test->byId("btnDesativar")->click();
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }
+
+
+ public function selectEstado($estado) {
+ $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado);
+ }
+}
diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php
index 0d31d324f..580060e64 100755
--- a/tests_super/funcional/tests/CenarioBaseTestCase.php
+++ b/tests_super/funcional/tests/CenarioBaseTestCase.php
@@ -39,6 +39,11 @@ class CenarioBaseTestCase extends Selenium2TestCase
protected $paginaCancelarDocumento = null;
protected $paginaTramitarProcessoEmLote = null;
protected $paginaMapeamentoUnidade = null;
+ protected $paginaMoverDocumento = null;
+ protected $paginaTramiteMapeamentoOrgaoExterno = null;
+ protected $paginaExportarTiposProcesso = null;
+ protected $paginaTipoProcessoReativar = null;
+ protected $paginaCadastroOrgaoExterno = null;
public function setUpPage(): void
{
@@ -58,6 +63,10 @@ public function setUpPage(): void
$this->paginaMoverDocumento = new PaginaMoverDocumento($this);
$this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this);
$this->paginaMapeamentoUnidade = new PaginaMapeamentoUnidade($this);
+ $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this);
+ $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this);
+ $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this);
+ $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this);
$this->currentWindow()->maximize();
}
@@ -194,6 +203,7 @@ protected function definirContextoTeste($nomeContexto)
'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'),
'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'),
'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'),
+ 'SIGLA_ESTRUTURA' => constant($nomeContexto . '_SIGLA_ESTRUTURA'),
'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'),
'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'),
'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'),
@@ -223,6 +233,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha)
$this->url($url);
PaginaLogin::executarAutenticacao($this, $login, $senha);
PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade);
+ $this->url($url);
}
protected function selecionarUnidadeInterna($unidadeDestino)
diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php
new file mode 100644
index 000000000..3e4dcfa18
--- /dev/null
+++ b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php
@@ -0,0 +1,150 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_desativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de reativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_desativacao_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativar_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo");
+ $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php
new file mode 100644
index 000000000..bcf21d309
--- /dev/null
+++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php
@@ -0,0 +1,72 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste para excluir de mapeamento de orgão exteno
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_excluir_mapeamento_orgao_externo()
+ {
+ // Configuração do dados para teste do cenário
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos();
+ sleep(5);
+ $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId);
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'),
+ $mensagem
+ );
+ }
+
+ function tearDown(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDown();
+ }
+}
diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php
new file mode 100644
index 000000000..4c237b093
--- /dev/null
+++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php
@@ -0,0 +1,63 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos();
+
+ $this->paginaExportarTiposProcesso->selecionarParaExportar();
+ $this->assertEquals(
+ $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'),
+ 'Exportar'
+ );
+ $this->assertEquals(
+ $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'),
+ 'Fechar'
+ );
+ $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas();
+ $this->paginaExportarTiposProcesso->btnExportar();
+ }
+
+ /**
+ * Teste para pesquisar tipos de processos
+ *
+ * @return void
+ */
+ public function test_pesquisar_tipos_de_processos()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos();
+ $this->paginaExportarTiposProcesso->selecionarPesquisa();
+ sleep(1);
+ $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa());
+ }
+}
diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php
new file mode 100644
index 000000000..ef5a761ef
--- /dev/null
+++ b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php
@@ -0,0 +1,103 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+
+ $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A);
+ $importacaoTiposProcessoFixture->cadastrar([
+ 'idMapeamento' => self::$penOrgaoExternoId,
+ 'sinAtivo' => 'N'
+ ]);
+ }
+
+ /**
+ * Teste de reativação de um Relacionamento entre Órgãos
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativacao_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar();
+ $this->paginaTipoProcessoReativar->reativarMapeamento();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ /**
+ * Teste de desativação de um Relacionamento entre Órgãos via checkbox
+ *
+ * @large
+ *
+ * @return void
+ */
+ public function test_reativar_checkbox_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar();
+ $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox();
+ $this->waitUntil(function ($testCase) {
+ $testCase->frame(null);
+ $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.');
+ $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text());
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A);
+ $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php
new file mode 100644
index 000000000..c1c1ee282
--- /dev/null
+++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php
@@ -0,0 +1,145 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE']
+ ]);
+ $penMapUnidadesFixture->cadastrar();
+ }
+
+ /**
+ * Teste de cadastro de novo mapeamento entre ogrãos
+ *
+ * @return void
+ */
+ public function test_cadastrar_novo_mapeamento_orgao_externo()
+ {
+ // Configuração do dados para teste do cenário
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+ $this->paginaCadastroOrgaoExterno->novoMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']);
+ $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']);
+
+ $this->assertNotNull($orgaoOrigem);
+ $this->assertNotNull($orgaoDestino);
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'),
+ $mensagem
+ );
+ }
+
+ /**
+ * Teste para cadastro de mapeamento de orgão exteno já existente
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+ $this->paginaCadastroOrgaoExterno->novoMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Cadastro de relacionamento entre órgãos já existente.'),
+ $mensagem
+ );
+ }
+
+ /**
+ * Teste para editar mapeamento de orgão exteno
+ *
+ * @group MapeamentoOrgaoExterno
+ *
+ * @return void
+ */
+ public function test_editar_mapeamento_orgao_externo()
+ {
+ self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+
+ $this->paginaCadastroOrgaoExterno->editarMapOrgao();
+ $this->paginaCadastroOrgaoExterno->setarParametros(
+ self::$destinatario['REP_ESTRUTURAS'],
+ self::$destinatario['NOME_UNIDADE'],
+ self::$remetente['NOME_UNIDADE']
+ );
+ $this->paginaCadastroOrgaoExterno->salvar();
+
+ $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']);
+ $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']);
+
+ $this->assertNotNull($orgaoOrigem);
+ $this->assertNotNull($orgaoDestino);
+ sleep(1);
+ $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta();
+ $this->assertStringContainsString(
+ utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'),
+ $mensagem
+ );
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ parent::tearDownAfterClass();
+ }
+}
diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php
new file mode 100644
index 000000000..8b5be9979
--- /dev/null
+++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php
@@ -0,0 +1,72 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+ self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B);
+
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([
+ 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'],
+ 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'],
+ 'id' => self::$remetente['ID_ESTRUTURA'],
+ 'sigla' => self::$remetente['SIGLA_ESTRUTURA'],
+ 'nome' => self::$remetente['NOME_UNIDADE'],
+ 'idOrigem' => self::$destinatario['ID_ESTRUTURA'],
+ 'nomeOrigem' => self::$destinatario['NOME_UNIDADE']
+ ]);
+ }
+
+ /**
+ * Teste para pesquisar mapeamento entre orgãos
+ *
+ * @Depends test_desativacao_mapeamento_orgao_externo
+ *
+ * @return void
+ */
+ public function test_pesquisar_mapeamento_orgao_externo()
+ {
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno();
+
+ // Buscar pesquisa vazia
+ $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE'] . 'B');
+ $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']);
+ $this->assertNull($nomeRepositorioCadastrado);
+
+ // Buscar pesquisa com sucesso
+ $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']);
+ $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']);
+ $this->assertNotNull($nomeRepositorioCadastrado);
+ }
+
+ function tearDown(): void
+ {
+ $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A);
+ $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId);
+
+ parent::tearDown();
+ }
+}