From b5f564078a38be883822d18dce0f2f058c772c13 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Thu, 31 Oct 2024 09:16:21 -0300 Subject: [PATCH] Release/3.7.0 (#701) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * cleanup: remover codigo que tratava mensagem da API (#482) * tests: rebase dos PRs das issues 420 e 442 para a release 3.7.0 (#484) * feat: melhoria de mensagem para envio com sucesso de tramite em bloco (#486) Co-authored-by: Mauro Costa * 435 alterar mensagem de envio em lote (#492) chore: alteração de mensagem para conclusão de envio de bloco --------- Co-authored-by: Mauro Costa * 435 alterar mensagem de envio em lote (#493) * chore: alteração de mensagem para conclusão de envio de bloco * fix: remove ícone quando processo está concluído Closes #496 * doc: inclusão de documento CHANGELOG-3.7.0 para possibilitar subir o ambiente no jenkins. * fix: erro ao permitir assinatura de documento já tramitado Issue #333. * 485 garantir compatibilidade do modulo tramita com o sei 4 1 2 (#499) * cicd: alteração para tramitagovbr * feat: compatibilidade com modulo tramita --------- Co-authored-by: caduvieira <3831408+caduvieira@users.noreply.github.com> Co-authored-by: Mauro Costa * feat: mapeamento-de-envio-parcial-evolucao-da-funcionalidade (#480) Co-authored-by: Mauro Costa * 485 garantir compatibilidade do modulo tramita com o sei 4 1 2 (#502) * fix: correção de encoding e skipando teste a ser refatorado. --------- Co-authored-by: caduvieira <3831408+caduvieira@users.noreply.github.com> Co-authored-by: Mauro Costa * feat: evolucao funcionalidade processo tramitado em bloco (#498) * feat: evolucao funcionalidade processo tramitado em bloco * test: skip dos testes que acessavam menu removido * fix: Erro cabecalho.propriedadesAdicionais[0].valor não pode ser vazio. Issue #328 * chore:atualiza script de instalação, pós rebase. * feat: reafatoração de tramite em bloco (#514) feat: reafatoração de tramite em bloco Co-authored-by: Mauro Costa * feat: mapeamento de hipoteses legais (#512) Co-authored-by: Mauro Costa * feat: incluir alteração do tipo de processo no andamento do processo (#515) * feat: incluir alteração do tipo de processo no andamento do processo * feat: incluir alteração do tipo de processo no andamento do processo * feat: limitação de repositorio e unidade para envio de processos (#511) Co-authored-by: Mauro Costa * Feat/417 mapeamento de envio parcial evolucao da funcionalidade fase 2 (#516) * feat: correção de bug de envio parcial Correção de mapemaneto de hipoteses legais; Correção de envio parcial para mapeamento de repositorios; Correção de recebimento de tramite evolução do tramite em bloco * feat: correção de bug de envio parcial Correção de mapemaneto de hipoteses legais; Correção de envio parcial para mapeamento de repositorios; Correção de recebimento de tramite evolução do tramite em bloco --------- Co-authored-by: Mauro Costa * feat: mapeamento de hipoteses legais (#517) Co-authored-by: Mauro Costa * Feat/196 limitacao de repositorio unidade para o envio do processo (#518) * feat: limitação de repositorio e unidade para envio de processos * feat: validação para seleção de repositórios Validação para quando selecionar repositório para remover não limpar unidades --------- Co-authored-by: Mauro Costa * 348 criar críticas para impedir desativar ou excluir tipos de hipoteses legais (#519) * feat: critica para hipótese legal Crítica para não desativar ou excluir hipótese legal vinculada ao tramita Closes #348 --------- Co-authored-by: Paul Richard Co-authored-by: Mauro Costa * 348 criar críticas para impedir desativar ou excluir tipos de hipoteses legais (#521) * refactor: adicionando travas de exclusao nos mapeamentos de hipotese legal do modulo PEN * feat: corrigido consulta de uso da hipotese; adicionado tratamento pra hipotese de envio e recebimento * feat: critica para hipotese legal Criatica para não desativar ou excluir hipotese legal vinculada ao tramita * feat: correção de query hipostes legais * feat: correção teste funcional e pen_expedir_lote para bloco --------- Co-authored-by: Paul Richard Co-authored-by: Mauro Costa * fix: correção de mapemaneto de hipoteses legais ativas e inativas (#522) * fix: correção de mapemaneto de hipoteses legais ativas e inativas * fix: correção de mapemaneto de hipoteses legais ativas e inativas --------- Co-authored-by: Mauro Costa * fix: correções de testes funcionais (#524) Co-authored-by: Mauro Costa * Limitacao repositorio evolucao envio parcial (#528) * fix: correção de organograma para uidades limitadas mapeadas * fix: correção de organograma para uidades limitadas mapeadas * feat: inclusão de perfil pen_map_envio_parcial_visualizar para perfil basico * feat: add recursos de Tramita GOV.BR para perfil básico --------- Co-authored-by: Mauro Costa * fix: restire de arquivos para selecionar mapeamento de unidades (#530) Co-authored-by: Mauro Costa * feat: validação de botão incluir processo no tramite em bloco para quem tem perfil * fix: correção de organograma e envio em bloco Correção de busca de unidades para tramite mapeadas no organograma e envio em bloco * Fix/restricao unidades envio bloco (#539) * fix: correção de organograma e envio em bloco Correção de busca de unidades para tramite mapeadas no organograma e envio em bloco * fix: alteração de metodo de auto completar unidades Alteração de metodo de autocompletar unidades no cadastro e envio de processo * fix: alteração de metodo de auto completar unidades Alteração de metodo de autocompletar unidades no cadastro e envio de processo * fix: correção de carregamento de organograma fix: resolve quebra de infra_js na versão 4.1 para organograma do tramita * fix: correção de carregamento de organograma --------- Co-authored-by: Mauro Costa * feat: ocultar o botão do organograma da tela de envio do processo, envio em bloco, mapeamento de envio parcial e restricao de componentes digitais (#543) Co-authored-by: Mauro Costa * fix: alteracao acesso menu tramita.gov.br para perfil basico (#544) * fix: alteracao acesso menu tramita.gov.br para perfil basico * chore: renomear metodo cadastrarRelPergilItemMenu para cadastrarRelPerfilItemMenu * fix: adicionar recurso 'pen_expedir_bloco' para perfil basico (#545) * feat: alteração de nome de bloco generico e criação somente quando existe processos legados (#546) Co-authored-by: Mauro Costa * feat: refatoracao dos testes no sei4 e seisuper (#547) Co-authored-by: Paul Richard Pereira Martins dos Anjos * feat: refatoracao de testes com falso positivo (#548) Co-authored-by: Mauro Costa * fix: correção de agendamento de tramite com erro (#550) Co-authored-by: Mauro Costa * feat: restricao de bloco tramite externo aos blocos da propria unidade (#549) * feat: restricao de adicao a bloco tramite externo aos blocos criados na propria unidade * feat: atualiza ordenacao de blocos já criados para ordenacao por unidade * fix: correcao de nome variavel no loop (#552) * fix: botao de bloco aparece apenas quando existe algum bloco aberto (#553) * fix: botao de bloco aparece apenas quando existe algum bloco aberto na unidade * chore: phpcs corrigindo arquivo pen_tramite_processo_em_bloco_cadastrar.php * Refatoração de testes (#538) * feat: refatoracao de testes do env sei4 utilizando fixtures * feat: refatoracao de testes do env super utilizando fixtures --------- Co-authored-by: Paul Richard Pereira Martins dos Anjos * feat: reload pagina processo apos inclusao/remocao de processo em bloco (#561) * test: renomear teste e efetuar limpeza antes e pos execucao (#562) * test: renomear teste MapeamentoDeUnidadesComLimitacaoDeRepositorios para seguir padrao * test: adicionar PenMapUnidadesRestricaoFixture e executar limpeza de teste antes e pos execucao * fix: criação de bloco generico com atualização de versão (#563) Co-authored-by: Mauro Costa * 559 refatoracao de testes (#564) * feat: refatoracao de testes do sei4 e adicionado mapeamento de nova coluna ordem da tabela de blocos de tramite externo * feat: refatoracao de testes do super e adicionado mapeamento de nova coluna ordem da tabela de blocos de tramite externo * feat: refatoracao de testes do sei41 e adicionado mapeamento de nova coluna ordem da tabela de blocos de tramite externo * feat: adicionado refatoracao de testes das issues 490 e 525 no sei41 --------- Co-authored-by: Paul Richard Pereira Martins dos Anjos * fix: correção de limitação de repositorio/unidades (#565) Correção de mapeamento somente de repoisitorios par alistar unidades; Alteração do titulo da página de listar "Mapeamento de Unidades" para "Mapeamento de Unidades" Co-authored-by: Mauro Costa * Fix/196 limitacao repositorio unidades para envio processo (#566) * fix: correção de limitação de repositorio/unidades Correção de mapeamento somente de repoisitorios par alistar unidades; Alteração do titulo da página de listar "Mapeamento de Unidades" para "Mapeamento de Unidades" * fix: correção de escrita * fix: correção de expedir lote para bloco --------- Co-authored-by: Mauro Costa * feat: correcao de refatoracoes de alguns testes (#567) Co-authored-by: Paul Richard Pereira Martins dos Anjos * feat: criar um bloco pra cada unidade que tenha processos em lote (#569) * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: colocar bloco generico com status concluido * fix: colocar bloco generico com status concluido --------- Co-authored-by: Mauro Costa * Fix/correcao criar bloco generico para cada unidade com seus processos (#571) * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: colocar bloco generico com status concluido * fix: colocar bloco generico com status concluido * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: correção de phpcsfix --------- Co-authored-by: Mauro Costa * Fix/correcao criar bloco generico para cada unidade com seus processos (#573) * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: colocar bloco generico com status concluido * fix: colocar bloco generico com status concluido * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: correção de phpcsfix * fix: correções para migração de bloco release 3.7.0 --------- Co-authored-by: Mauro Costa * feat: adicionado flag para alterar comportamento de instalacao da configuracao (#574) Co-authored-by: Paul Richard Pereira Martins dos Anjos * Fix/correcao criar bloco generico para cada unidade com seus processos (#576) * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: colocar bloco generico com status concluido * fix: colocar bloco generico com status concluido * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: correção de phpcsfix * fix: correções para migração de bloco release 3.7.0 * fix: correção de alteração de bloco já concluído --------- Co-authored-by: Mauro Costa * Fix/correcao criar bloco generico para cada unidade com seus processos (#580) * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: colocar bloco generico com status concluido * fix: colocar bloco generico com status concluido * feat: criar um bloco pra cada unidade que tenha processos em lote * fix: correção de phpcsfix * fix: correções para migração de bloco release 3.7.0 * fix: correção de alteração de bloco já concluído * feat: resolução de regras de negocia --------- Co-authored-by: Mauro Costa * fix: correção de atualização de estatus e processo incliudo no bloco bloqueado (#582) Co-authored-by: Mauro Costa * Fix/processo em bloco bloqueado (#584) * fix: correção de atualização de estatus e processo incliudo no bloco bloqueado * fix: correção de atualização de agendamentos --------- Co-authored-by: Mauro Costa * Fix/processo em bloco bloqueado (#585) * fix: correção de atualização de estatus e processo incliudo no bloco bloqueado * fix: correção de atualização de agendamentos * fix: correções para bloco processo * fix: correções para bloco processo --------- Co-authored-by: Mauro Costa * Fix/processo em bloco bloqueado (#586) * fix: correção de atualização de estatus e processo incliudo no bloco bloqueado * fix: correção de atualização de agendamentos * fix: correções para bloco processo * fix: correções para bloco processo * fix: processo aberto em outras unidades --------- Co-authored-by: Mauro Costa * fix: erro de status do bloco, e exclusão de processos concluídos. Erros corrigidos: Erro1: O comportamento de atualização do estado do bloco estava apresentando comportamento diferente quando o processo era removido do bloco pelo ícone da lixeira e quando era removido pelo botão excluir processo do bloco. Ao retirar o processo do bloco pelo ícone de retirar processo, e manter algum processo cancealdo ou recusado no bloco, o status do bloco legado é alterado para concluído parcialmente, o que não deveria acontecer. Erro 2: Processos que estava recusados foram incluídos em um novo bloco, criado na versão 3.7.0, e tramitados com sucesso. Após a conclusão, a exclusão de processos concluídos do bloco estava sendo permitida. Erro3: Em um bloco com status concluído parcialmente, ao entrar no processo que está cancelado e clicar no retirar processo, o bloco não atualiza para concluído (caso só reste processos concluídos) * fix: erro na msg ao tentar incluir processo em mais de um bloco. Erro msg tentar enviar processo bloqueado. Erro ao tentar enviar processo aberto em mais de uma unidade. * fix: corrigir exclusão de processos em bloco parcial e script de atualização (#588) Co-authored-by: Glaydson Rodrigues * fix: bug aparição da lixeira com status aguardando processamento; atualização lógica status aberto no script de migração para 3.7.0. * fix: corrigir status do bloco caso na versão 3.6.2 esteja errado e recebimento de envio (#589) Co-authored-by: Glaydson Rodrigues * 560 refatoracao de testes (#578) * feat: refatorado testes no ambiente sei4 * feat: refatorado testes no ambiente sei41 * feat: refatorado testes no ambiente super --------- Co-authored-by: Paul Richard Pereira Martins dos Anjos * tests: refatoracao testes funcionais (#570) * tests: refatoracao testes funcionais * chore: remover codigo comentado * chore: remover codigo comentado * 555 refatoracao de testes (#572) * feat: refatoracao de testes do ambiente sei4 * feat: refatoracao de testes do ambiente sei41 * feat: refatoracao de testes do ambiente super --------- Co-authored-by: Paul Richard Pereira Martins dos Anjos * tests: refatoracao testes funcionais (#577) * tests: refatoracao testes funcionais * test: update FixtureCenarioBaseTestCase * fix: alterar nome longo na coluna criada na release 3.7.0 (#595) * chore: alterar mensagem de exclusão dos processos * fix: alterar nome longo na coluna criada na release 3.7.0 --------- Co-authored-by: Glaydson Rodrigues * fix: adicionar estrutura da UnidadeRestrição no metodo correto - corrigir install no oracle (#596) Co-authored-by: Glaydson Rodrigues * fix: corrigir validação dos processos nos blocos concluidos parcialmente (#597) Co-authored-by: Glaydson Rodrigues * fix: corrigir teste TramiteProcessoContendoDocumentoMovidoDestinoTest (#598) * fix: corrigir teste TramiteProcessoContendoDocumentoMovidoDestinoTest * fix: corrigir nome da tabela sequencial da restrição da unidade --------- Co-authored-by: Glaydson Rodrigues * chore: permitir inclusão de processos concluídos dos blocos em processamento (#602) Co-authored-by: Glaydson Rodrigues * feat: refatoracao de testes utilizando fixtures e dtos (#603) Co-authored-by: Paul Richard Pereira Martins dos Anjos * chore: adicionar cancelamento pela unidade (#604) * chore: permitir inclusão de processos concluídos dos blocos em processamento * chore: adicionar cancelamento pela unidade --------- Co-authored-by: Glaydson Rodrigues * fix: erro ao subir ambiente do sqlserver. * fix: corrigir testes automatizados que deram erro na versão 3.7.0 mysql (#606) * chore: permitir inclusão de processos concluídos dos blocos em processamento * chore: adicionar cancelamento pela unidade * fix: corrigir testes automatizados 3.7.0 --------- Co-authored-by: Glaydson Rodrigues * feat: alterando tipo de dado das colunas no banco oracle (#607) Co-authored-by: Paul Richard Pereira Martins dos Anjos * test: correção de testes funcionais (#608) * fix: tratamento de exceção em função de renomear coluna. Necessário para SQLSERVER. * test: correção testes funcionais (#609) * test: correção de testes funcionais * chore: run phpcs * fix: corrige PR 609 (#612) * fix: icone "tramite externo" sendo exibido mesmo sem mapeamento de unidade (#611) Co-authored-by: Mauro Costa * fix: correções teste funcional postgresql (#614) * fix: correções teste funcional postgresql * fix: correções teste funcional postgresql --------- Co-authored-by: Mauro Costa * feat: removido recontagem de bolMultiplosComponentes (#615) Co-authored-by: Paul Richard Pereira Martins dos Anjos * feat: refatoracao de testes utilizando fixtures e dtos (#618) Co-authored-by: Paul Richard Pereira Martins dos Anjos * fix: tratativa de asset de status de bloco quando possui varios processos (#621) Co-authored-by: Mauro Costa * test: adicionando fixture em cadastro doc TramiteEnvioParcial (#624) * fix:colchete no lugar errado. * test: review testes componentes digitais (#625) * fix: erro ao cancelar tramite de processo em bloco. Erro que permite incluir um processo em mais de um bloco, quando o status for aguardando processamento. Erro ao atualizar status de processo que está aguardando processamento em outra unidade. * fix: erro Consulta retornou mais de um registro de MD_PEN_BLOCO_PROCESSO, quando o processo estava cancelado em outra unidade, ao tentar retirar processo de bloco * feat: atualização para remocer concluído parcial de bloco de tramite (#630) Co-authored-by: Mauro Costa * 629 incluir validacoes para processo incluido em bloco unico (#631) * feat: atualização para remocer concluído parcial de bloco de tramite * feat: alterações para status de processo --------- Co-authored-by: Mauro Costa * fix:erro ao atualizar bloco, btn de remover mostrando em momento errado, e outros * fix:erro por não excluir bloco vazio na migração. Correção de fixture que não gravava idUnidade e IdUsuario. * feat:manter estado do bloco como aguardando processamento, quando tiver processo com status aguardando processamento. * feat:conclusão da regra de exclusão de processos em blocos na migração. * feat: inclusão de cancelado (8) em andamento no bloco (#633) Co-authored-by: Mauro Costa * fix: adequação para respeitar a regra de remoção de arquivos no momento da migração. * feat: cenario de unidade geradora com processo sem andamento aberto (#636) Co-authored-by: Mauro Costa * 635 fix cenario unidade geradora (#637) * feat: cenario de unidade geradora com processo sem andamento aberto * fix: consulta de procedimento --------- Co-authored-by: Mauro Costa * 635 fix cenario unidade geradora (#638) * feat: cenario de unidade geradora com processo sem andamento aberto * fix: consulta de procedimento * fix: consulta de procedimento * fix: consulta de procedimento * fix: consulta de procedimento --------- Co-authored-by: Mauro Costa * fix: código duplicado. * fix: erro na migração quando um processo não tinha atividade de cod 32. * feat: validação de tamite com processo incluido e bloco, validação para visualização detalhada (#639) Co-authored-by: Mauro Costa * 356 corrigir erro ao tentar incluir processos em bloco (#640) * feat: validação de tamite com processo incluido e bloco, validação para visualização detalhada * fix: validação de envio individual de tramite incluido em bloco validando em envio por bloco --------- Co-authored-by: Mauro Costa * feat:retirada de histórico de blocos legados (#669) Co-authored-by: mauro * review: revisão dos arquivos dos testes funcionais mod-sei-pen para sei4, sei41 e super (#666) * fix: alteração de validação incorreta de atividade para andamento (#670) * fix: correção para teste de bloco já incluido com nome da unidade (#671) * fix: erro quando expedirProcedimento lançava alguma exceção de validação. * fix: processo com documento cancelado no 3.1.7 Documento precisa estar cancelado sem assinatura e criado em outra unidade * chore: inclusão de msg de log quando houver validações na tramitação de bloco. * review: remoção de codigo não utilizado no mod-sei-pen (#665) * test: merge e revisão de testes funcionais de tramite em bloco (#687) * test: testes funcionais tramite em bloco * test: revisao de testes e phpcs * fix: corrigir bug no script de atualização para versão 3.7.0 no sqlserver e postgresql (#691) Co-authored-by: Glaydson Rodrigues * fix: corrigir script de instalação com processos tramitados em versões anteriores (#692) Co-authored-by: Glaydson Rodrigues * test: corrige testes funcionais para BD oracle (#693) * chore: garante atualização dos status do bloco. * fix: erro de teste no oracle * fix: teste TramiteEnvioParcialTest dando erro ao tentar enviar processo quando tramite ainda estava aberto. * feat: ação de cancelamento de tramite (#697) Ação de cancelamento de tramite validando de posssui tramite de fato e se esta vinculado a algum bloco * fix:continuação correção de teste TramiteProcessoValidacaoBotaoIncluirTest para versão da pasta de teste super e sei4. * doc: atualização do changelog da release 3.7.0. * Update CHANGELOG-3.7.0.md * Update CHANGELOG-3.7.0.md * Update CHANGELOG-3.7.0.md * Update CHANGELOG-3.7.0.md --------- Co-authored-by: Marcus Dias <31357298+marvdias@users.noreply.github.com> Co-authored-by: Mauro Costa <83025710+Mauro1706@users.noreply.github.com> Co-authored-by: Mauro Costa Co-authored-by: Carlos Vieira <3831408+caduvieira@users.noreply.github.com> Co-authored-by: Glaydson Rodrigues Co-authored-by: Paul Richard Co-authored-by: Paul Richard <36829911+NinetiesPaul@users.noreply.github.com> Co-authored-by: Paul Richard Pereira Martins dos Anjos Co-authored-by: Glaydson Rodrigues Co-authored-by: mauro Co-authored-by: Yuri Oliveira <145995845+yurioliveiramgi@users.noreply.github.com> --- Makefile | 35 +- docs/changelogs/CHANGELOG-3.7.0.md | 91 +++ src/DebugPen.php | 2 +- src/PENIntegracao.php | 378 +++++++++--- ...ProtocoloBD.php => PenBlocoProcessoBD.php} | 4 +- src/bd/PenExpedirLoteBD.php | 10 - src/bd/PenLoteProcedimentoBD.php | 10 - src/bd/PenMetaBD.php | 30 + src/bd/PenUnidadeRestricaoBD.php | 12 + .../verificar-reboot-fila-sem-supervisor.sh | 3 +- src/config/supervisor.exemplo.ini | 18 + src/dto/ExpedirProcedimentoDTO.php | 4 +- src/dto/PenBlocoProcessoDTO.php | 83 +++ src/dto/PenExpedirLoteDTO.php | 43 -- src/dto/PenHipoteseLegalDTO.php | 2 - src/dto/PenLoteProcedimentoDTO.php | 49 -- src/dto/PenRelHipoteseLegalDTO.php | 1 - src/dto/PenUnidadeRestricaoDTO.php | 43 ++ src/dto/ReciboTramiteDTO.php | 1 - src/dto/TramitaEmBlocoProtocoloDTO.php | 60 -- src/dto/TramiteEmBlocoDTO.php | 6 + src/imagens/icone-concluido.svg | 1 + src/imagens/icone-recusa.svg | 1 + src/imagens/pen_processo_bloco_excluir.svg | Bin 0 -> 3848 bytes src/int/ProcessoEletronicoINT.php | 202 ++++++- ...expedir_lote.php => pen_expedir_bloco.php} | 109 +++- src/pen_expedir_lote_listar.php | 214 ------- src/pen_map_envio_parcial_cadastrar.php | 10 +- src/pen_map_envio_parcial_listar.php | 2 + ...pen_map_hipotese_legal_envio_cadastrar.php | 3 +- src/pen_map_hipotese_legal_envio_listar.php | 5 +- ...en_map_hipotese_legal_padrao_cadastrar.php | 2 +- ...p_hipotese_legal_recebimento_cadastrar.php | 3 +- ..._map_hipotese_legal_recebimento_listar.php | 4 +- src/pen_map_orgaos_externos_listar.php | 2 - src/pen_map_orgaos_mapeamento_tipo_listar.php | 1 - ...estricao_envio_comp_digitais_cadastrar.php | 2 +- ...pen_map_tipo_documento_envio_cadastrar.php | 2 +- ...p_tipo_documento_recebimento_cadastrar.php | 2 +- src/pen_map_tipo_processo_reativar.php | 1 - src/pen_map_unidade_cadastrar.php | 112 ++-- src/pen_map_unidade_listar.php | 37 +- src/pen_parametros_configuracao.php | 1 - src/pen_procedimento_cancelar_expedir.php | 43 +- src/pen_procedimento_estado.php | 3 +- src/pen_procedimento_expedido_listar.php | 92 ++- src/pen_procedimento_expedir.php | 52 +- src/pen_procedimento_expedir_validar.php | 4 +- src/pen_tipo_procedimento_lista.php | 1 - src/pen_tramita_em_bloco_protocolo_listar.php | 315 ++++------ src/pen_tramite_bloco_listar.php | 75 +-- src/pen_tramite_em_bloco_cadastrar.php | 16 + ...en_tramite_processo_em_bloco_cadastrar.php | 210 +++++-- src/pen_unidade_sel_expedir_procedimento.php | 5 - ...ativas_selecionar_expedir_procedimento.php | 4 - src/pen_validar_expedir_lote.php | 46 +- src/rn/Editor3011RN.php | 39 +- src/rn/EditorSEI4RN.php | 40 +- src/rn/ExpedirProcedimentoRN.php | 455 +++++++------- src/rn/PENAgendamentoRN.php | 67 ++- src/rn/PenAtividadeRN.php | 4 - src/rn/PenBlocoProcessoRN.php | 566 ++++++++++++++++++ src/rn/PenConsoleActionRN.php | 3 +- src/rn/PenConsoleRN.php | 4 +- ...xpedirLoteRN.php => PenExpedirBlocoRN.php} | 60 +- src/rn/PenHipoteseLegalRN.php | 46 +- src/rn/PenLoteProcedimentoRN.php | 202 ------- src/rn/PenMapTipoProcedimentoRN.php | 8 +- src/rn/PenOrgaoExternoRN.php | 8 +- src/rn/PenRelHipoteseLegalEnvioRN.php | 20 +- src/rn/PenRelTipoDocMapEnviadoRN.php | 4 +- src/rn/PenRelTipoDocMapRecebidoRN.php | 3 +- ...PenRestricaoEnvioComponentesDigitaisRN.php | 8 +- src/rn/PenUnidadeRN.php | 8 +- src/rn/PenUnidadeRestricaoRN.php | 158 +++++ src/rn/PendenciasEnvioTramiteRN.php | 254 ++++++++ src/rn/PendenciasTramiteRN.php | 237 ++++---- src/rn/ProcessarPendenciasRN.php | 143 ++--- src/rn/ProcessoEletronicoRN.php | 396 +++++++++--- src/rn/ReceberComponenteDigitalRN.php | 2 - src/rn/ReceberProcedimentoRN.php | 118 +++- src/rn/ReceberReciboTramiteRN.php | 55 +- src/rn/TramitaEmBlocoProtocoloRN.php | 462 -------------- src/rn/TramiteEmBlocoRN.php | 24 +- src/rn/VerificadorInstalacaoRN.php | 5 +- src/scripts/MonitoramentoEnvioTarefasPEN.php | 38 ++ ...=> MonitoramentoRecebimentoTarefasPEN.php} | 2 +- .../sei_atualizar_versao_modulo_pen.php | 285 ++++++++- .../sip_atualizar_versao_modulo_pen.php | 115 +++- .../funcional/assets/config/supervisor.ini | 20 +- tests_sei4/funcional/bootstrap.php | 1 + .../src/fixtures/AnexoProcessoFixture.php | 49 -- .../funcional/src/fixtures/Anexofixture.php | 74 --- .../src/fixtures/AtividadeFixture.php | 42 -- .../src/fixtures/BlocoDeTramiteFixture.php | 82 ++- .../BlocoDeTramiteProtocoloFixture.php | 85 ++- .../funcional/src/fixtures/ContatoFixture.php | 44 -- .../funcional/src/fixtures/FixtureBase.php | 126 ++-- .../ImportacaoTiposProcessoFixture.php | 106 ++-- .../fixtures/PenMapEnvioParcialFixture.php | 76 +-- .../src/fixtures/PenMapUnidadesFixture.php | 56 +- .../PenMapUnidadesRestricaoFixture.php | 61 ++ .../src/fixtures/PenOrgaoExternoFixture.php | 82 +-- .../src/fixtures/RelBlocoProtocoloFixture.php | 30 - .../src/fixtures/RelBlocoUnidadeFixture.php | 38 -- .../fixtures/TipoProcessoPadraoFixture.php | 30 + .../src/paginas/PaginaAnexarProcesso.php | 70 +-- .../src/paginas/PaginaAssinaturaDocumento.php | 134 ++--- .../PaginaCadastrarProcessoEmBloco.php | 315 +++++----- .../PaginaCadastroMapEnvioCompDigitais.php | 185 +++--- .../paginas/PaginaCadastroOrgaoExterno.php | 250 ++++---- .../src/paginas/PaginaCancelarDocumento.php | 60 +- .../src/paginas/PaginaConsultarAndamentos.php | 80 +-- .../src/paginas/PaginaControleProcesso.php | 198 +++--- .../funcional/src/paginas/PaginaDocumento.php | 358 +++++------ .../src/paginas/PaginaEditarProcesso.php | 266 ++++---- .../src/paginas/PaginaEnviarProcesso.php | 68 +-- .../src/paginas/PaginaEnvioParcialListar.php | 14 +- .../paginas/PaginaExportarTiposProcesso.php | 88 +-- .../src/paginas/PaginaIncluirDocumento.php | 379 ++++++------ .../src/paginas/PaginaIniciarProcesso.php | 345 +++++------ .../funcional/src/paginas/PaginaLogin.php | 114 ++-- .../src/paginas/PaginaMapUnidades.php | 147 +++++ .../src/paginas/PaginaMoverDocumento.php | 92 +-- .../paginas/PaginaPenHipoteseLegalListar.php | 45 ++ .../funcional/src/paginas/PaginaProcesso.php | 518 ++++++++-------- .../PaginaProcessosTramitadosExternamente.php | 12 +- .../src/paginas/PaginaReciboTramite.php | 116 ++-- .../funcional/src/paginas/PaginaTeste.php | 140 ++--- .../paginas/PaginaTipoProcessoReativar.php | 34 +- .../src/paginas/PaginaTramitarProcesso.php | 228 +++---- .../paginas/PaginaTramitarProcessoEmLote.php | 128 ++-- .../src/paginas/PaginaTramiteEmBloco.php | 98 ++- .../PaginaTramiteMapeamentoOrgaoExterno.php | 66 +- .../funcional/src/utils/DatabaseUtils.php | 66 +- .../funcional/src/utils/ParameterUtils.php | 70 +-- .../funcional/tests/CenarioBaseTestCase.php | 153 +---- .../tests/FixtureCenarioBaseTestCase.php | 331 ++++++++++ ...UnidadesComLimitacaoDeRepositoriosTest.php | 123 ++++ .../tests/MapeamentoEnvioParcialTest.php | 11 +- .../tests/MapeamentoHipoteseLegalTest.php | 37 ++ ...mentoTipoProcessoDesativarReativarTest.php | 10 +- .../MapeamentoTipoProcessoExcluirTest.php | 4 +- .../MapeamentoTipoProcessoExportarTest.php | 2 +- .../MapeamentoTipoProcessoReativarTest.php | 14 +- ...ocessoRelacionamentoOrgaosCadastroTest.php | 8 +- ...cionamentoOrgaosListagemImportacaoTest.php | 2 +- ...soBlocoDeTramiteTravasDeTramitacaoTest.php | 96 +++ ...cebimentoRecusaJustificativaGrandeTest.php | 8 +- ...DeTramiteSituacaoProcessoConcluidoTest.php | 234 ++++++++ ...miteBlocoDeTramiteSituacaoProcessoTest.php | 95 +++ .../tests/TramiteBlocoExternoCadastroTest.php | 15 +- ...ExternoComProcessoNaoMapeadoRecusaTest.php | 240 ++++++++ ...TramiteBlocoExternoEstadoProcessosTest.php | 177 ++++++ ...oEmBlocoComHipoteseLegalNaoMapeadaTest.php | 172 ++++++ ...DeProcessoPorVisualizacaoDetalhadaTest.php | 80 +++ .../tests/TramiteBlocoExternoInclusaoTest.php | 156 +++++ .../TramiteBlocoExternoLimiteAnexoTest.php | 134 ++--- .../tests/TramiteBlocoExternoLimiteTest.php | 153 +++-- ...coExternoProcessoJaIncluidoEmBlocoTest.php | 100 +--- .../tests/TramiteBlocoExternoTest.php | 113 ++-- .../tests/TramiteBlocoExternoUnidadeTest.php | 103 ++++ .../tests/TramiteEnvioParcialTest.php | 401 +++++++------ ...TramiteProcessoAnexadoComDevolucaoTest.php | 92 +-- .../tests/TramiteProcessoAnexadoTest.php | 60 +- ...teProcessoBlocoDeTramitePermissoesTest.php | 294 +++++++++ ...ramiteProcessoBlocoDeTramiteRegrasTest.php | 172 ++++++ .../TramiteProcessoComCancelamentoTest.php | 27 +- ...teProcessoComDevolucaoAlteracaoURLTest.php | 10 +- ...teProcessoComDevolucaoAnexadoOutroTest.php | 38 +- ...soComDevolucaoContendoOutroAnexadoTest.php | 32 +- .../tests/TramiteProcessoComDevolucaoTest.php | 7 +- ...ocessoComDevolucaoUnidadeDiferenteTest.php | 210 +++---- ...ComDocumentoRestritoHipotesePadraoTest.php | 29 +- ...ramiteProcessoComDocumentoRestritoTest.php | 278 +++++---- .../tests/TramiteProcessoComHistoricoTest.php | 28 +- ...ontendoDocumentoBeSimpleCorrompidoTest.php | 23 +- ...ntendoDocumentoCanceladoSemTamanhoTest.php | 306 +++++----- ...ProcessoContendoDocumentoCanceladoTest.php | 38 +- ...ContendoDocumentoExternoMesmoOrgaoTest.php | 9 +- ...ntendoDocumentoExternoParticionadoTest.php | 23 +- ...teProcessoContendoDocumentoExternoTest.php | 26 +- ...oContendoDocumentoGeradoMesmoOrgaoTest.php | 7 +- ...iteProcessoContendoDocumentoGeradoTest.php | 25 +- ...ssoContendoDocumentoInternoExternoTest.php | 38 +- ...essoContendoDocumentoMovidoDestinoTest.php | 74 ++- ...ssoContendoDocumentoMovidoSemAnexoTest.php | 550 +++++++++-------- ...iteProcessoContendoDocumentoMovidoTest.php | 62 +- ...teProcessoContendoVariosDocumentosTest.php | 7 +- ...ProcessoDocumentoNaoMapeadoDestinoTest.php | 23 +- ...eProcessoDocumentoNaoMapeadoOrigemTest.php | 33 +- ...eProcessoExtensaoNaoMapeadoDestinoTest.php | 13 +- ...miteProcessoRestritoHipotesePadraoTest.php | 26 +- .../tests/TramiteProcessoRestritoTest.php | 18 +- ...miteProcessoSemDadosBlocoDeTramiteTest.php | 62 ++ ...eProcessoTamanhoAcimaLimiteDestinoTest.php | 17 +- ...iteProcessoUnidadeSemHierarquiaPaiTest.php | 6 +- ...amiteProcessoValidacaoBotaoIncluirTest.php | 78 +++ ...ProcessoValidacaoBotoesAposIncluirTest.php | 57 ++ .../TramiteProcessoValidacaoEnvioTest.php | 11 +- ...ProcessosComDevolucaoAmbosAnexadosTest.php | 30 +- ...teProcessosComDevolucoesEAnexacoesTest.php | 55 +- ...TramiteRecebimentoDocumentoAnexadoTest.php | 14 +- .../TramiteRecebimentoDocumentoAvulsoTest.php | 17 +- ...eRecebimentoInteressadosDuplicadosTest.php | 20 +- ...ecebimentoMultiplosComponentesDigitais.php | 21 +- ...plosComponentesDigitaisApenasPendentes.php | 25 +- .../funcional/assets/config/supervisor.ini | 20 +- tests_sei41/funcional/bootstrap.php | 12 + tests_sei41/funcional/composer.json | 13 +- tests_sei41/funcional/docker-compose.yml | 32 +- tests_sei41/funcional/env_postgresql | 4 +- .../src/fixtures/BlocoDeTramiteFixture.php | 79 +++ .../BlocoDeTramiteProtocoloFixture.php | 85 +++ .../funcional/src/fixtures/FixtureBase.php | 96 +++ .../ImportacaoTiposProcessoFixture.php | 109 ++-- .../fixtures/PenMapEnvioParcialFixture.php | 58 ++ .../src/fixtures/PenMapUnidadesFixture.php | 105 +--- .../PenMapUnidadesRestricaoFixture.php | 61 ++ .../src/fixtures/PenOrgaoExternoFixture.php | 82 ++- .../fixtures/TipoProcessoPadraoFixture.php | 30 + .../src/paginas/PaginaAnexarProcesso.php | 70 +-- .../src/paginas/PaginaAssinaturaDocumento.php | 134 ++--- .../PaginaCadastrarProcessoEmBloco.php | 253 ++++++++ .../PaginaCadastroMapEnvioCompDigitais.php | 187 +++--- .../paginas/PaginaCadastroOrgaoExterno.php | 250 ++++---- .../src/paginas/PaginaCancelarDocumento.php | 66 +- .../src/paginas/PaginaConsultarAndamentos.php | 86 +-- .../src/paginas/PaginaControleProcesso.php | 198 +++--- .../funcional/src/paginas/PaginaDocumento.php | 368 ++++++------ .../src/paginas/PaginaEditarProcesso.php | 274 ++++----- .../src/paginas/PaginaEnviarProcesso.php | 68 +-- .../src/paginas/PaginaEnvioParcialListar.php | 14 +- .../paginas/PaginaExportarTiposProcesso.php | 88 +-- .../src/paginas/PaginaIncluirDocumento.php | 395 ++++++------ .../src/paginas/PaginaIniciarProcesso.php | 345 +++++------ .../funcional/src/paginas/PaginaLogin.php | 114 ++-- .../src/paginas/PaginaMapUnidades.php | 147 +++++ .../src/paginas/PaginaMoverDocumento.php | 98 +-- .../paginas/PaginaPenHipoteseLegalListar.php | 45 ++ .../funcional/src/paginas/PaginaProcesso.php | 542 +++++++++-------- .../PaginaProcessosTramitadosExternamente.php | 12 +- .../src/paginas/PaginaReciboTramite.php | 118 ++-- .../funcional/src/paginas/PaginaTeste.php | 140 ++--- .../paginas/PaginaTipoProcessoReativar.php | 34 +- .../src/paginas/PaginaTramitarProcesso.php | 254 ++++---- .../paginas/PaginaTramitarProcessoEmLote.php | 128 ++-- .../src/paginas/PaginaTramiteEmBloco.php | 124 ++++ .../PaginaTramiteMapeamentoOrgaoExterno.php | 66 +- .../funcional/src/utils/DatabaseUtils.php | 66 +- .../funcional/src/utils/ParameterUtils.php | 70 +-- .../funcional/tests/CenarioBaseTestCase.php | 172 ++---- .../tests/FixtureCenarioBaseTestCase.php | 331 ++++++++++ ...UnidadesComLimitacaoDeRepositoriosTest.php | 123 ++++ .../tests/MapeamentoEnvioParcialTest.php | 11 +- .../tests/MapeamentoHipoteseLegalTest.php | 37 ++ ...mentoTipoProcessoDesativarReativarTest.php | 76 ++- .../MapeamentoTipoProcessoExcluirTest.php | 44 +- .../MapeamentoTipoProcessoExportarTest.php | 8 +- .../MapeamentoTipoProcessoReativarTest.php | 93 ++- ...ocessoRelacionamentoOrgaosCadastroTest.php | 23 +- ...cionamentoOrgaosListagemImportacaoTest.php | 38 +- ...soBlocoDeTramiteTravasDeTramitacaoTest.php | 96 +++ ...cebimentoRecusaJustificativaGrandeTest.php | 6 +- ...DeTramiteSituacaoProcessoConcluidoTest.php | 234 ++++++++ ...miteBlocoDeTramiteSituacaoProcessoTest.php | 95 +++ .../tests/TramiteBlocoExternoCadastroTest.php | 74 +++ ...ExternoComProcessoNaoMapeadoRecusaTest.php | 240 ++++++++ ...TramiteBlocoExternoEstadoProcessosTest.php | 177 ++++++ ...oEmBlocoComHipoteseLegalNaoMapeadaTest.php | 172 ++++++ ...DeProcessoPorVisualizacaoDetalhadaTest.php | 80 +++ .../tests/TramiteBlocoExternoInclusaoTest.php | 156 +++++ .../TramiteBlocoExternoLimiteAnexoTest.php | 147 +++++ .../tests/TramiteBlocoExternoLimiteTest.php | 163 +++++ ...coExternoProcessoJaIncluidoEmBlocoTest.php | 113 ++++ .../tests/TramiteBlocoExternoTest.php | 69 +++ .../tests/TramiteBlocoExternoUnidadeTest.php | 103 ++++ .../tests/TramiteEnvioParcialTest.php | 409 +++++++------ ...TramiteProcessoAnexadoComDevolucaoTest.php | 90 +-- .../tests/TramiteProcessoAnexadoTest.php | 60 +- ...teProcessoBlocoDeTramitePermissoesTest.php | 294 +++++++++ ...ramiteProcessoBlocoDeTramiteRegrasTest.php | 172 ++++++ .../TramiteProcessoComCancelamentoTest.php | 27 +- ...teProcessoComDevolucaoAlteracaoURLTest.php | 10 +- ...teProcessoComDevolucaoAnexadoOutroTest.php | 38 +- ...soComDevolucaoContendoOutroAnexadoTest.php | 38 +- .../tests/TramiteProcessoComDevolucaoTest.php | 7 +- ...ocessoComDevolucaoUnidadeDiferenteTest.php | 7 +- ...ComDocumentoRestritoHipotesePadraoTest.php | 29 +- ...ramiteProcessoComDocumentoRestritoTest.php | 278 +++++---- .../tests/TramiteProcessoComHistoricoTest.php | 28 +- ...ontendoDocumentoBeSimpleCorrompidoTest.php | 23 +- ...ntendoDocumentoCanceladoSemTamanhoTest.php | 306 +++++----- ...ProcessoContendoDocumentoCanceladoTest.php | 38 +- ...ContendoDocumentoExternoMesmoOrgaoTest.php | 7 +- ...ntendoDocumentoExternoParticionadoTest.php | 23 +- ...teProcessoContendoDocumentoExternoTest.php | 26 +- ...oContendoDocumentoGeradoMesmoOrgaoTest.php | 7 +- ...iteProcessoContendoDocumentoGeradoTest.php | 25 +- ...ssoContendoDocumentoInternoExternoTest.php | 38 +- ...ssoContendoDocumentoMovidoDestinoTest.php} | 74 ++- ...ssoContendoDocumentoMovidoSemAnexoTest.php | 550 +++++++++-------- ...iteProcessoContendoDocumentoMovidoTest.php | 62 +- ...teProcessoContendoVariosDocumentosTest.php | 7 +- ...ProcessoDocumentoNaoMapeadoDestinoTest.php | 23 +- ...eProcessoDocumentoNaoMapeadoOrigemTest.php | 34 +- ...eProcessoExtensaoNaoMapeadoDestinoTest.php | 13 +- ...miteProcessoRestritoHipotesePadraoTest.php | 26 +- .../tests/TramiteProcessoRestritoTest.php | 18 +- ...miteProcessoSemDadosBlocoDeTramiteTest.php | 62 ++ ...eProcessoTamanhoAcimaLimiteDestinoTest.php | 16 +- ...iteProcessoUnidadeSemHierarquiaPaiTest.php | 6 +- ...amiteProcessoValidacaoBotaoIncluirTest.php | 79 +++ ...ProcessoValidacaoBotoesAposIncluirTest.php | 57 ++ .../TramiteProcessoValidacaoEnvioTest.php | 11 +- ...ProcessosComDevolucaoAmbosAnexadosTest.php | 30 +- ...teProcessosComDevolucoesEAnexacoesTest.php | 55 +- ...TramiteRecebimentoDocumentoAnexadoTest.php | 22 +- .../TramiteRecebimentoDocumentoAvulsoTest.php | 15 +- ...eRecebimentoInteressadosDuplicadosTest.php | 14 +- ...ecebimentoMultiplosComponentesDigitais.php | 32 +- ...plosComponentesDigitaisApenasPendentes.php | 26 +- .../funcional/assets/config/supervisor.ini | 20 +- tests_super/funcional/bootstrap.php | 1 + .../src/fixtures/AnexoProcessoFixture.php | 49 -- .../funcional/src/fixtures/Anexofixture.php | 74 --- .../src/fixtures/AtividadeFixture.php | 42 -- .../src/fixtures/BlocoDeTramiteFixture.php | 82 ++- .../BlocoDeTramiteProtocoloFixture.php | 85 ++- .../funcional/src/fixtures/ContatoFixture.php | 44 -- .../funcional/src/fixtures/FixtureBase.php | 126 ++-- .../ImportacaoTiposProcessoFixture.php | 106 ++-- .../src/fixtures/ParticipanteFixture.php | 37 -- .../fixtures/PenMapEnvioParcialFixture.php | 76 +-- .../src/fixtures/PenMapUnidadesFixture.php | 56 +- .../PenMapUnidadesRestricaoFixture.php | 61 ++ .../src/fixtures/PenOrgaoExternoFixture.php | 82 +-- .../src/fixtures/RelBlocoProtocoloFixture.php | 30 - .../src/fixtures/RelBlocoUnidadeFixture.php | 38 -- .../fixtures/RelProtocoloProtocoloFixture.php | 28 - .../src/fixtures/SecaoDocumentoFixture.php | 182 ------ .../fixtures/TipoProcessoPadraoFixture.php | 30 + .../src/paginas/PaginaAnexarProcesso.php | 70 +-- .../src/paginas/PaginaAssinaturaDocumento.php | 134 ++--- .../PaginaCadastrarProcessoEmBloco.php | 315 +++++----- .../PaginaCadastroMapEnvioCompDigitais.php | 187 +++--- .../paginas/PaginaCadastroOrgaoExterno.php | 250 ++++---- .../src/paginas/PaginaCancelarDocumento.php | 60 +- .../src/paginas/PaginaConfiguracaoModulo.php | 48 +- .../src/paginas/PaginaConsultarAndamentos.php | 80 +-- .../src/paginas/PaginaControleProcesso.php | 198 +++--- .../funcional/src/paginas/PaginaDocumento.php | 358 +++++------ .../src/paginas/PaginaEditarProcesso.php | 266 ++++---- .../src/paginas/PaginaEnviarProcesso.php | 68 +-- .../src/paginas/PaginaEnvioParcialListar.php | 14 +- .../paginas/PaginaExportarTiposProcesso.php | 88 +-- .../src/paginas/PaginaIncluirDocumento.php | 379 ++++++------ .../src/paginas/PaginaIniciarProcesso.php | 345 +++++------ .../funcional/src/paginas/PaginaLogin.php | 107 ++-- .../src/paginas/PaginaMapUnidades.php | 147 +++++ .../src/paginas/PaginaMapeamentoUnidade.php | 16 +- .../src/paginas/PaginaMoverDocumento.php | 92 +-- .../paginas/PaginaPenHipoteseLegalListar.php | 45 ++ .../funcional/src/paginas/PaginaProcesso.php | 523 ++++++++-------- .../PaginaProcessosTramitadosExternamente.php | 12 +- .../src/paginas/PaginaReciboTramite.php | 116 ++-- .../funcional/src/paginas/PaginaTeste.php | 139 ++--- .../paginas/PaginaTipoProcessoReativar.php | 36 +- .../src/paginas/PaginaTramitarProcesso.php | 228 +++---- .../paginas/PaginaTramitarProcessoEmLote.php | 128 ++-- .../src/paginas/PaginaTramiteEmBloco.php | 98 ++- .../PaginaTramiteMapeamentoOrgaoExterno.php | 66 +- .../funcional/src/utils/DatabaseUtils.php | 66 +- .../funcional/src/utils/ParameterUtils.php | 70 +-- .../funcional/tests/CenarioBaseTestCase.php | 157 +---- .../tests/FixtureCenarioBaseTestCase.php | 331 ++++++++++ ...UnidadesComLimitacaoDeRepositoriosTest.php | 123 ++++ .../tests/MapeamentoEnvioParcialTest.php | 8 +- .../tests/MapeamentoHipoteseLegalTest.php | 39 ++ ...mentoTipoProcessoDesativarReativarTest.php | 10 +- .../MapeamentoTipoProcessoExcluirTest.php | 4 +- .../MapeamentoTipoProcessoExportarTest.php | 2 +- .../MapeamentoTipoProcessoReativarTest.php | 14 +- ...ocessoRelacionamentoOrgaosCadastroTest.php | 8 +- ...cionamentoOrgaosListagemImportacaoTest.php | 2 +- .../PaginaConfiguracaoModuloRenomeadoTest.php | 8 +- .../tests/PesquisarMapeamentoUnidadeTest.php | 10 +- ...soBlocoDeTramiteTravasDeTramitacaoTest.php | 96 +++ ...cebimentoRecusaJustificativaGrandeTest.php | 6 +- ...DeTramiteSituacaoProcessoConcluidoTest.php | 234 ++++++++ ...miteBlocoDeTramiteSituacaoProcessoTest.php | 95 +++ .../tests/TramiteBlocoExternoCadastroTest.php | 6 +- ...ExternoComProcessoNaoMapeadoRecusaTest.php | 240 ++++++++ ...TramiteBlocoExternoEstadoProcessosTest.php | 177 ++++++ ...oEmBlocoComHipoteseLegalNaoMapeadaTest.php | 172 ++++++ ...DeProcessoPorVisualizacaoDetalhadaTest.php | 80 +++ .../tests/TramiteBlocoExternoInclusaoTest.php | 156 +++++ .../TramiteBlocoExternoLimiteAnexoTest.php | 128 ++-- .../tests/TramiteBlocoExternoLimiteTest.php | 145 ++--- ...coExternoProcessoJaIncluidoEmBlocoTest.php | 100 +--- .../tests/TramiteBlocoExternoTest.php | 108 ++-- .../tests/TramiteBlocoExternoUnidadeTest.php | 103 ++++ .../tests/TramiteEnvioParcialTest.php | 401 +++++++------ ...TramiteProcessoAnexadoComDevolucaoTest.php | 90 +-- .../tests/TramiteProcessoAnexadoTest.php | 60 +- ...teProcessoBlocoDeTramitePermissoesTest.php | 294 +++++++++ ...ramiteProcessoBlocoDeTramiteRegrasTest.php | 172 ++++++ .../TramiteProcessoComCancelamentoTest.php | 27 +- ...teProcessoComDevolucaoAlteracaoURLTest.php | 10 +- ...teProcessoComDevolucaoAnexadoOutroTest.php | 38 +- ...soComDevolucaoContendoOutroAnexadoTest.php | 32 +- .../tests/TramiteProcessoComDevolucaoTest.php | 7 +- ...ocessoComDevolucaoUnidadeDiferenteTest.php | 7 +- ...ComDocumentoRestritoHipotesePadraoTest.php | 29 +- ...ramiteProcessoComDocumentoRestritoTest.php | 278 +++++---- .../tests/TramiteProcessoComHistoricoTest.php | 28 +- ...ontendoDocumentoBeSimpleCorrompidoTest.php | 23 +- ...ntendoDocumentoCanceladoSemTamanhoTest.php | 26 +- ...ProcessoContendoDocumentoCanceladoTest.php | 38 +- ...ContendoDocumentoExternoMesmoOrgaoTest.php | 7 +- ...ntendoDocumentoExternoParticionadoTest.php | 23 +- ...teProcessoContendoDocumentoExternoTest.php | 26 +- ...oContendoDocumentoGeradoMesmoOrgaoTest.php | 7 +- ...iteProcessoContendoDocumentoGeradoTest.php | 25 +- ...ssoContendoDocumentoInternoExternoTest.php | 38 +- ...essoContendoDocumentoMovidoDestinoTest.php | 74 ++- ...ssoContendoDocumentoMovidoSemAnexoTest.php | 550 +++++++++-------- ...iteProcessoContendoDocumentoMovidoTest.php | 62 +- ...teProcessoContendoVariosDocumentosTest.php | 7 +- ...ProcessoDocumentoNaoMapeadoDestinoTest.php | 23 +- ...eProcessoDocumentoNaoMapeadoOrigemTest.php | 34 +- ...eProcessoExtensaoNaoMapeadoDestinoTest.php | 13 +- ...orNaoResponsavelPelaUnidadeMapeadaTest.php | 50 +- ...miteProcessoRestritoHipotesePadraoTest.php | 26 +- .../tests/TramiteProcessoRestritoTest.php | 18 +- ...miteProcessoSemDadosBlocoDeTramiteTest.php | 62 ++ ...eProcessoTamanhoAcimaLimiteDestinoTest.php | 16 +- ...teProcessoUnidadeSemHierarquiaPaiTest.php} | 6 +- ...amiteProcessoValidacaoBotaoIncluirTest.php | 78 +++ ...ProcessoValidacaoBotoesAposIncluirTest.php | 57 ++ .../TramiteProcessoValidacaoEnvioTest.php | 11 +- ...ProcessosComDevolucaoAmbosAnexadosTest.php | 30 +- ...teProcessosComDevolucoesEAnexacoesTest.php | 55 +- ...TramiteRecebimentoDocumentoAnexadoTest.php | 16 +- .../TramiteRecebimentoDocumentoAvulsoTest.php | 15 +- ...eRecebimentoInteressadosDuplicadosTest.php | 12 +- ...ecebimentoMultiplosComponentesDigitais.php | 32 +- ...plosComponentesDigitaisApenasPendentes.php | 26 +- .../unitario/rn/ProcessoEletronicoRNTest.php | 16 +- 449 files changed, 26128 insertions(+), 14995 deletions(-) create mode 100644 docs/changelogs/CHANGELOG-3.7.0.md rename src/bd/{TramitaEmBlocoProtocoloBD.php => PenBlocoProcessoBD.php} (81%) delete mode 100755 src/bd/PenExpedirLoteBD.php delete mode 100755 src/bd/PenLoteProcedimentoBD.php create mode 100644 src/bd/PenUnidadeRestricaoBD.php create mode 100644 src/dto/PenBlocoProcessoDTO.php delete mode 100755 src/dto/PenExpedirLoteDTO.php delete mode 100755 src/dto/PenLoteProcedimentoDTO.php create mode 100644 src/dto/PenUnidadeRestricaoDTO.php delete mode 100644 src/dto/TramitaEmBlocoProtocoloDTO.php create mode 100644 src/imagens/icone-concluido.svg create mode 100644 src/imagens/icone-recusa.svg create mode 100644 src/imagens/pen_processo_bloco_excluir.svg rename src/{pen_expedir_lote.php => pen_expedir_bloco.php} (80%) delete mode 100755 src/pen_expedir_lote_listar.php mode change 100644 => 100755 src/pen_tramita_em_bloco_protocolo_listar.php mode change 100644 => 100755 src/pen_tramite_processo_em_bloco_cadastrar.php create mode 100755 src/rn/PenBlocoProcessoRN.php rename src/rn/{PenExpedirLoteRN.php => PenExpedirBlocoRN.php} (63%) delete mode 100755 src/rn/PenLoteProcedimentoRN.php create mode 100644 src/rn/PenUnidadeRestricaoRN.php create mode 100644 src/rn/PendenciasEnvioTramiteRN.php delete mode 100644 src/rn/TramitaEmBlocoProtocoloRN.php create mode 100644 src/scripts/MonitoramentoEnvioTarefasPEN.php rename src/scripts/{MonitoramentoTarefasPEN.php => MonitoramentoRecebimentoTarefasPEN.php} (92%) delete mode 100644 tests_sei4/funcional/src/fixtures/AnexoProcessoFixture.php delete mode 100644 tests_sei4/funcional/src/fixtures/Anexofixture.php delete mode 100644 tests_sei4/funcional/src/fixtures/AtividadeFixture.php delete mode 100644 tests_sei4/funcional/src/fixtures/ContatoFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php delete mode 100644 tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php delete mode 100644 tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/TipoProcessoPadraoFixture.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaMapUnidades.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaPenHipoteseLegalListar.php create mode 100755 tests_sei4/funcional/tests/FixtureCenarioBaseTestCase.php create mode 100644 tests_sei4/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoHipoteseLegalTest.php create mode 100644 tests_sei4/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php create mode 100755 tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php create mode 100755 tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoUnidadeTest.php create mode 100755 tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php create mode 100755 tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php create mode 100755 tests_sei4/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php rename tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php => tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php (70%) create mode 100755 tests_sei4/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php create mode 100755 tests_sei4/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php create mode 100644 tests_sei41/funcional/src/fixtures/BlocoDeTramiteFixture.php create mode 100644 tests_sei41/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php create mode 100644 tests_sei41/funcional/src/fixtures/FixtureBase.php create mode 100644 tests_sei41/funcional/src/fixtures/PenMapEnvioParcialFixture.php create mode 100644 tests_sei41/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php create mode 100644 tests_sei41/funcional/src/fixtures/TipoProcessoPadraoFixture.php create mode 100644 tests_sei41/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php create mode 100644 tests_sei41/funcional/src/paginas/PaginaMapUnidades.php create mode 100644 tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php create mode 100644 tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php create mode 100755 tests_sei41/funcional/tests/FixtureCenarioBaseTestCase.php create mode 100644 tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php create mode 100644 tests_sei41/funcional/tests/MapeamentoHipoteseLegalTest.php create mode 100644 tests_sei41/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php create mode 100755 tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php create mode 100755 tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoCadastroTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoLimiteTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoTest.php create mode 100644 tests_sei41/funcional/tests/TramiteBlocoExternoUnidadeTest.php create mode 100755 tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php create mode 100755 tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php rename tests_sei41/funcional/tests/{TramiteProcessoContendoDocumentoMovidoDestino.php => TramiteProcessoContendoDocumentoMovidoDestinoTest.php} (84%) create mode 100755 tests_sei41/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php rename tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php => tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php (70%) create mode 100755 tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php create mode 100755 tests_sei41/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php delete mode 100644 tests_super/funcional/src/fixtures/AnexoProcessoFixture.php delete mode 100644 tests_super/funcional/src/fixtures/Anexofixture.php delete mode 100644 tests_super/funcional/src/fixtures/AtividadeFixture.php delete mode 100644 tests_super/funcional/src/fixtures/ContatoFixture.php delete mode 100644 tests_super/funcional/src/fixtures/ParticipanteFixture.php create mode 100644 tests_super/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php delete mode 100644 tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php delete mode 100644 tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php delete mode 100644 tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php delete mode 100644 tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php create mode 100644 tests_super/funcional/src/fixtures/TipoProcessoPadraoFixture.php create mode 100644 tests_super/funcional/src/paginas/PaginaMapUnidades.php create mode 100644 tests_super/funcional/src/paginas/PaginaPenHipoteseLegalListar.php create mode 100755 tests_super/funcional/tests/FixtureCenarioBaseTestCase.php create mode 100644 tests_super/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php create mode 100644 tests_super/funcional/tests/MapeamentoHipoteseLegalTest.php create mode 100644 tests_super/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php create mode 100755 tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php create mode 100755 tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoInclusaoTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoUnidadeTest.php create mode 100755 tests_super/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php create mode 100755 tests_super/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php create mode 100755 tests_super/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php rename tests_super/funcional/tests/{TramiteProcessoUnidadeSemHierarquiaPai.php => TramiteProcessoUnidadeSemHierarquiaPaiTest.php} (70%) create mode 100755 tests_super/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php create mode 100755 tests_super/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php diff --git a/Makefile b/Makefile index 9d1d085e9..2d692f38a 100755 --- a/Makefile +++ b/Makefile @@ -108,7 +108,8 @@ dist: @mv $(SEI_MODULO_DIR)/scripts/sei_atualizar_versao_modulo_pen.php $(SEI_SCRIPTS_DIR)/ @mv $(SEI_MODULO_DIR)/scripts/sip_atualizar_versao_modulo_pen.php $(SIP_SCRIPTS_DIR)/ @mv $(SEI_MODULO_DIR)/scripts/verifica_instalacao_modulo_pen.php $(SEI_SCRIPTS_DIR)/ - @mv $(SEI_MODULO_DIR)/scripts/MonitoramentoTarefasPEN.php $(SEI_SCRIPTS_DIR)/ + @mv $(SEI_MODULO_DIR)/scripts/MonitoramentoEnvioTarefasPEN.php $(SEI_SCRIPTS_DIR)/ + @mv $(SEI_MODULO_DIR)/scripts/MonitoramentoRecebimentoTarefasPEN.php $(SEI_SCRIPTS_DIR)/ @mv $(SEI_MODULO_DIR)/scripts/ProcessamentoTarefasPEN.php $(SEI_SCRIPTS_DIR)/ @mv $(SEI_MODULO_DIR)/config/ConfiguracaoModPEN.exemplo.php $(SEI_CONFIG_DIR)/ @mv $(SEI_MODULO_DIR)/config/supervisor.exemplo.ini $(SEI_CONFIG_DIR)/ @@ -518,26 +519,38 @@ atualizaSequencia: tramitar-pendencias: i=1; while [ "$$i" -le 2 ]; do \ echo "Executando T1 $$i"; \ - $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php & \ - $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php; \ + $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; + $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php & \ + $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; + $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php; \ i=$$((i + 1));\ done & i=1; while [ "$$i" -le 2 ]; do \ echo "Executando T2 $$i"; \ - $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php & \ - $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php; \ + $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; + $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php & \ + $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; + $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php; \ i=$$((i + 1));\ done -tramitar-pendencias-simples: - @$(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php; \ - $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php; \ - $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php; +tramitar-pendencias-simples: tramitar-pendencias-simples-org1 tramitar-pendencias-simples-org2 + @$(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php; + +tramitar-pendencias-simples-org1: + @$(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; \ + $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php; + +tramitar-pendencias-simples-org2: + @$(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; \ + $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php; tramitar-pendencias-silent: @echo 'Executando monitoramento de pendências do Org1 e Org2' @i=1; while [ "$$i" -le 3000 ]; do \ - $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php > /dev/null 2>&1 & \ - $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoTarefasPEN.php > /dev/null 2>&1 ; \ + $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; \ + $(CMD_COMPOSE_FUNC) exec org1-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php; \ + $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php; \ + $(CMD_COMPOSE_FUNC) exec org2-http php /opt/sei/scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php; \ i=$$((i + 1));\ done diff --git a/docs/changelogs/CHANGELOG-3.7.0.md b/docs/changelogs/CHANGELOG-3.7.0.md new file mode 100644 index 000000000..ec84bc7eb --- /dev/null +++ b/docs/changelogs/CHANGELOG-3.7.0.md @@ -0,0 +1,91 @@ +# NOTAS DE VERSÃO MOD-SEI-PEN (versão 3.7.0) + +Este documento descreve as principais mudanças aplicadas nesta versão do módulo de integração do SEI com o TRAMITA.GOV.BR. + +As melhorias entregues em cada uma das versões são cumulativas, ou seja, contêm todas as implementações realizadas em versões anteriores. + +## Compatibilidade de versões +* O módulo é compatível com as seguintes versões do **SEI**: + * 4.0.0 até 4.0.12, + * 4.1.1. + +Para maiores informações sobre os procedimentos de instalação ou atualização, acesse os seguintes documentos localizados no pacote de distribuição mod-sei-pen-VERSAO.zip: +> Atenção: É impreterível seguir rigorosamente o disposto no README.md do Módulo para instalação ou atualização com sucesso. +* **INSTALACAO.md** - Procedimento de instalação e configuração do módulo +* **ATUALIZACAO.md** - Procedimento específicos para atualização de uma versão anterior + +### Lista de melhorias e correções de problemas + +Todas as atualizações podem incluir itens referentes à segurança, requisito em permanente monitoramento e evolução, motivo pelo qual a atualização com a maior brevidade possível é sempre recomendada. + +#### **CORREÇÕES DE PROBLEMAS** + +#### Nesta versão, foram corrigidos os seguintes erros: + +* Tramitação de processos com caracteres inválidos no assunto [#328](https://github.com/pengovbr/mod-sei-pen/issues/328); + +* **Atualização do script de instalação/atualização:** a variável "EnviarApenasComponentesDigitaisPendentes" é inserida automaticamente no arquivo de configuração do módulo. Essa variável tornou-se obrigatória a partir desta versão [#527](https://github.com/pengovbr/mod-sei-pen/issues/527); + +* Implementação uma regra que impede a inclusão de novas assinaturas em documentos já tramitados, evitando problemas de hash nos trâmites [#333](https://github.com/pengovbr/mod-sei-pen/issues/333); + +* **Visualização de Hipóteses Legais:** Hipóteses Legais desativadas no Portal de Administração não serão exibidas ao criar um novo mapeamento [#354](https://github.com/pengovbr/mod-sei-pen/issues/354); + +* **Acesso ao envio por bloco:** o script de atualização do SIP foi alterado para assegurar que as funcionalidades de envio por bloco estejam disponíveis para usuários com permissões de perfil Básico [#523](https://github.com/pengovbr/mod-sei-pen/issues/523) e [#542](https://github.com/pengovbr/mod-sei-pen/issues/542); + +#### **MELHORIAS** + +#### As melhorias implementadas nesta versão incluem: + +* **Verificação de tamanho de componentes digitais:** antes de iniciar o download, o sistema agora verifica, pelos metadados, se o tamanho das componentes digitais é aceito no SPE de destino [#155](https://github.com/pengovbr/mod-sei-pen/issues/155); + +* Mapeamento Automático de Hipóteses Legais [#350](https://github.com/pengovbr/mod-sei-pen/issues/350); + +* Mensagem aprimorada para tentativas de envio de trâmites por unidades incorretamente mapeadas [#481](https://github.com/pengovbr/mod-sei-pen/issues/481); + +* **Registro no histórico do processo:** alterações no tipo de processo agora são registradas no histórico [#416](https://github.com/pengovbr/mod-sei-pen/issues/416); + +* **Limitação de repositórios e unidades:** Gestores de Protocolo agora podem limitar quais repositórios e unidades aparecem na lista de destino de cada unidade mapeada [#196](https://github.com/pengovbr/mod-sei-pen/issues/196); + +* Remoção do ícone de organograma na tela de envio de trâmite externo e envio de bloco de trâmite exteno [#540](https://github.com/pengovbr/mod-sei-pen/issues/540); + +* **Ajuste no menu:** Tela _Processos Tramitados em Lote_ removida e melhoria no layout da tela _Processos em Tramitação Externa_ [#475](https://github.com/pengovbr/mod-sei-pen/issues/475); + +* **Blocos de Trâmite Externo:** + - Mensagem aprimirada após o envio de um bloco [#435](https://github.com/pengovbr/mod-sei-pen/issues/435); + - Novo botão para remover processo de bloco e reformulação das regras negociais ([#496](https://github.com/pengovbr/mod-sei-pen/issues/496), [#506](https://github.com/pengovbr/mod-sei-pen/issues/506), [#536](https://github.com/pengovbr/mod-sei-pen/issues/536), [#610](https://github.com/pengovbr/mod-sei-pen/issues/610), [#627](https://github.com/pengovbr/mod-sei-pen/issues/627), [#629](https://github.com/pengovbr/mod-sei-pen/issues/629), [#635](https://github.com/pengovbr/mod-sei-pen/issues/635), [#648](https://github.com/pengovbr/mod-sei-pen/issues/648) e [#696](https://github.com/pengovbr/mod-sei-pen/issues/696)), incluindo: + + Blocos criados em versões anteriores não serão recuperados após atualização; + + Blocos estarão visíveis apenas para unidades onde foram criados e que estiverem devidamente mapeadas; + + Processos incluídos em bloco, e não tramitados, devem ser removidos do bloco antes de tramitarem individualmente; + + Reclassificação dos Estados dos blocos conforme a Situação dos processos tramitados."; + +Para obter informações detalhadas sobre cada um dos passos de atualização, vide arquivo **ATUALIZACAO.md**. + +#### Instruções + +1. Baixar a última versão do módulo de instalação do sistema (arquivo `mod-sei-pen-[VERSÃO].zip`) localizado na página de [Releases do projeto MOD-SEI-PEN](https://github.com/spbgovbr/mod-sei-pen/releases), seção **Assets**. _Somente usuários autorizados previamente pela Coordenação-Geral do Processo Eletrônico Nacional podem ter acesso às versões._ + +2. Fazer backup dos diretórios "sei", "sip" e "infra" do servidor web; + +3. Descompactar o pacote de instalação `mod-sei-pen-[VERSÃO].zip`; + +4. Copiar os diretórios descompactados "sei", "sip" para os servidores, sobrescrevendo os arquivos existentes; + +5. Executar o script de instalação/atualização `sei_atualizar_versao_modulo_pen.php` do módulo para o SEI localizado no diretório `sei/scripts/mod-pen/` + +```bash +php -c /etc/php.ini /sei/scripts/mod-pen/sei_atualizar_versao_modulo_pen.php +``` + +6. Executar o script de instalação/atualização `sip_atualizar_versao_modulo_pen.php` do módulo para o SIP localizado no diretório `sip/scripts/mod-pen/` + +```bash +php -c /etc/php.ini /sip/scripts/mod-pen/sip_atualizar_versao_modulo_pen.php +``` + +7. Verificar a correta instalação e configuração do módulo + +Para executar a verificação, execute o script ```verifica_instalacao_modulo_pen.php``` localizado no diretório de scripts do SEI ```/sei/scripts/mod-pen/```. + +```bash +$ php -c /etc/php.ini /sei/scripts/mod-pen/verifica_instalacao_modulo_pen.php +``` diff --git a/src/DebugPen.php b/src/DebugPen.php index 22304fe9e..bc0094b2e 100755 --- a/src/DebugPen.php +++ b/src/DebugPen.php @@ -43,6 +43,6 @@ public function gravar($str, $numIdentacao = 0, $bolLogTempoProcessamento = true } } - $this->objInfraDebug->gravar(utf8_encode($strLog)); + $this->objInfraDebug->gravar(mb_convert_encoding($strLog, 'UTF-8', 'ISO-8859-1')); } } diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index c5bfcc816..faec849ab 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -1,7 +1,7 @@ verificarPermissao('pen_expedir_lote'); + $bolAcaoIncluirProcessoEmBloco = $objSessaoSEI->verificarPermissao('pen_incluir_processo_em_bloco_tramite'); - if ($bolAcaoGerarPendencia) { + $bolBlocoAbertoUnidade = false; + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + $objTramiteEmBlocoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retNumIdUnidade(); + $objTramiteEmBlocoDTO->retStrDescricao(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + if (count($objTramiteEmBlocoRN->listar($objTramiteEmBlocoDTO)) > 0) { + $bolBlocoAbertoUnidade = true; + } + + if ($bolAcaoIncluirProcessoEmBloco && $bolBlocoAbertoUnidade) { $objPaginaSEI = PaginaSEI::getInstance(); $objAtividadeDTO = new AtividadeDTO(); @@ -67,12 +80,10 @@ public function montarBotaoControleProcessos() { $objAtividadeRN = new AtividadeRN(); $numRegistros = $objAtividadeRN->contarRN0035($objAtividadeDTO); - $objPenUnidadeDTO = new PenUnidadeDTO(); - $objPenUnidadeDTO->retNumIdUnidade(); - $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objPenUnidadeRN = new PenUnidadeRN(); - - if ($numRegistros > 0 && $objPenUnidadeRN->contar($objPenUnidadeDTO) != 0) { + // Verifica se existe uma unidade mapeada + $bolUnidadeMapeada = $objTramiteEmBlocoRN->existeUnidadeMapeadaParaUnidadeLogada(); + + if ($numRegistros > 0 && $bolUnidadeMapeada) { $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); $strAcoesProcedimento .= ''; $strAcoesProcedimento .= 'getDiretorioImagens()) . '" class="infraCorBarraSistema" alt="Incluir Processos no Bloco de Trâmite" title="Incluir Processos no Bloco de Trâmite" />'; @@ -116,6 +127,7 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) //Verificação da Restrição de Acesso a Funcionalidade $bolAcaoExpedirProcesso = $objSessaoSEI->verificarPermissao('pen_procedimento_expedir'); + $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); $objProcedimentoDTO = $objExpedirProcedimentoRN->consultarProcedimento($dblIdProcedimento); @@ -124,32 +136,50 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO )); - //Apresenta o botão de expedir processo - if ($bolFlagAberto && $bolAcaoExpedirProcesso && $bolProcessoEstadoNormal && $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_SIGILOSO) { - - $objPenUnidadeDTO = new PenUnidadeDTO(); - $objPenUnidadeDTO->retNumIdUnidade(); - $objPenUnidadeDTO->setNumIdUnidade($numIdUnidadeAtual); - $objPenUnidadeRN = new PenUnidadeRN(); + $bolBlocoAbertoUnidade = false; + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + $objTramiteEmBlocoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retNumIdUnidade(); + $objTramiteEmBlocoDTO->retStrDescricao(); + PaginaSEI::getInstance()->prepararOrdenacao($objTramiteEmBlocoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_DESC); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + if (count($objTramiteEmBlocoRN->listar($objTramiteEmBlocoDTO)) > 0) { + $bolBlocoAbertoUnidade = true; + } - if($objPenUnidadeRN->contar($objPenUnidadeDTO) != 0) { - $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); - $strAcoesProcedimento .= 'Envio Externo de Processo'; + $bolProcessoEmBloco = false; + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($dblIdProcedimento); + $objPenBlocoProcessoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + if (count($arrObjPenBlocoProcessoDTO) > 0){ + $concluido = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE + ); + foreach ($arrObjPenBlocoProcessoDTO as $objBlocoProcessoDTO) { + if (!in_array($objBlocoProcessoDTO->getNumIdAndamento(), $concluido)) { + $bolProcessoEmBloco = true; + } } } - //Apresenta o botão da página de recibos - if($bolAcaoExpedirProcesso){ - $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); - $objProcessoEletronicoDTO->retDblIdProcedimento(); - $objProcessoEletronicoDTO->setDblIdProcedimento($dblIdProcedimento); - $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - if($objProcessoEletronicoRN->contar($objProcessoEletronicoDTO) != 0){ + // Verifica se existe uma unidade mapeada + $bolUnidadeMapeada = $objTramiteEmBlocoRN->existeUnidadeMapeadaParaUnidadeLogada(); + + //Apresenta o botão de expedir processo + if ($bolUnidadeMapeada && !$bolProcessoEmBloco && $bolFlagAberto && $bolAcaoExpedirProcesso && $bolProcessoEstadoNormal && $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_SIGILOSO) { $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); - $strAcoesProcedimento .= ''; - $strAcoesProcedimento .= 'Consultar Recibos'; - $strAcoesProcedimento .= ''; - } + $strAcoesProcedimento .= 'Envio Externo de Processo'; } //Apresenta o botão de cancelar trâmite @@ -164,15 +194,79 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) $strAcoesProcedimento .= 'Cancelar Tramitação Externa'; $strAcoesProcedimento .= ''; } - + //Apresenta o botão de incluir processo no bloco de trâmite - $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); - $strAcoesProcedimento .= ' getDiretorioImagens()) .'" title="Incluir Processo no Bloco de Trâmite" alt="Incluir Processo no Bloco de Trâmite"/>'; + $bolAcaoIncluirProcessoEmBloco = $objSessaoSEI->verificarPermissao('pen_incluir_processo_em_bloco_tramite'); + if ($bolUnidadeMapeada && !$bolProcessoEmBloco && $bolBlocoAbertoUnidade && $bolFlagAberto && $bolAcaoIncluirProcessoEmBloco && $bolProcessoEstadoNormal && $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_SIGILOSO) { + $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); + $strAcoesProcedimento .= ' getDiretorioImagens()) .'" title="Incluir Processo no Bloco de Trâmite" alt="Incluir Processo no Bloco de Trâmite"/>'; + } + //Apresenta o botão de excluir processo no bloco de trâmite + $bolAcaoExcluirProcessoEmBloco = $objSessaoSEI->verificarPermissao('pen_tramita_em_bloco_protocolo_excluir'); + if ($bolUnidadeMapeada && $bolProcessoEmBloco && $bolFlagAberto && $bolAcaoExcluirProcessoEmBloco && $bolProcessoEstadoNormal && $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_SIGILOSO) { + $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); + $strAcoesProcedimento .= ' getDiretorioImagens()) .'" title="Remover Processo do Bloco de Trâmite" alt="Remover Processo do Bloco de Trâmite"/>'; + } + + //Apresenta o botão da página de recibos + if($bolAcaoExpedirProcesso){ + $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); + $objProcessoEletronicoDTO->retDblIdProcedimento(); + $objProcessoEletronicoDTO->setDblIdProcedimento($dblIdProcedimento); + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + if($objProcessoEletronicoRN->contar($objProcessoEletronicoDTO) != 0){ + $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); + $strAcoesProcedimento .= ''; + $strAcoesProcedimento .= 'Consultar Recibos'; + $strAcoesProcedimento .= ''; + } + } return array($strAcoesProcedimento); } + public function excluirHipoteseLegal($arrObjHipoteseLegalDTO) + { + $this->validarExcluirDesativarHipoteseLegal($arrObjHipoteseLegalDTO, 'exclusão'); + } + + public function desativarHipoteseLegal($arrObjHipoteseLegalDTO) + { + $this->validarExcluirDesativarHipoteseLegal($arrObjHipoteseLegalDTO, 'inativação'); + } + + public function validarExcluirDesativarHipoteseLegal($arrObjHipoteseLegalAPI, $strAcao) + { + $excecao = new InfraException(); + foreach ($arrObjHipoteseLegalAPI as $objHipoteseLegalAPI) { + $objPenHipoteseLegalDTO = new PenRelHipoteseLegalDTO(); + $objPenHipoteseLegalDTO->setNumIdHipoteseLegal($objHipoteseLegalAPI->getIdHipoteseLegal()); + $objPenHipoteseLegalDTO->retNumIdHipoteseLegal(); + $objPenHipoteseLegalDTO->setNumMaxRegistrosRetorno(1); + + $objPenRelHipoteseLegalEnvioRN = new PenRelHipoteseLegalEnvioRN(); + $objPenRelHipoteseLegalEnvioDTO = $objPenRelHipoteseLegalEnvioRN->consultar($objPenHipoteseLegalDTO); + + $objPenRelHipoteseLegalRecebidoRN = new PenRelHipoteseLegalRecebidoRN(); + $objPenRelHipoteseLegalRecebidoDTO = $objPenRelHipoteseLegalRecebidoRN->consultar($objPenHipoteseLegalDTO); + + if (!is_null($objPenRelHipoteseLegalEnvioDTO) || !is_null($objPenRelHipoteseLegalRecebidoDTO)) { + + $objPenHipoteseLegalDTO = new PenHipoteseLegalDTO(); + $objPenHipoteseLegalDTO->setNumIdHipoteseLegal($objHipoteseLegalAPI->getIdHipoteseLegal()); + $objPenHipoteseLegalDTO->retStrNome(); + + $objPenHipoteseLegalRN = new PenHipoteseLegalRN(); + $objPenHipoteseLegalDTO = $objPenHipoteseLegalRN->consultar($objPenHipoteseLegalDTO); + $nome = $objPenHipoteseLegalDTO->getStrNome(); + $excecao->lancarValidacao($this->getNome().": + A $strAcao da hipótese legal $nome não é permitida. + A referida hipótese legal está relacionada a uma hipótese legal do Tramita." + ); + } + } + } public function montarIconeControleProcessos($arrObjProcedimentoAPI = array()) { @@ -355,24 +449,6 @@ public function montarIconeProcesso(ProcedimentoAPI $objProcedimentoAP) private function getObjArvoreAcao($dblIdProcedimento, $arrObjArvoreAcaoItemAPI) { - // $objAtividadeDTO = new AtividadeDTO(); - // $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimento); - // $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo($idTarefaAtividade)); - // $objAtividadeDTO->setNumMaxRegistrosRetorno(1); - // $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); - // $objAtividadeDTO->retNumIdAtividade(); - - // $objAtividadeRN = new AtividadeRN(); - // $objAtividadeDTO = $objAtividadeRN->consultarRN0033($objAtividadeDTO); - - - // if (!empty($objAtividadeDTO)) { - // if ($idTarefaAtividade == ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO) { - // $arrObjArvoreAcaoItemAPI[] = $this->getObjArvoreAcaoEnviado($dblIdProcedimento); - // } elseif ($idTarefaAtividade == ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO) { - // $arrObjArvoreAcaoItemAPI[] = $this->getObjArvoreAcaoRecebido($dblIdProcedimento); - // } - // } $arrTiProcessoEletronico = array( ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), @@ -658,7 +734,6 @@ private static function formatarXMLAjax($str) $str = str_replace('>', '&gt;', $str); $str = str_replace('\"', '&quot;', $str); $str = str_replace('"', '&quot;', $str); - //$str = str_replace("\n",'_',$str); } return $str; } @@ -700,6 +775,7 @@ public function processarControlador($strAcao) require_once dirname(__FILE__) . '/pen_tramita_em_bloco_protocolo_listar.php'; break; + case 'pen_excluir_processo_em_bloco_tramite': case 'pen_incluir_processo_em_bloco_tramite': case 'pen_tramita_em_bloco_adicionar': require_once dirname(__FILE__) . '/pen_tramite_processo_em_bloco_cadastrar.php'; @@ -851,12 +927,8 @@ public function processarControlador($strAcao) require_once dirname(__FILE__) . '/pen_envio_processo_lote_cadastrar.php'; break; - case 'pen_expedir_lote': - require_once dirname(__FILE__) . '/pen_expedir_lote.php'; - break; - - case 'pen_expedir_lote_listar': - require_once dirname(__FILE__) . '/pen_expedir_lote_listar.php'; + case 'pen_expedir_bloco': + require_once dirname(__FILE__) . '/pen_expedir_bloco.php'; break; case 'pen_map_envio_parcial_listar': @@ -877,52 +949,131 @@ public function processarControlador($strAcao) return true; } + public function autoCompletarUnidadesCadastrar($bolPermiteEnvio = false) + { + $arrObjEstruturaDTO = (array) ProcessoEletronicoINT::autoCompletarEstruturasAutoCompletar($_POST['id_repositorio'], $_POST['palavras_pesquisa'], $bolPermiteEnvio); + if (count($arrObjEstruturaDTO['itens']) == 0) { + return ''; + } - public function processarControladorAjax($strAcao) { - $xml = null; + return self::gerarXMLItensArrInfraDTOAutoCompletar($arrObjEstruturaDTO, 'NumeroDeIdentificacaoDaEstrutura', 'Nome'); + } - switch ($_GET['acao_ajax']) { + public function autoCompletarExpedirProcedimento() + { + $xml = null; + $bolPermiteEnvio = false; + if ($_GET['acao'] != 'pen_procedimento_expedir' && $_GET['acao_ajax'] != 'pen_unidade_auto_completar_expedir_procedimento') { + $bolPermiteEnvio = true; + } - case 'pen_unidade_auto_completar_expedir_procedimento': - $bolPermiteEnvio = false; - if ($_GET['acao'] != 'pen_procedimento_expedir') { - $bolPermiteEnvio = true; + $restricaoCadastrada = false; + if ($bolPermiteEnvio == false) { + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->retNumIdUnidadeRH(); + $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + $arrObjEstruturaDTO = array(); + if (!is_null($objUnidadeDTO)) { + try { + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($objUnidadeDTO->getNumIdUnidadeRH()); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRestricao($_POST['id_repositorio']); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRHRestricao(null, InfraDTO::$OPER_DIFERENTE); + $objPenUnidadeRestricaoDTO->retNumIdUnidadeRHRestricao(); + $objPenUnidadeRestricaoDTO->retStrNomeUnidadeRHRestricao(); + + $objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN(); + $restricaoCadastrada = $objPenUnidadeRestricaoRN->contar($objPenUnidadeRestricaoDTO); + $restricaoCadastrada = $restricaoCadastrada > 0; + + if ($restricaoCadastrada) { + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao('%' . $_POST['palavras_pesquisa'] . '%', InfraDTO::$OPER_LIKE); + $arrEstruturas = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); + + foreach ($arrEstruturas as $key => $unidade) { + if ($unidade->getNumIdUnidadeRHRestricao() != null) { + $arrObjEstruturaDTO[] = $unidade; + } + } + } + } catch (Exception $e) { } + } - $arrObjEstruturaDTO = (array) ProcessoEletronicoINT::autoCompletarEstruturasAutoCompletar($_POST['id_repositorio'], $_POST['palavras_pesquisa'], $bolPermiteEnvio); - - if (count($arrObjEstruturaDTO['itens']) > 0) { - $xml = self::gerarXMLItensArrInfraDTOAutoCompletar($arrObjEstruturaDTO, 'NumeroDeIdentificacaoDaEstrutura', 'Nome'); - } else { + if (count($arrObjEstruturaDTO) > 0) { + $xml = InfraAjax::gerarXMLItensArrInfraDTO($arrObjEstruturaDTO, 'IdUnidadeRHRestricao', 'NomeUnidadeRHRestricao'); + } else if ($restricaoCadastrada) { return ''; - } - break; + } + } + if (!$restricaoCadastrada && (is_null($arrObjEstruturaDTO) || count($arrObjEstruturaDTO) == 0)) { + $xml = $this->autoCompletarUnidadesCadastrar($bolPermiteEnvio); + } - case 'pen_unidade_auto_completar_mapeados': - // DTO de paginao - $objPenUnidadeDTOFiltro = new PenUnidadeDTO(); - $objPenUnidadeDTOFiltro->retStrSiglaUnidadeRH(); - $objPenUnidadeDTOFiltro->retStrNomeUnidadeRH(); - $objPenUnidadeDTOFiltro->retNumIdUnidade(); - $objPenUnidadeDTOFiltro->retNumIdUnidadeRH(); - - // Filtragem - if(!empty($_POST['palavras_pesquisa']) && $_POST['palavras_pesquisa'] !== 'null') { - $objPenUnidadeDTOFiltro->setStrNomeUnidadeRH('%'.$_POST['palavras_pesquisa'].'%', InfraDTO::$OPER_LIKE); - } + return $xml; + } + + public function penUnidadeAutoCompletarMapeados() + { + // DTO de paginao + $objPenUnidadeDTOFiltro = new PenUnidadeDTO(); + $objPenUnidadeDTOFiltro->retStrSiglaUnidadeRH(); + $objPenUnidadeDTOFiltro->retStrNomeUnidadeRH(); + $objPenUnidadeDTOFiltro->retNumIdUnidade(); + $objPenUnidadeDTOFiltro->retNumIdUnidadeRH(); + + // Filtragem + if (!empty($_POST['palavras_pesquisa']) && $_POST['palavras_pesquisa'] !== 'null') { + $objPenUnidadeDTOFiltro->setStrNomeUnidadeRH('%' . $_POST['palavras_pesquisa'] . '%', InfraDTO::$OPER_LIKE); + } - $objPenUnidadeRN = new PenUnidadeRN(); - $objArrPenUnidadeDTO = (array) $objPenUnidadeRN->listar($objPenUnidadeDTOFiltro); - if (count($objArrPenUnidadeDTO) > 0) { - foreach ($objArrPenUnidadeDTO as $dto) { - $dto->setNumIdUnidadeMap($dto->getNumIdUnidadeRH()); - $dto->setStrDescricaoMap($dto->getStrNomeUnidadeRH(). '-' . $dto->getStrSiglaUnidadeRH()); + $objPenUnidadeRN = new PenUnidadeRN(); + $objArrPenUnidadeDTO = (array) $objPenUnidadeRN->listar($objPenUnidadeDTOFiltro); + if (count($objArrPenUnidadeDTO) == 0) { + return ''; + } + + foreach ($objArrPenUnidadeDTO as $dto) { + $dto->setNumIdUnidadeMap($dto->getNumIdUnidadeRH()); + $dto->setStrDescricaoMap($dto->getStrNomeUnidadeRH() . '-' . $dto->getStrSiglaUnidadeRH()); + } + + return InfraAjax::gerarXMLItensArrInfraDTO($objArrPenUnidadeDTO, 'IdUnidadeMap', 'DescricaoMap'); + } + + public function processarControladorAjax($strAcao) { + $xml = null; + + switch ($_GET['acao_ajax']) { + + case 'pen_listar_repositorios_estruturas_auto_completar': + try { + $arrObjEstruturaDTO = (array) ProcessoEletronicoINT::autoCompletarRepositorioEstruturas($_POST['palavras_pesquisa']); + if (count($arrObjEstruturaDTO) > 0) { + $xml = InfraAjax::gerarXMLItensArrInfraDTO($arrObjEstruturaDTO, 'Id', 'Nome'); + } else { + return ''; } - $xml = InfraAjax::gerarXMLItensArrInfraDTO($objArrPenUnidadeDTO, 'IdUnidadeMap', 'DescricaoMap'); - } else { - return ''; + }catch(Throwable $e){ + $mensagem = "Falha na obtenção dos Repositórios de Estruturas Organizacionais"; + throw new InfraException($mensagem, $e); } break; + case 'pen_unidade_auto_completar_cadastro': + $xml = $this->autoCompletarUnidadesCadastrar(); + break; + case 'pen_unidade_auto_completar_expedir_procedimento': + $xml = $this->autoCompletarExpedirProcedimento(); + break; + + case 'pen_unidade_auto_completar_mapeados': + $xml = $this->penUnidadeAutoCompletarMapeados(); + break; case 'pen_apensados_auto_completar_expedir_procedimento': $dblIdProcedimentoAtual = $_POST['id_procedimento_atual']; @@ -964,12 +1115,12 @@ public function processarControladorAjax($strAcao) { $registrosPorPagina = 50; $idRepositorioEstruturaOrganizacional = $_POST['idRepositorioEstruturaOrganizacional']; $numeroDeIdentificacaoDaEstrutura = $_POST['numeroDeIdentificacaoDaEstrutura']; - $siglaUnidade = ($_POST['siglaUnidade'] == '') ? null : utf8_encode($_POST['siglaUnidade']); - $nomeUnidade = ($_POST['nomeUnidade'] == '') ? null : utf8_encode($_POST['nomeUnidade']); + $siglaUnidade = ($_POST['siglaUnidade'] == '') ? null : mb_convert_encoding($_POST['siglaUnidade'], 'UTF-8', 'ISO-8859-1'); + $nomeUnidade = ($_POST['nomeUnidade'] == '') ? null : mb_convert_encoding($_POST['nomeUnidade'], 'UTF-8', 'ISO-8859-1'); $offset = $_POST['offset'] * $registrosPorPagina; $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $arrObjEstruturaDTO = $objProcessoEletronicoRN->listarEstruturas($idRepositorioEstruturaOrganizacional, null, $numeroDeIdentificacaoDaEstrutura, $nomeUnidade, $siglaUnidade, $offset, $registrosPorPagina); + $arrObjEstruturaDTO = $objProcessoEletronicoRN->listarEstruturasBuscaTextual($idRepositorioEstruturaOrganizacional, null, $numeroDeIdentificacaoDaEstrutura, $nomeUnidade, $siglaUnidade, $offset, $registrosPorPagina); $interface = new ProcessoEletronicoINT(); //Gera a hierarquia de SIGLAS das estruturas @@ -979,9 +1130,9 @@ public function processarControladorAjax($strAcao) { if(!is_null($arrHierarquiaEstruturaDTO[0])){ foreach ($arrHierarquiaEstruturaDTO as $key => $estrutura) { //Monta um array com as estruturas para retornar o JSON - $arrEstruturas['estrutura'][$key]['nome'] = utf8_encode($estrutura->get('Nome')); + $arrEstruturas['estrutura'][$key]['nome'] = mb_convert_encoding($estrutura->get('Nome'), 'UTF-8', 'ISO-8859-1'); $arrEstruturas['estrutura'][$key]['numeroDeIdentificacaoDaEstrutura'] = $estrutura->get('NumeroDeIdentificacaoDaEstrutura'); - $arrEstruturas['estrutura'][$key]['sigla'] = utf8_encode($estrutura->get('Sigla')); + $arrEstruturas['estrutura'][$key]['sigla'] = mb_convert_encoding($estrutura->get('Sigla'), 'UTF-8', 'ISO-8859-1'); $arrEstruturas['estrutura'][$key]['ativo'] = $estrutura->get('Ativo'); $arrEstruturas['estrutura'][$key]['aptoParaReceberTramites'] = $estrutura->get('AptoParaReceberTramites'); $arrEstruturas['estrutura'][$key]['codigoNoOrgaoEntidade'] = $estrutura->get('CodigoNoOrgaoEntidade'); @@ -1030,7 +1181,7 @@ private function obterHierarquiaEstruturaDeUnidadeExterna($idRepositorioEstrutur if (!is_null($arrObjEstruturaDTO[0])) { $interface = new ProcessoEletronicoINT(); $arrHierarquiaEstruturaDTO = $interface->gerarHierarquiaEstruturas($arrObjEstruturaDTO); - $arrEstruturas[$key]->nome = utf8_encode($arrHierarquiaEstruturaDTO[0]->get('Nome')); + $arrEstruturas[$key]->nome = mb_convert_encoding($arrHierarquiaEstruturaDTO[0]->get('Nome'), 'UTF-8', 'ISO-8859-1'); } } } @@ -1108,5 +1259,34 @@ public function processarPendencias() SessaoSEI::getInstance(false); ProcessarPendenciasRN::getInstance()->processarPendencias(); } + + public function assinarDocumento($arrObjDocumentoAPI = array()){ + + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + + foreach($arrObjDocumentoAPI as $objDocumentoAPI){ + //Pode ser assinado documentos de mais de um processo + $objProcessoEletronicoPesquisaDTO = new ProcessoEletronicoDTO(); + $objProcessoEletronicoPesquisaDTO->setDblIdProcedimento($objDocumentoAPI->getIdProcedimento()); + $objUltimoTramiteRecebidoDTO = $objProcessoEletronicoRN->consultarUltimoTramite($objProcessoEletronicoPesquisaDTO); + + //Se não tiver trâmite não há o que se checar + if(!is_null($objUltimoTramiteRecebidoDTO)){ + $arrObjComponentesDigitais = $objProcessoEletronicoRN->listarComponentesDigitais($objUltimoTramiteRecebidoDTO); + if(!is_null($arrObjComponentesDigitais)){ + foreach($arrObjComponentesDigitais as $objComponentesDigitais){ + if ($objComponentesDigitais->getDblIdDocumento() == $objDocumentoAPI->getIdDocumento()){ + $nomeModulo = $this->getNome(); + $mensagem = "$nomeModulo: Prezado(a) usuário(a) esse documento já foi tramitado externamente via Tramita GOV.BR. Por esse motivo, este documento não pode receber uma nova assinatura."; + LogSEI::getInstance()->gravar($mensagem, LogSEI::$AVISO); + $objInfraException = new InfraException(); + $objInfraException->adicionarValidacao($mensagem); + $objInfraException->lancarValidacoes(); + } + } + } + } + } + } } class ModuloIncompativelException extends InfraException { } \ No newline at end of file diff --git a/src/bd/TramitaEmBlocoProtocoloBD.php b/src/bd/PenBlocoProcessoBD.php similarity index 81% rename from src/bd/TramitaEmBlocoProtocoloBD.php rename to src/bd/PenBlocoProcessoBD.php index 8095e9e58..14fd83d61 100644 --- a/src/bd/TramitaEmBlocoProtocoloBD.php +++ b/src/bd/PenBlocoProcessoBD.php @@ -5,10 +5,10 @@ /** * Classe gererica de persistência com o banco de dados */ -class TramitaEmBlocoProtocoloBD extends InfraBD { +class PenBlocoProcessoBD extends InfraBD { public function __construct(InfraIBanco $objInfraIBanco) { parent::__construct($objInfraIBanco); } -} \ No newline at end of file +} diff --git a/src/bd/PenExpedirLoteBD.php b/src/bd/PenExpedirLoteBD.php deleted file mode 100755 index d5fa71600..000000000 --- a/src/bd/PenExpedirLoteBD.php +++ /dev/null @@ -1,10 +0,0 @@ -executarSql('ALTER TABLE '.$strNomeTabela.' ADD CONSTRAINT UK_'.$strNomeTabela.' UNIQUE('.implode(', ', $arrNomeChave).')'); } + public function novoRenomearTabela($strNomeTabelaAtual, $strNomeTabelaNovo){ + + if($this->isTabelaExiste($strNomeTabelaAtual)) { + + $objInfraBanco = $this->getObjInfraIBanco(); + $strTableDrive = get_parent_class($objInfraBanco); + $strQuery = ''; + + switch ($strTableDrive) { + case 'InfraMySqli': + $strQuery = sprintf("ALTER TABLE `%s` RENAME TO `%s`", $strNomeTabelaAtual, $strNomeTabelaNovo); + break; + + case 'InfraSqlServer': + $strQuery = sprintf("sp_rename '%s', '%s'", $strNomeTabelaAtual, $strNomeTabelaNovo); + break; + + case 'InfraOracle': + $strQuery = sprintf("RENAME %s TO %s", $strNomeTabelaAtual, $strNomeTabelaNovo); + break; + + case 'InfraPostgreSql': + $strQuery = sprintf("ALTER TABLE %s RENAME TO %s", $strNomeTabelaAtual, $strNomeTabelaNovo); + break; + } + + $objInfraBanco->executarSql($strQuery); + } + } + public function renomearTabela($strNomeTabelaAtual, $strNomeTabelaNovo){ if($this->isTabelaExiste($strNomeTabelaAtual)) { diff --git a/src/bd/PenUnidadeRestricaoBD.php b/src/bd/PenUnidadeRestricaoBD.php new file mode 100644 index 000000000..981e1e069 --- /dev/null +++ b/src/bd/PenUnidadeRestricaoBD.php @@ -0,0 +1,12 @@ + diff --git a/src/bin/verificar-reboot-fila-sem-supervisor.sh b/src/bin/verificar-reboot-fila-sem-supervisor.sh index 351dd035e..8aa3b1b35 100755 --- a/src/bin/verificar-reboot-fila-sem-supervisor.sh +++ b/src/bin/verificar-reboot-fila-sem-supervisor.sh @@ -14,7 +14,8 @@ r=$? if [ "$r" == "2" ]; then echo "Retornou com erro critico. Reboot... $(date)" - kill $(ps -ef | grep "MonitoramentoTarefasPEN.php" | grep -v grep | awk '{print $2}') + kill $(ps -ef | grep "MonitoramentoEnvioTarefasPEN.php" | grep -v grep | awk '{print $2}') + kill $(ps -ef | grep "MonitoramentoRecebimentoTarefasPEN.php" | grep -v grep | awk '{print $2}') echo "rebootado" rm -rf pendencias.json fi diff --git a/src/config/supervisor.exemplo.ini b/src/config/supervisor.exemplo.ini index 8dc69985e..3b028c0b4 100755 --- a/src/config/supervisor.exemplo.ini +++ b/src/config/supervisor.exemplo.ini @@ -16,6 +16,24 @@ stdout_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-out stderr_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-err stderr_events_enabled=true +[program:monitoramento_envio_tarefas_pen] +command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php --monitorar --segundo-plano +directory=/opt/sei/web +user=root +numprocs=1 +autostart=true +autorestart=true +startsecs=5 +startretries=1000 +log_stdout=true +log_stderr=true +logfile_maxbytes=10MB +logfile_backups=50 +logfile=/var/log/supervisor/sei_monitorar_pendencias.log +stdout_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-out +stderr_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-err +stderr_events_enabled=true + [program:processamento_tarefas_pen] command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/ProcessamentoTarefasPEN.php --worker=%(process_num)02d directory=/opt/sei/web diff --git a/src/dto/ExpedirProcedimentoDTO.php b/src/dto/ExpedirProcedimentoDTO.php index 998d2ec50..ca818619d 100755 --- a/src/dto/ExpedirProcedimentoDTO.php +++ b/src/dto/ExpedirProcedimentoDTO.php @@ -21,8 +21,8 @@ public function montar() { $this->adicionarAtributo(InfraDTO::$PREFIXO_BOL, 'SinUrgente'); $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdMotivoUrgencia'); $this->adicionarAtributo(InfraDTO::$PREFIXO_ARR, 'IdProcessoApensado'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_BOL, 'SinProcessamentoEmLote'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdLote'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_BOL, 'SinProcessamentoEmBloco'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdBloco'); $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade'); $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdUnidade'); } diff --git a/src/dto/PenBlocoProcessoDTO.php b/src/dto/PenBlocoProcessoDTO.php new file mode 100644 index 000000000..14785702c --- /dev/null +++ b/src/dto/PenBlocoProcessoDTO.php @@ -0,0 +1,83 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdBlocoProcesso', 'id_bloco_processo'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdRepositorioDestino', 'id_repositorio_destino'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'RepositorioDestino', 'str_repositorio_destino'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdRepositorioOrigem', 'id_repositorio_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeDestino', 'id_unidade_destino'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'UnidadeDestino', 'str_unidade_destino'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeOrigem', 'id_unidade_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'id_usuario'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_registro'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Atualizado', 'dth_atualizado'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Envio', 'dth_envio'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdBloco', 'id_bloco'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'IdProtocolo', 'id_protocolo'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Sequencia', 'sequencia'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdAndamento', 'id_andamento'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdAtividade', 'id_atividade_expedicao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Tentativas', 'tentativas'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_DBL, 'IdProtocoloProtocolo', 'p1.id_protocolo', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'ProtocoloFormatadoProtocolo', 'p1.protocolo_formatado', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaProtocoloProtocolo', 'p1.sta_protocolo', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaNivelAcessoGlobalProtocolo', 'p1.sta_nivel_acesso_global', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUnidadeBloco', 'tb1.id_unidade', 'md_pen_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'tb1.id_usuario', 'md_pen_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaTipoBloco', 'sta_tipo', 'md_pen_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoBloco', 'tb1.sta_estado', 'md_pen_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdProcedimento', 'pe.id_procedimento', 'md_pen_processo_eletronico pe'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NumeroRegistro', 'pe.numero_registro', 'md_pen_processo_eletronico pe'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdTramite', 'pt.id_tramite', 'md_pen_tramite pt'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoProtocolo', 'p1.sta_estado', 'protocolo p1'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUsuario', 'nome', 'usuario'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUnidade', 'nome', 'unidade'); + + $this->adicionarAtributo(InfraDTO::$PREFIXO_ARR, 'ListaProcedimento'); + + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'TramiteDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'AtividadeDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'ProtocoloDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'PenBlocoProcedimentoDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'PalavrasPesquisa'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'SinAberto'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'StaIdTarefa'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'SinObteveRecusa'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'IdxRelBlocoProtocolo'); + + $this->configurarPK('IdBlocoProcesso', InfraDTO::$TIPO_PK_NATIVA); + $this->configurarPK('IdProtocolo', InfraDTO::$TIPO_PK_INFORMADO); + $this->configurarPK('IdBloco', InfraDTO::$TIPO_PK_INFORMADO); + + $this->configurarFK('IdUsuario', 'usuario', 'id_usuario', InfraDTO::$TIPO_FK_OPCIONAL); + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade', InfraDTO::$TIPO_FK_OPCIONAL); + + $this->configurarFK('IdProtocolo', 'protocolo p1', 'p1.id_protocolo'); + $this->configurarFK('IdBloco', 'md_pen_bloco tb1', 'tb1.id'); + $this->configurarFK('IdProtocolo', 'md_pen_processo_eletronico pe', 'pe.id_procedimento', InfraDTO::$TIPO_FK_OPCIONAL); + $this->configurarFK('NumeroRegistro', 'md_pen_tramite pt', 'pt.numero_registro', InfraDTO::$TIPO_FK_OPCIONAL); + } +} diff --git a/src/dto/PenExpedirLoteDTO.php b/src/dto/PenExpedirLoteDTO.php deleted file mode 100755 index 451f0c750..000000000 --- a/src/dto/PenExpedirLoteDTO.php +++ /dev/null @@ -1,43 +0,0 @@ -adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdLote', 'id_lote'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdRepositorioDestino', 'id_repositorio_destino'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'RepositorioDestino', 'str_repositorio_destino'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdRepositorioOrigem', 'id_repositorio_origem'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeDestino', 'id_unidade_destino'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'UnidadeDestino', 'str_unidade_destino'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeOrigem', 'id_unidade_origem'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'id_usuario'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_registro'); - - $this->adicionarAtributo(InfraDTO::$PREFIXO_ARR, 'IdProcedimento'); - - $this->configurarPK('IdLote', InfraDTO::$TIPO_PK_NATIVA); - - $this->configurarFK('IdLote', 'md_pen_seq_expedir_lote', 'id'); - $this->configurarFK('IdUsuario', 'usuario', 'id_usuario'); - $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); - } -} diff --git a/src/dto/PenHipoteseLegalDTO.php b/src/dto/PenHipoteseLegalDTO.php index e00fdd325..0af87abfe 100755 --- a/src/dto/PenHipoteseLegalDTO.php +++ b/src/dto/PenHipoteseLegalDTO.php @@ -25,7 +25,5 @@ public function montar() { $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'Ativo', 'sin_ativo'); $this->configurarPK('IdHipoteseLegal', InfraDTO::$TIPO_PK_NATIVA); - - //$this->configurarExclusaoLogica('Ativo', 'N'); } } diff --git a/src/dto/PenLoteProcedimentoDTO.php b/src/dto/PenLoteProcedimentoDTO.php deleted file mode 100755 index 36476bb6e..000000000 --- a/src/dto/PenLoteProcedimentoDTO.php +++ /dev/null @@ -1,49 +0,0 @@ -adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdLote', 'id_lote'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'IdProcedimento', 'id_procedimento'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdAndamento', 'id_andamento'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdAtividade', 'id_atividade_expedicao'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Tentativas', 'tentativas'); - - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdLote', 'id_lote', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdRepositorioDestino', 'id_repositorio_destino', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'RepositorioDestino', 'str_repositorio_destino', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdRepositorioOrigem', 'id_repositorio_origem', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUnidadeDestino', 'id_unidade_destino', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'UnidadeDestino', 'str_unidade_destino', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUnidadeOrigem', 'id_unidade_origem', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'id_usuario', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade', 'md_pen_expedir_lote'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_registro', 'md_pen_expedir_lote'); - - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'ProcedimentoFormatado', 'protocolo_formatado', 'protocolo'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUsuario', 'nome', 'usuario'); - - $this->configurarPK('IdLote', InfraDTO::$TIPO_PK_INFORMADO); - $this->configurarPK('IdProcedimento', InfraDTO::$TIPO_PK_INFORMADO); - - $this->configurarFK('IdLote', 'md_pen_expedir_lote', 'id_lote'); - $this->configurarFK('IdProcedimento', 'procedimento', 'id_procedimento'); - $this->configurarFK('IdProcedimento', 'protocolo', 'id_protocolo'); - $this->configurarFK('IdUsuario', 'usuario', 'id_usuario'); - $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); - } -} diff --git a/src/dto/PenRelHipoteseLegalDTO.php b/src/dto/PenRelHipoteseLegalDTO.php index c3f218912..d586d1803 100755 --- a/src/dto/PenRelHipoteseLegalDTO.php +++ b/src/dto/PenRelHipoteseLegalDTO.php @@ -27,6 +27,5 @@ public function montar() { $this->configurarPK('IdMap', InfraDTO::$TIPO_PK_NATIVA); $this->configurarFK('IdBarramento', 'md_pen_hipotese_legal', 'id_hipotese_legal'); - //$this->configurarExclusaoLogica('Ativo', 'N'); } } diff --git a/src/dto/PenUnidadeRestricaoDTO.php b/src/dto/PenUnidadeRestricaoDTO.php new file mode 100644 index 000000000..1fc8fe25b --- /dev/null +++ b/src/dto/PenUnidadeRestricaoDTO.php @@ -0,0 +1,43 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Id', 'id'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRH', 'id_unidade_rh'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRestricao', 'id_unidade_restricao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRestricao', 'nome_unidade_restricao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRHRestricao', 'id_unidade_rh_restricao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRHRestricao', 'nome_unidade_rh_restricao'); + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); + } +} diff --git a/src/dto/ReciboTramiteDTO.php b/src/dto/ReciboTramiteDTO.php index f1dc65b8e..5fd5abef6 100755 --- a/src/dto/ReciboTramiteDTO.php +++ b/src/dto/ReciboTramiteDTO.php @@ -12,7 +12,6 @@ public function montar() { $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NumeroRegistro', 'numero_registro'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTramite', 'id_tramite'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Recebimento', 'dth_recebimento'); - //$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'HashComponenteDigital', 'hash_componente_digital'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'CadeiaCertificado', 'cadeia_certificado'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'HashAssinatura', 'hash_assinatura'); } diff --git a/src/dto/TramitaEmBlocoProtocoloDTO.php b/src/dto/TramitaEmBlocoProtocoloDTO.php deleted file mode 100644 index 353b80a76..000000000 --- a/src/dto/TramitaEmBlocoProtocoloDTO.php +++ /dev/null @@ -1,60 +0,0 @@ -adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Id', 'id'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'IdProtocolo', 'id_protocolo'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTramitaEmBloco', 'id_tramita_em_bloco'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Sequencia', 'sequencia'); - $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'IdxRelBlocoProtocolo', 'idx_rel_bloco_protocolo'); - - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_DBL, 'IdProtocoloProtocolo', 'p1.id_protocolo', 'protocolo p1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'ProtocoloFormatadoProtocolo', 'p1.protocolo', 'protocolo p1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaProtocoloProtocolo', 'p1.sta_protocolo', 'protocolo p1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaNivelAcessoGlobalProtocolo', 'p1.sta_nivel_acesso_global', 'protocolo p1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUnidadeBloco', 'tb1.id_unidade', 'md_pen_bloco tb1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'tb1.id_usuario', 'md_pen_bloco tb1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaTipoBloco', 'sta_tipo', 'md_pen_bloco tb1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoBloco', 'sta_estado', 'md_pen_bloco tb1'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdProcedimento', 'pe.id_procedimento', 'md_pen_processo_eletronico pe'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NumeroRegistro', 'pe.numero_registro', 'md_pen_processo_eletronico pe'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdTramite', 'pt.id_tramite', 'md_pen_tramite pt'); - $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoProtocolo', 'p1.sta_estado', 'protocolo p1'); - - $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'TramiteDTO'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'AtividadeDTO'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'ProtocoloDTO'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ, 'PenLoteProcedimentoDTO'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'PalavrasPesquisa'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'SinAberto'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'StaIdTarefa'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'SinObteveRecusa'); - - $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); - $this->configurarPK('IdProtocolo', InfraDTO::$TIPO_PK_INFORMADO); - $this->configurarPK('IdTramitaEmBloco', InfraDTO::$TIPO_PK_INFORMADO); - - $this->configurarFK('IdProtocolo', 'protocolo p1', 'p1.id_protocolo'); - $this->configurarFK('IdTramitaEmBloco', 'md_pen_bloco tb1', 'tb1.id'); - $this->configurarFK('IdProtocolo', 'md_pen_processo_eletronico pe', 'pe.id_procedimento', InfraDTO::$TIPO_FK_OPCIONAL); - $this->configurarFK('NumeroRegistro', 'md_pen_tramite pt', 'pt.numero_registro', InfraDTO::$TIPO_FK_OPCIONAL); - } -} diff --git a/src/dto/TramiteEmBlocoDTO.php b/src/dto/TramiteEmBlocoDTO.php index 6804da689..76622c4bb 100644 --- a/src/dto/TramiteEmBlocoDTO.php +++ b/src/dto/TramiteEmBlocoDTO.php @@ -60,6 +60,12 @@ public function montar() 'sta_estado' ); + $this->adicionarAtributoTabela( + InfraDTO::$PREFIXO_NUM, + 'Ordem', + 'ordem' + ); + $this->adicionarAtributoTabelaRelacionada( InfraDTO::$PREFIXO_STR, 'SiglaUnidade', diff --git a/src/imagens/icone-concluido.svg b/src/imagens/icone-concluido.svg new file mode 100644 index 000000000..ccdaa742b --- /dev/null +++ b/src/imagens/icone-concluido.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/imagens/icone-recusa.svg b/src/imagens/icone-recusa.svg new file mode 100644 index 000000000..4da610652 --- /dev/null +++ b/src/imagens/icone-recusa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/imagens/pen_processo_bloco_excluir.svg b/src/imagens/pen_processo_bloco_excluir.svg new file mode 100644 index 0000000000000000000000000000000000000000..d3bdea9d61058e204a2c6cfec5fad05caf44fea1 GIT binary patch literal 3848 zcmd6qU2hvz5QgU(iT|*K8<709UMF$fK-I))g+!r13qn;DMRuA**p3yuZ3^PA1J65? zlRcZ7wh}jJsXI>!Op@a ztWVip*qQG>v#0jZ+ML?q%zgXXKDAG5-#)XkeQ$^C{%TL`2^sM?W#_i$S=z|g-@f}v_V*a?F#=-*p>c~uV{2i)W-IsJ-~y)`b4Ua zp2EH$9s}M7SYO+hjHD-NO|gimFF>G3e~eeMpeLagFQH|GmL&)$V3M|_qgye%a#nTn z4QS-yxt|!=E@+p?Yww(s7er1dB;VZKoEN1_u8??39K!Aj4T}3I{wh8TEDA&9%m@po z#Bk2vwXaUd2%Vd7BIVsZ@T^(8=I?*ga)G52x4Bu*B}ms;p7Z-1i$B;a&d-?1C*gR> zc*Z07SMKGAbBf2pYhmiACN8sli1jMr#8g@*%VuRYE^Z0Hy9PVYFKxK)OXI4@ia z`_1J(CR<9|^QW81Zq}@-p1()0>OQi)<2_(b2G(m+_D=As>k-jjMGN6M2!&zL2BevF15xYJIX?tcQ;>Iz$+N(jYkj^`Nb75UqPuWh_8`RQ-vcTFuN zIdwkuwSs(^F;>nfkD_|x{t7Q2qpMGj?4n1vOG!R-7|-Bpz-Zv>sVdu?)#@%dCLn21 z;i{?*>$@($?Yq0aQ=wb8r8<8-mP|cMcBEI8Kgsm9m^UR$*C@Z6>$yJ3)F{zVO=+x?%K*@FkmehQ$z+xX-}P2 zvvR}U4y)2$v8T9-?Gl}e+<>)h*BdsPJNZm8Z+Tt`XMDpbi(AZOTiGl=l`BFK+zhch z!=h?VD0C*zL-{7$+w_fQ-9+W&74hMkh`T%0glbB7^c@!&6j7dmK)EiD>rq5W9xFm= zHUV1)uOsGZEboPT$Xi_G>x#t=enza*PAfZ8uhm*2x)Di9D`tVAhn1o+7G^OQ=#~A7 zyYPfZ!mls3$OqL?J#KSa^6EJuKXCn8>p43*q4V+0rzq7sF-tLu*a=%)9;)2|<+DSDZ_muB@wMRZ6^!eW!R6sJIyc#BG^Bb`Q3D~Zv6kH7LIol2vc^*-$8 ztHJruIiEGSO6Y<`;m?^14s-UJT;(&#rfSbQZ1Sa3iN~C+oX46iMI&N5+`yb}*R#e= zc6Ywy{+n^@o$+44)~0((-%AB|*`listarRepositoriosDeEstruturas(); + $arrayRepositorioEstruturas = array(); + foreach ($arrObjRepositorioDTO as $value) { + if (strpos(strtoupper($value->getStrNome()), strtoupper($strPalavrasPesquisa)) !== false) { + $arrayRepositorioEstruturas[] = $value; + } + } + return $arrayRepositorioEstruturas; + } + public static function autoCompletarProcessosApensados($dblIdProcedimentoAtual, $numIdUnidadeAtual, $strPalavrasPesquisa) { $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); return $objExpedirProcedimentoRN->listarProcessosApensados($dblIdProcedimentoAtual, $numIdUnidadeAtual, $strPalavrasPesquisa); @@ -172,16 +192,12 @@ public static function getCaminhoIcone($imagem, $relPath = null) { return '/infra_css/svg/excluir.svg'; break; case '/pen_expedir_procedimento.gif': - // return '/infra_css/svg/upload.svg'; - // return 'svg/arquivo_mapeamento_assunto.svg'; return 'modulos/' . $strModulo . '/imagens/pen_expedir_procedimento.png'; break; case '/pen_consultar_recibos.png': - // return '/infra_css/svg/pesquisar.svg'; return 'modulos/' . $strModulo . '/imagens/consultar_recibo.png'; break; case '/pen_cancelar_tramite.gif': - // return '/infra_css/svg/remover.svg'; return 'modulos/' . $strModulo . '/imagens/pen_cancelar_envio.svg'; break; case '/infra_js/arvore/plus.gif': @@ -240,4 +256,182 @@ public static function getCssCompatibilidadeSEI4($arquivo) return $arquivo; } + + /** + * Monta a regra de restrição do tramite.gov.br + * + * @param string $idUnidade + * @param string $strCss + * @param string $strHtml + * @param string $strJsGlobal + * @param string $strJsicializar + * @return string + */ + public static function montarRestricaoTramitaGovBr($idUnidade, &$strCss, &$strHtml, &$strJsGlobal, &$strJsInicializar) + { + try { + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade($idUnidade); + $objPenUnidadeRestricaoDTO->retTodos(); + + $objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN(); + $arrObjPenUnidadeRestricaoDTO = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); + $items = array(); + $arrayKeys = array(); + $arrObjPenUnidadeDTO = array(); + $itemsUnidades = array(); + $hdnRepoEstruturas = array(); + $strHtmlRepoEstruturasUnidades = ""; + foreach ($arrObjPenUnidadeRestricaoDTO as $item) { + if (!in_array($item->getNumIdUnidadeRestricao(), $arrayKeys)) { + //IdUnidadeRestricao NomeUnidadeRestricao + $arrayKeys[] = $item->getNumIdUnidadeRestricao(); + $items[] = array($item->getNumIdUnidadeRestricao(), $item->getStrNomeUnidadeRestricao()); + $hdnRepoEstruturas[$item->getNumIdUnidadeRestricao()] = array(); + } + if ($item->getNumIdUnidadeRHRestricao() != null) { + $arrObjPenUnidadeDTO[] = $item; + $itemsUnidades[] = array($item->getNumIdUnidadeRHRestricao(), $item->getStrNomeUnidadeRHRestricao()); + $hdnRepoEstruturas[$item->getNumIdUnidadeRestricao()][] = $item->getNumIdUnidadeRHRestricao() . '±' . $item->getStrNomeUnidadeRHRestricao(); + } + } + foreach ($hdnRepoEstruturas as $key => $unidades) { + $value = implode('¥', $unidades); + $strHtmlRepoEstruturasUnidades .= '' . "\n"; + } + $arrRepoEstruturasSelecionados = PaginaSEI::getInstance()->gerarItensLupa($items); + $arrUnidadesSelecionadas = PaginaSEI::getInstance()->gerarItensLupa($itemsUnidades); + $strItensSelRepoEstruturasRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjPenUnidadeRestricaoDTO, 'IdUnidadeRestricao', 'NomeUnidadeRestricao'); + $strItensSelUnidadesRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjPenUnidadeDTO, 'IdUnidadeRHRestricao', 'NomeUnidadeRHRestricao'); + + $strCss = '' + . ' #lblRepoEstruturas {position:absolute;left:0%;top:0%;width:20%;}' + . ' #txtRepoEstruturas {position:absolute;left:0%;top:13%;width:19.5%;}' + . ' #selRepoEstruturas {position:absolute;left:0%;top:29%;width:20%;}' + . ' #divOpcoesRepoEstruturas {position:absolute;left:21%;top:29%;}' + . ' ' + . ' #lblUnidades {position:absolute;left:25%;top:0%;}' + . ' #txtUnidade {position:absolute;left:25%;top:13%;width:54.5%;}' + . ' #selUnidades {position:absolute;left:25%;top:29%;width:55%;}' + . ' #divOpcoesUnidades {position:absolute;left:81%;top:29%;}'; + + $strJsGlobal = '' + . ' var objLupaRepositoriosEstruturas = null;' + . ' var objAutoCompletarOrgao = null;' + . ' var objLupaUnidades = null;' + . ' var objAutoCompletarUnidade = null;' + . ' ' + . ' function trocarOrgaoRestricao(){' + . ' document.getElementById(\'hdnUnidades\').value = document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;' + . ' objLupaUnidades.montar();' + . ' };'; + + $strJsInicializar = '' + . ' objLupaRepositoriosEstruturas = new infraLupaSelect(\'selRepoEstruturas\',\'hdnRepoEstruturas\',\'' . /*SessaoSEI::getInstance()->assinarLink('controlador.php?acao=orgao_selecionar&tipo_selecao=2&id_object=objLupaRepositoriosEstruturas') .*/ '\');' + . ' objLupaRepositoriosEstruturas.processarRemocao = function(itens){' + . ' for(var i=0;i < itens.length;i++){' + . ' document.getElementById(\'hdnRepoEstruturas\' + itens[i].value).value = \'\';' + . ' }' + . ' return true;' + . ' };' + . ' ' + . ' objLupaRepositoriosEstruturas.finalizarSelecao = function(){' + . ' objLupaUnidades.limpar();' + . ' };' + . ' ' + . ' objAutoCompletarRepoEstruturas = new infraAjaxAutoCompletar(\'hdnIdRepoEstruturas\',\'txtRepoEstruturas\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=pen_listar_repositorios_estruturas_auto_completar') . '\');' + . ' objAutoCompletarRepoEstruturas.limparCampo = true;' + . ' objAutoCompletarRepoEstruturas.prepararExecucao = function(){' + . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtRepoEstruturas\').value;' + . ' };' + . ' ' + . ' objAutoCompletarRepoEstruturas.processarResultado = function(id,descricao,complemento){' + . ' if (id!=\'\'){ ' + . ' objLupaRepositoriosEstruturas.adicionar(id,descricao,document.getElementById(\'txtRepoEstruturas\'));' + . ' hdnRepoEst = document.getElementById("hdnRepoEstruturas" + id); ' + . ' if (hdnRepoEst == null) { ' + . ' html = document.createElement(\'input\'); ' + . ' html.type = \'hidden\'; ' + . ' html.id=\'hdnRepoEstruturas\' + id;' + . ' html.name= \'hdnRepoEstruturas\'+ id;' + . ' divRestricao = document.getElementById(\'divRestricao\');' + . ' divRestricao.appendChild(html);' + . ' };' + . ' };' + . ' };' + . ' ' + . ' objLupaUnidades = new infraLupaSelect(\'selUnidades\',\'hdnUnidades\',\'\');' + . ' objLupaUnidades.validarSelecionar = function(){' + . ' if (document.getElementById(\'selOrgaos\').selectedIndex==-1){' + . ' alert(\'Nenhum Repositório de Estruturas selecionado.\');' + . ' return false;' + . ' }' + . ' objLupaUnidades.url = document.getElementById(\'lnkRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;' + . ' return true;' + . ' };' + . ' ' + . ' objLupaUnidades.finalizarRemocao = function(){' + . ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' return true;' + . ' };' + . ' ' + . ' objLupaUnidades.finalizarSelecao = function(){' + . ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' };' + . ' ' + . ' objAutoCompletarUnidade = new infraAjaxAutoCompletar(\'hdnIdUnidade\',\'txtUnidade\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_cadastro') . '\');' + . ' objAutoCompletarUnidade.limparCampo = true;' + . ' objAutoCompletarUnidade.prepararExecucao = function(){' + . ' if (document.getElementById(\'selRepoEstruturas\').selectedIndex==-1){' + . ' alert(\'Nenhum Repositório de Estruturas selecionado.\');' + . ' return false;' + . ' }' + . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtUnidade\').value+\'&id_repositorio=\'+document.getElementById(\'selRepoEstruturas\').value;' + . ' };' + . ' ' + . ' objAutoCompletarUnidade.processarResultado = function(id,descricao,complemento){' + . ' if (id!=\'\'){ ' + . ' objLupaUnidades.adicionar(id,descricao,document.getElementById(\'txtUnidade\'));' + . ' repo = document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;' + . ' repo += (repo != \'\' ? "¥" : "") + id + "±" + descricao;' + . ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = repo;' + . ' }' + . ' };' + . ' ' + . ' if (document.getElementById(\'selRepoEstruturas\').options.length){' + . ' document.getElementById(\'selRepoEstruturas\').disabled = false;' + . ' document.getElementById(\'selRepoEstruturas\').options[0].selected = true;' + . ' trocarRepoEstruturasRestricao();' + . ' };'; + + + $strHtml = '' + . '
' + . ' ' + . ' ' + . ' ' + . ' ' + . '
' + . ' Remover Estruturas Selecionados' + . '
' + . ' ' + . ' ' + . ' ' + . ' ' + . ' ' + . '
' + . ' Remover Unidades Selecionadas' + . '
' + . ' ' + . ' ' . $strHtmlRepoEstruturasUnidades . '' + . '
'; + } catch (Exception $e) { + // não grava nada e não retorna objeto restrição mapeamento de unidades + } + } } diff --git a/src/pen_expedir_lote.php b/src/pen_expedir_bloco.php similarity index 80% rename from src/pen_expedir_lote.php rename to src/pen_expedir_bloco.php index 75bc3ef8f..40d800187 100755 --- a/src/pen_expedir_lote.php +++ b/src/pen_expedir_bloco.php @@ -20,25 +20,23 @@ $arrProtocolosOrigem = array(); $tramiteEmBloco = isset($_GET['tramite_em_bloco']) ? $_GET['tramite_em_bloco'] : null; if ($tramiteEmBloco == 1) { + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + if (isset($_GET['id_tramita_em_bloco'])) { - $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($_GET['id_tramita_em_bloco']); - $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $objPenBlocoProcessoDTO->setNumIdBloco($_GET['id_tramita_em_bloco']); } else { $arrIdRelBlocoProtocoloSelecionado = $objPaginaSEI->getArrStrItensSelecionados(); - $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramitaEmBlocoProtocoloDTO->setNumId($arrIdRelBlocoProtocoloSelecionado, InfraDTO::$OPER_IN); - $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $objPenBlocoProcessoDTO->setNumIdBloco($arrIdRelBlocoProtocoloSelecionado, InfraDTO::$OPER_IN); } - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramitaEmBlocoProtocoloDTO); - $idTramiteEmBloco = $arrTramiteEmBlocoProtocolo[0]->getNumIdTramitaEmBloco(); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + $idTramiteEmBloco = $arrPenBlocoProcesso[0]->getNumIdBloco(); $strParametros .= '&id_bloco=' . $idTramiteEmBloco; - foreach ($arrTramiteEmBlocoProtocolo as $i => $tramiteEmBlocoProtocolo) { - $arrProtocolosOrigem[] = $tramiteEmBlocoProtocolo->getDblIdProtocolo(); + foreach ($arrPenBlocoProcesso as $i => $PenBlocoProcesso) { + $arrProtocolosOrigem[] = $PenBlocoProcesso->getDblIdProtocolo(); } } else { $idTramiteEmBloco = null; @@ -70,7 +68,7 @@ switch ($_GET['acao']) { - case 'pen_expedir_lote': + case 'pen_expedir_bloco': $strTitulo = $tramiteEmBloco == 1 ? 'Envio Externo de Processos do Bloco de Trâmite' : 'Envio Externo de Processo em Lote'; $arrComandos[] = ''; $arrComandos[] = ''; @@ -81,7 +79,35 @@ //Preparação dos dados para montagem da tela de expedição de processos $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); - $repositorios = $objExpedirProcedimentoRN->listarRepositoriosDeEstruturas(); + try { + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->retNumIdUnidadeRH(); + $objUnidadeDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($objUnidadeDTO->getNumIdUnidadeRH()); + $objPenUnidadeRestricaoDTO->retNumIdUnidadeRestricao(); + $objPenUnidadeRestricaoDTO->retStrNomeUnidadeRestricao(); + + $objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN(); + $arrIdUnidadeRestricao = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); + + //Preparação dos dados para montagem da tela de expedição de processos + if ($arrIdUnidadeRestricao != null) { + $repositorios = array(); + foreach ($arrIdUnidadeRestricao as $value) { + $repositorios[$value->getNumIdUnidadeRestricao()] = $value->getStrNomeUnidadeRestricao(); + } + } else { + $repositorios = $objExpedirProcedimentoRN->listarRepositoriosDeEstruturas(); + } + } catch (Exception $e) { + $repositorios = $objExpedirProcedimentoRN->listarRepositoriosDeEstruturas(); + } $idRepositorioSelecionado = (isset($numIdRepositorio)) ? $numIdRepositorio : ''; $strItensSelRepositorioEstruturas = InfraINT::montarSelectArray('', 'Selecione', $idRepositorioSelecionado, $repositorios); @@ -106,33 +132,50 @@ $numIdUnidadeDestino = $_POST['hdnIdUnidade']; $strNomeUnidadeDestino = $_POST['txtUnidade']; $numIdUsuario = $objSessaoSEI->getNumIdUsuario(); - $dthRegistro = date('d/m/Y H:i:s'); if (isset($_POST['sbmExpedir'])) { $numVersao = $objPaginaSEI->getNumVersao(); echo "\n"; echo ""; - $strTituloPagina = "Cadastro de processos em Lote"; + $strTituloPagina = "Cadastro de processos em Bloco"; $objPaginaSEI->prepararBarraProgresso($strTitulo, $strTituloPagina); try { + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $objPenBlocoProcessoDTO->retDthRegistro(); + $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->setNumIdBloco($_GET['id_bloco']); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + $arrProcedimentos = array(); + foreach ($arrPenBlocoProcesso as $objDTO) { + $objDTO->setNumIdRepositorioOrigem($numIdRepositorioOrigem); + $objDTO->setNumIdUnidadeOrigem($numIdUnidadeOrigem); + $objDTO->setNumIdRepositorioDestino($numIdRepositorio); + $objDTO->setStrRepositorioDestino($strRepositorio); + $objDTO->setNumIdUnidadeDestino($numIdUnidadeDestino); + $objDTO->setStrUnidadeDestino($strNomeUnidadeDestino); + $objDTO->setNumIdUsuario($numIdUsuario); + $objDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $dthAtualizado = date('d/m/Y H:i:s'); + $objDTO->setDthAtualizado($dthAtualizado); + $objDTO->setDthEnvio($dthAtualizado); + $objDTO->setArrListaProcedimento($arrProtocolosOrigem); + $objDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); + + $objPenBlocoProcessoRN->alterar($objDTO); + + $arrProcedimentos[] = $objDTO->getDblIdProtocolo(); + } - $objPenExpedirLoteDTO = new PenExpedirLoteDTO(); - $objPenExpedirLoteDTO->setNumIdLote(null); - $objPenExpedirLoteDTO->setNumIdRepositorioOrigem($numIdRepositorioOrigem); - $objPenExpedirLoteDTO->setNumIdUnidadeOrigem($numIdUnidadeOrigem); - $objPenExpedirLoteDTO->setNumIdRepositorioDestino($numIdRepositorio); - $objPenExpedirLoteDTO->setStrRepositorioDestino($strRepositorio); - $objPenExpedirLoteDTO->setNumIdUnidadeDestino($numIdUnidadeDestino); - $objPenExpedirLoteDTO->setStrUnidadeDestino($strNomeUnidadeDestino); - $objPenExpedirLoteDTO->setNumIdUsuario($numIdUsuario); - $objPenExpedirLoteDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); - $objPenExpedirLoteDTO->setDthRegistro($dthRegistro); - $objPenExpedirLoteDTO->setArrIdProcedimento($arrProtocolosOrigem); - - $objPenExpedirLoteRN = new PenExpedirLoteRN(); - $ret = $objPenExpedirLoteRN->cadastrarLote($objPenExpedirLoteDTO); + $arrPenBlocoProcesso[0]->setArrListaProcedimento($arrProcedimentos); + $objPenExpedirBlocoRN = new PenExpedirBlocoRN(); + $ret = $objPenExpedirBlocoRN->cadastrarBloco($arrPenBlocoProcesso[0]); + $bolBotaoFecharCss = InfraUtil::compararVersoes(SEI_VERSAO, ">", "4.0.1"); // Atualiza estado do bloco em tramite para em processamento @@ -426,7 +469,7 @@ function enviarForm(event) {
- Consultar organograma +
diff --git a/src/pen_expedir_lote_listar.php b/src/pen_expedir_lote_listar.php deleted file mode 100755 index 57c3d611d..000000000 --- a/src/pen_expedir_lote_listar.php +++ /dev/null @@ -1,214 +0,0 @@ - validarLink(); - $objSessaoSEI->validarPermissao($_GET['acao']); - - $staCancelado = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO; - $staConcluido = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE; - $staEmProcessamento = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO; - - $objPaginaSEI->salvarCamposPost(array('txtProcedimentoFormatado', 'txtNomeUsuario', 'txtUnidadeDestino', 'selAndamento')); - - switch ($_GET['acao']) { - - case 'pen_expedir_lote_listar': - $strTitulo = 'Processos Tramitados em Bloco'; - break; - - default: - throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); - } - - $arrComandos = array(); - $arrComandos[] = ''; - - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(true); - - $objPenLoteProcedimentoDTO->retNumIdLote(); - $objPenLoteProcedimentoDTO->retDblIdProcedimento(); - $objPenLoteProcedimentoDTO->retStrProcedimentoFormatado(); - $objPenLoteProcedimentoDTO->retNumIdAndamento(); - $objPenLoteProcedimentoDTO->retStrUnidadeDestino(); - $objPenLoteProcedimentoDTO->retStrNomeUsuario(); - $objPenLoteProcedimentoDTO->retDthRegistro(); - $objPenLoteProcedimentoDTO->setOrdNumIdLote(InfraDTO::$TIPO_ORDENACAO_DESC); - - $strNomeUsuario = $objPaginaSEI->recuperarCampo('txtNomeUsuario'); - if (trim($strNomeUsuario) != '') { - $objPenLoteProcedimentoDTO->setStrNomeUsuario('%' . trim($strNomeUsuario . '%'), InfraDTO::$OPER_LIKE); - } - - $strProcedimentoFormatado = $objPaginaSEI->recuperarCampo('txtProcedimentoFormatado'); - if (trim($strProcedimentoFormatado) != '') { - $objPenLoteProcedimentoDTO->setStrProcedimentoFormatado(trim($strProcedimentoFormatado)); - } - - $strUnidadeDestino = $objPaginaSEI->recuperarCampo('txtUnidadeDestino'); - if (trim($strUnidadeDestino) != '') { - $objPenLoteProcedimentoDTO->setStrUnidadeDestino(trim($strUnidadeDestino)); - } - - $numIdAndamento = $objPaginaSEI->recuperarCampo('selAndamento'); - if ($numIdAndamento !== '') { - $objPenLoteProcedimentoDTO->setNumIdAndamento($numIdAndamento); - } - - $objPaginaSEI->prepararOrdenacao($objPenLoteProcedimentoDTO, 'IdLote', InfraDTO::$TIPO_ORDENACAO_DESC); - $objPaginaSEI->prepararPaginacao($objPenLoteProcedimentoDTO); - - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $arrObjPenLoteProcedimentoRN = $objPenLoteProcedimentoRN->listarLoteProcedimento($objPenLoteProcedimentoDTO); - - $objPaginaSEI->processarPaginacao($objPenLoteProcedimentoDTO); - $numRegistros = count($arrObjPenLoteProcedimentoRN); - - $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); - - if ($numRegistros > 0) { - $arrComandos[] = ''; - - $strResultado = ''; - $strSumarioTabela = 'Tabela de Processo em Lote.'; - $strCaptionTabela = 'Processo em Lote'; - - $strResultado .= '' . "\n"; - $strResultado .= ''; - $strResultado .= ''; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strCssTr = ''; - for ($i = 0; $i < $numRegistros; $i++) { - - $strCssTr = ($strCssTr == '') ? '' : ''; - $strResultado .= $strCssTr; - - $strResultado .= ''; - $strResultado .= ''; - $strResultado .= '' . "\n"; - $strResultado .= ''; - $strResultado .= ''; - $strResultado .= ''; - $strResultado .= '' . "\n"; - - } - $strResultado .= '
' . $objPaginaSEI->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPaginaSEI->getThCheck() . '' . $objPaginaSEI->getThOrdenacao($objPenLoteProcedimentoDTO, 'ID Lote', 'IdLote', $arrObjPenLoteProcedimentoRN) . '' . $objPaginaSEI->getThOrdenacao($objPenLoteProcedimentoDTO, 'Processo', 'ProcedimentoFormatado', $arrObjPenLoteProcedimentoRN) . '' . $objPaginaSEI->getThOrdenacao($objPenLoteProcedimentoDTO, 'Usuário', 'IdUsuario', $arrObjPenLoteProcedimentoRN) . '' . $objPaginaSEI->getThOrdenacao($objPenLoteProcedimentoDTO, 'Data do Envio', 'Registro', $arrObjPenLoteProcedimentoRN) . '' . $objPaginaSEI->getThOrdenacao($objPenLoteProcedimentoDTO, 'Unidade Destino', 'UnidadeDestino', $arrObjPenLoteProcedimentoRN) . '' . $objPaginaSEI->getThOrdenacao($objPenLoteProcedimentoDTO, 'Situação', 'IdAndamento', $arrObjPenLoteProcedimentoRN) . '
' . $objPaginaSEI->getTrCheck($i, $arrObjPenLoteProcedimentoRN[$i]->getNumIdLote(), $arrObjPenLoteProcedimentoRN[$i]->getNumIdLote()) . '' . $arrObjPenLoteProcedimentoRN[$i]->getNumIdLote() . '' . PaginaSEI::tratarHTML($arrObjPenLoteProcedimentoRN[$i]->getStrProcedimentoFormatado()) . '' . PaginaSEI::tratarHTML($arrObjPenLoteProcedimentoRN[$i]->getStrNomeUsuario()) . '' . PaginaSEI::tratarHTML($arrObjPenLoteProcedimentoRN[$i]->getDthRegistro()) . '' . PaginaSEI::tratarHTML($arrObjPenLoteProcedimentoRN[$i]->getStrUnidadeDestino()) . ''; - - switch ($arrObjPenLoteProcedimentoRN[$i]->getNumIdAndamento()) { - case $staConcluido: - $strResultado .= 'Concluído'; - break; - case $staCancelado: - $strResultado .= 'Cancelado'; - break; - default: - $strResultado .= 'Em processamento'; - break; - } - - $strResultado .= '
'; - } - - $arrComandos[] = ''; - - } catch (Exception $e) { - $objPaginaSEI->processarExcecao($e); - } - - $objPaginaSEI->montarDocType(); - $objPaginaSEI->abrirHtml(); - $objPaginaSEI->abrirHead(); - $objPaginaSEI->montarMeta(); - $objPaginaSEI->montarTitle($objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo); - $objPaginaSEI->montarStyle(); - $objPaginaSEI->abrirStyle(); - ?> - -#lblNomeUsuario {position:absolute;left:0%;top:0%;width:20%;} -#txtNomeUsuario {position:absolute;left:0%;top:40%;width:20%;} - -#lblProcedimentoFormatado {position:absolute;left:23%;top:0%;width:20%;} -#txtProcedimentoFormatado {position:absolute;left:23%;top:40%;width:20%;} - -#lblUnidadeDestino {position:absolute;left:46%;top:0%;width:20%;} -#txtUnidadeDestino {position:absolute;left:46%;top:40%;width:25%;} - -#lblAndamento {position:absolute;left:74%;top:0%;width:20%;} -#selAndamento {position:absolute;left:74%;top:40%;width:20%;} - -fecharStyle(); -$objPaginaSEI->montarJavaScript(); -$objPaginaSEI->abrirJavaScript(); -?> - -function inicializar(){ - if (''=='serie_selecionar'){ - infraReceberSelecao(); - document.getElementById('btnFecharSelecao').focus(); - }else{ - document.getElementById('btnFechar').focus(); - } - - infraEfeitoTabelas(); -} - - -function abrirProcesso(link){ - document.getElementById('divInfraBarraComandosSuperior').style.visibility = 'hidden'; - document.getElementById('divInfraAreaTabela').style.visibility = 'hidden'; - infraOcultarMenuSistemaEsquema(); - document.getElementById('frmLoteListar').action = link; - document.getElementById('frmLoteListar').submit(); -} -fecharJavaScript(); -$objPaginaSEI->fecharHead(); -$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); -?> -
- montarBarraComandosSuperior($arrComandos); - $objPaginaSEI->abrirAreaDados('4.5em'); - ?> - - - - - - - - - - - - - - fecharAreaDados(); - $objPaginaSEI->montarAreaTabela($strResultado, $numRegistros); - $objPaginaSEI->montarAreaDebug(); - $objPaginaSEI->montarBarraComandosInferior($arrComandos); - ?> -
-fecharBody(); -$objPaginaSEI->fecharHtml(); -?> diff --git a/src/pen_map_envio_parcial_cadastrar.php b/src/pen_map_envio_parcial_cadastrar.php index d449ff72a..7f07bc71b 100644 --- a/src/pen_map_envio_parcial_cadastrar.php +++ b/src/pen_map_envio_parcial_cadastrar.php @@ -45,6 +45,7 @@ header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_=' . $_GET['acao_'])); exit(0); } + if (empty($_POST['hdnIdUnidade']) || empty($_POST['txtUnidade']) || $_POST['txtUnidade'] == "0") { $objPaginaSEI->adicionarMensagem('O Órgao não foi selecionado.', InfraPagina::$TIPO_MSG_ERRO); header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_=' . $_GET['acao_'])); @@ -88,9 +89,14 @@ $objPenRestricaoEnvioComponentesDigitaisRN->alterar($objDTO); $messagem = TITULO_PAGINA . " atualizado com sucesso."; } else { + if ($objPenRestricaoEnvioComponentesDigitaisRN->contar($objDTO) > 0) { + $objPaginaSEI->adicionarMensagem( 'Já existe um registro cadastrado para a estrutura selecionada.', InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_=' . $_GET['acao_'])); + exit(0); + } $objPenRestricaoEnvioComponentesDigitaisRN->cadastrar($objDTO); } - $objPaginaSEI->adicionarMensagem($messagem, InfraPagina::$TIPO_MSG_AVISO); + $objPaginaSEI->adicionarMensagem($messagem, 5); header('Location: ' . $objSessaoSEI->assinarLink( 'controlador.php?acao=pen_map_envio_parcial_listar&acao_=' . $_GET['acao_'] )); @@ -475,7 +481,7 @@ function redimencionarBarraProgresso() { placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" value="" tabindex="getProxTabDados() ?>" /> - Consultar organograma + diff --git a/src/pen_map_envio_parcial_listar.php b/src/pen_map_envio_parcial_listar.php index b14b50899..6aee18e13 100644 --- a/src/pen_map_envio_parcial_listar.php +++ b/src/pen_map_envio_parcial_listar.php @@ -148,9 +148,11 @@ $strResultado .= '' . $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdUnidadePen() . ''; + $strResultado .= '' . $objPenRestricaoEnvioComponentesDigitaisDTO->getStrStrUnidadePen() . ''; + $strResultado .= ''; if ($objSessaoSEI->verificarPermissao('pen_map_envio_parcial_atualizar')) { diff --git a/src/pen_map_hipotese_legal_envio_cadastrar.php b/src/pen_map_hipotese_legal_envio_cadastrar.php index 4deb835ad..6e9b920b4 100755 --- a/src/pen_map_hipotese_legal_envio_cadastrar.php +++ b/src/pen_map_hipotese_legal_envio_cadastrar.php @@ -125,6 +125,7 @@ // Mapeamento da hipotese legal remota $objPenHipoteseLegalDTO = new PenHipoteseLegalDTO(); $objPenHipoteseLegalDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); + $objPenHipoteseLegalDTO->setStrAtivo('S'); $objPenHipoteseLegalDTO->retNumIdHipoteseLegal(); $objPenHipoteseLegalDTO->retStrNome(); @@ -190,7 +191,7 @@ function onSubmit() { $objPagina->fecharHead(); $objPagina->abrirBody($strTitulo, 'onload="inicializar();"'); ?> -
+ montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> abrirAreaDados('12em'); ?> diff --git a/src/pen_map_hipotese_legal_envio_listar.php b/src/pen_map_hipotese_legal_envio_listar.php index 7abec87c1..a78511698 100755 --- a/src/pen_map_hipotese_legal_envio_listar.php +++ b/src/pen_map_hipotese_legal_envio_listar.php @@ -123,6 +123,7 @@ $objPenHipoteseLegalDTO->setDistinct(true); $objPenHipoteseLegalDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); $objPenHipoteseLegalDTO->retNumIdHipoteseLegal(); + $objPenHipoteseLegalDTO->setStrAtivo('S'); $objPenHipoteseLegalDTO->retStrNome(); $objPenHipoteseLegalRN = new PenHipoteseLegalRN(); @@ -173,7 +174,6 @@ $strResultado .= ''.$arrMapIdBarramento[$objPenRelHipoteseLegalDTO->getNumIdBarramento()].''; $strResultado .= ''; - //$strResultado .= 'Consultar Mapeamento'; if($objSessao->verificarPermissao('pen_map_hipotese_legal_envio_alterar')) { $strResultado .= 'Alterar Mapeamento'; } @@ -196,7 +196,6 @@ print_r($e); print ''; exit(0); - //$objPagina->processarExcecao($e); } @@ -319,7 +318,7 @@ function onClickBtnExcluir(){ $objPagina->fecharHead(); $objPagina->abrirBody(PEN_PAGINA_TITULO, 'onload="inicializar();"'); ?> - + montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> diff --git a/src/pen_map_hipotese_legal_padrao_cadastrar.php b/src/pen_map_hipotese_legal_padrao_cadastrar.php index 7844860e6..c09720b0b 100755 --- a/src/pen_map_hipotese_legal_padrao_cadastrar.php +++ b/src/pen_map_hipotese_legal_padrao_cadastrar.php @@ -155,7 +155,7 @@ function onSubmit() { $objPagina->fecharHead(); $objPagina->abrirBody($strTitulo, 'onload="inicializar();"'); ?> - + montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> abrirAreaDados('12em'); ?> diff --git a/src/pen_map_hipotese_legal_recebimento_cadastrar.php b/src/pen_map_hipotese_legal_recebimento_cadastrar.php index efcca9a8e..807306899 100755 --- a/src/pen_map_hipotese_legal_recebimento_cadastrar.php +++ b/src/pen_map_hipotese_legal_recebimento_cadastrar.php @@ -119,6 +119,7 @@ // Mapeamento da hipotese legal remota $objPenHipoteseLegalDTO = new PenHipoteseLegalDTO(); $objPenHipoteseLegalDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); + $objPenHipoteseLegalDTO->setStrAtivo('S'); if(!empty($arrNumIdHipoteseLegal)) { // Remove os que j esto em uso $objPenHipoteseLegalDTO->setNumIdHipoteseLegal($arrNumIdHipoteseLegal, InfraDTO::$OPER_NOT_IN); @@ -189,7 +190,7 @@ function onSubmit() { $objPagina->fecharHead(); $objPagina->abrirBody($strTitulo, 'onload="inicializar();"'); ?> - + montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> abrirAreaDados('12em'); ?> diff --git a/src/pen_map_hipotese_legal_recebimento_listar.php b/src/pen_map_hipotese_legal_recebimento_listar.php index a69f3537b..18c2ef0af 100755 --- a/src/pen_map_hipotese_legal_recebimento_listar.php +++ b/src/pen_map_hipotese_legal_recebimento_listar.php @@ -154,6 +154,7 @@ $objPenHipoteseLegalDTO = new PenHipoteseLegalDTO(); $objPenHipoteseLegalDTO->setDistinct(true); $objPenHipoteseLegalDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); + $objPenHipoteseLegalDTO->setStrAtivo('S'); $objPenHipoteseLegalDTO->retNumIdHipoteseLegal(); $objPenHipoteseLegalDTO->retStrNome(); @@ -205,7 +206,6 @@ $strResultado .= ''.$arrMapIdHipoteseLegal[$objPenRelHipoteseLegalDTO->getNumIdHipoteseLegal()].''; $strResultado .= ''; - //$strResultado .= 'Consultar Mapeamento'; if($objSessao->verificarPermissao('pen_map_hipotese_legal_recebimento_alterar')) { $strResultado .= 'Alterar Mapeamento'; } @@ -352,7 +352,7 @@ function onClickBtnExcluir(){ $objPagina->fecharHead(); $objPagina->abrirBody(PEN_PAGINA_TITULO, 'onload="inicializar();"'); ?> - + montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> diff --git a/src/pen_map_orgaos_externos_listar.php b/src/pen_map_orgaos_externos_listar.php index f02bb177e..4bd39db36 100644 --- a/src/pen_map_orgaos_externos_listar.php +++ b/src/pen_map_orgaos_externos_listar.php @@ -189,7 +189,6 @@ // DTO de paginao $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); - // $objPenOrgaoExternoDTO->setNumIdUnidade($objSessao->getNumIdUnidadeAtual()); $objPenOrgaoExternoDTO->setStrAtivo('S'); $objPenOrgaoExternoDTO->retDblId(); $objPenOrgaoExternoDTO->retNumIdOrgaoOrigem(); @@ -624,7 +623,6 @@ function processarDados(csv) { }) .text(tipoProcessoNome); $('') - //.addClass(strCssTr) .append(td1) .append(td2) .appendTo($('#tableImportar')); diff --git a/src/pen_map_orgaos_mapeamento_tipo_listar.php b/src/pen_map_orgaos_mapeamento_tipo_listar.php index 34a3a1ac1..74420ee8e 100644 --- a/src/pen_map_orgaos_mapeamento_tipo_listar.php +++ b/src/pen_map_orgaos_mapeamento_tipo_listar.php @@ -26,7 +26,6 @@ $objDebug->limpar(); $objSessao->validarLink(); - // $objSessao->validarPermissao(PEN_RECURSO_ATUAL); $idOrgaoExterno = $_GET['id']; diff --git a/src/pen_map_restricao_envio_comp_digitais_cadastrar.php b/src/pen_map_restricao_envio_comp_digitais_cadastrar.php index a1800cc07..25342d1e2 100644 --- a/src/pen_map_restricao_envio_comp_digitais_cadastrar.php +++ b/src/pen_map_restricao_envio_comp_digitais_cadastrar.php @@ -476,7 +476,7 @@ function redimencionarBarraProgresso() { placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" value="" tabindex="getProxTabDados() ?>" /> - Consultar organograma + diff --git a/src/pen_map_tipo_documento_envio_cadastrar.php b/src/pen_map_tipo_documento_envio_cadastrar.php index 44bbd792a..84ef532cf 100755 --- a/src/pen_map_tipo_documento_envio_cadastrar.php +++ b/src/pen_map_tipo_documento_envio_cadastrar.php @@ -164,7 +164,7 @@ function onSubmit() { $objPaginaSEI->fecharHead(); $objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); ?> - + montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> abrirAreaDados('12em'); ?> diff --git a/src/pen_map_tipo_documento_recebimento_cadastrar.php b/src/pen_map_tipo_documento_recebimento_cadastrar.php index 4f04f9938..fa458e172 100755 --- a/src/pen_map_tipo_documento_recebimento_cadastrar.php +++ b/src/pen_map_tipo_documento_recebimento_cadastrar.php @@ -162,7 +162,7 @@ function onSubmit() { $objPaginaSEI->fecharHead(); $objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); ?> - + montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> abrirAreaDados('12em'); ?> diff --git a/src/pen_map_tipo_processo_reativar.php b/src/pen_map_tipo_processo_reativar.php index 4cbfc61e3..2694d7b35 100644 --- a/src/pen_map_tipo_processo_reativar.php +++ b/src/pen_map_tipo_processo_reativar.php @@ -26,7 +26,6 @@ $objDebug->limpar(); $objSessao->validarLink(); - // $objSessao->validarPermissao(PEN_RECURSO_ATUAL); $idOrgaoExterno = $_GET['id']; diff --git a/src/pen_map_unidade_cadastrar.php b/src/pen_map_unidade_cadastrar.php index d4ef992fa..d76163131 100755 --- a/src/pen_map_unidade_cadastrar.php +++ b/src/pen_map_unidade_cadastrar.php @@ -27,7 +27,7 @@ //Obter dados do repositório em que o SEI está registrado (Repositório de Origem) $objPenParametroRN = new PenParametroRN(); $numIdRepositorioOrigem = $objPenParametroRN->getParametro('PEN_ID_REPOSITORIO_ORIGEM'); - $strLinkAjaxUnidade = $objSessao->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_expedir_procedimento'); + $strLinkAjaxUnidade = $objSessao->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_cadastro'); $bolSomenteLeitura = false; @@ -62,11 +62,17 @@ if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') { if(!array_key_exists('id_unidade', $_POST) || empty($_POST['id_unidade'])) { - throw new InfraException('Nenhuma "Unidade" foi selecionada'); + $params = http_build_query($_POST); + $objPagina->adicionarMensagem('Nenhuma "Unidade" foi selecionada', InfraPagina::$TIPO_MSG_AVISO); + header('Location: '.$objSessao->assinarLink('controlador.php?acao='.PEN_RECURSO_BASE.'_cadastrar&acao_origem='.$_GET['acao'].'&id_mapeamento='.$numIdUnidade.PaginaSEI::getInstance()->montarAncora($numIdUnidade). '&'.$params)); + exit(0); } if(!array_key_exists('id_unidade_rh', $_POST) || $_POST['id_unidade_rh'] === '' || $_POST['id_unidade_rh'] === null) { - throw new InfraException('Nenhuma "Unidade RH" foi selecionada'); + $params = http_build_query($_POST); + $objPagina->adicionarMensagem('Nenhuma "Unidade RH" foi selecionada', InfraPagina::$TIPO_MSG_AVISO); + header('Location: '.$objSessao->assinarLink('controlador.php?acao='.PEN_RECURSO_BASE.'_cadastrar&acao_origem='.$_GET['acao'].'&id_mapeamento='.$numIdUnidade.PaginaSEI::getInstance()->montarAncora($numIdUnidade). '&'.$params)); + exit(0); } $objGenericoBD = new GenericoBD($objBanco); @@ -110,15 +116,34 @@ $numIdUnidade = ''; if(array_key_exists(PEN_PAGINA_GET_ID, $_GET) && !empty($_GET[PEN_PAGINA_GET_ID])) { - $objPenUnidadeDTO->setNumIdUnidade($_GET[PEN_PAGINA_GET_ID]); - $unidade = $objPenUnidadeRN->alterar($objPenUnidadeDTO); - $numIdUnidade = $_GET[PEN_PAGINA_GET_ID]; + $objPenUnidadeDTO->setNumIdUnidade($_GET[PEN_PAGINA_GET_ID]); + $unidade = $objPenUnidadeRN->alterar($objPenUnidadeDTO); + $numIdUnidade = $_GET[PEN_PAGINA_GET_ID]; } else { - $unidade = $objPenUnidadeRN->cadastrar($objPenUnidadeDTO); - $numIdUnidade = $unidade->getNumIdUnidade(); + $unidade = $objPenUnidadeRN->cadastrar($objPenUnidadeDTO); + $numIdUnidade = $unidade->getNumIdUnidade(); + } + + $objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN(); + + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade($_POST['id_unidade']); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($_POST['id_unidade_rh']); + $objPenUnidadeRestricaoRN->prepararExcluir($objPenUnidadeRestricaoDTO); + + $arrObjPenUnidadeRestricaoDTO = $objPenUnidadeRestricaoRN->prepararRepoEstruturas( + $_POST['id_unidade'], + $_POST['id_unidade_rh'], + !empty($_POST['hdnRepoEstruturas']) ? $_POST['hdnRepoEstruturas'] : "" + ); + + if (count($arrObjPenUnidadeRestricaoDTO) > 0) { + $objPenUnidadeRestricaoRN->cadastrar($arrObjPenUnidadeRestricaoDTO); } + $objPagina->adicionarMensagem('Mapeamento de Unidade gravado com sucesso.', 5); + header('Location: '.$objSessao->assinarLink('controlador.php?acao='.PEN_RECURSO_BASE.'_listar&acao_origem='.$_GET['acao'].'&id_mapeamento='.$numIdUnidade.PaginaSEI::getInstance()->montarAncora($numIdUnidade))); exit(0); } @@ -129,7 +154,7 @@ $objPenUnidadeDTO->setNumIdUnidade($_GET[PEN_PAGINA_GET_ID]); $objPenUnidadeDTO->retTodos(); - $objEspecieDocumentalBD = new GenericoBD(BancoSEI::getInstance()); + $objEspecieDocumentalBD = new GenericoBD($objBanco); $objPenUnidadeDTO = $objEspecieDocumentalBD->consultar($objPenUnidadeDTO); } @@ -173,7 +198,16 @@ }else{ $strNomeUnidadeSelecionada = 'Unidade não encontrada.'; } + } else if (!empty($_GET['id_unidade_rh']) && !empty($_GET['txtUnidadePen'])){ + $strNomeUnidadeSelecionada = $_GET['txtUnidadePen']; + $objPenUnidadeDTO->setNumIdUnidadeRH($_GET['id_unidade_rh']); } + + $strCssRestricao = ""; + $strHtmlRestricao = ""; + $strJsGlobalRestricao = ""; + $strJsInicializarRestricao = ""; + ProcessoEletronicoINT::montarRestricaoTramitaGovBr($objPenUnidadeDTO->getNumIdUnidade(), $strCssRestricao, $strHtmlRestricao, $strJsGlobalRestricao, $strJsInicializarRestricao); } catch (InfraException $e) { $objPagina->processarExcecao($e); @@ -237,31 +271,58 @@ #txtUnidadePen{position:absolute;left:0%;top:53%;width:60%;} #btnUnidadeRh2{position:absolute;left:61%;top:53%;} + + +fecharHead(); +$objPagina->abrirBody($strTitulo, 'onload="inicializar();"'); +?> + + montarBarraComandosSuperior($arrComandos); ?> + abrirAreaDados('15em'); ?> + + + + + + + + + + fecharAreaDados(); ?> + + abrirAreaDados('15em'); ?> + + fecharAreaDados(); ?> +
+fecharBody(); ?> montarJavaScript(); ?> -fecharHead(); -$objPagina->abrirBody($strTitulo, 'onload="inicializar();"'); -?> -
- montarBarraComandosSuperior($arrComandos); ?> - abrirAreaDados('15em'); ?> - - - - - - - - + - fecharAreaDados(); ?> -
-fecharBody(); ?> + fecharHtml(); ?> diff --git a/src/pen_map_unidade_listar.php b/src/pen_map_unidade_listar.php index da6ba1f06..6b7d1ccf0 100755 --- a/src/pen_map_unidade_listar.php +++ b/src/pen_map_unidade_listar.php @@ -12,7 +12,7 @@ define('PEN_RECURSO_ATUAL', 'pen_map_unidade_listar'); define('PEN_RECURSO_BASE', 'pen_map_unidade'); -define('PEN_PAGINA_TITULO', 'Mapeamento de Unidade'); +define('PEN_PAGINA_TITULO', 'Mapeamento de Unidades'); define('PEN_PAGINA_GET_ID', 'id_unidade'); @@ -87,8 +87,6 @@ $arrComandos = array(); $arrComandos[] = ''; $arrComandos[] = ''; - //$arrComandos[] = ''; - //$arrComandos[] = ''; $arrComandos[] = ''; $arrComandos[] = ''; @@ -183,7 +181,6 @@ $strResultado .= ''.$objPenUnidadeDTO->getStrNomeUnidadeRH().''; $strResultado .= ''; - //$strResultado .= 'Consultar Mapeamento'; if($objSessao->verificarPermissao('pen_map_unidade_alterar')) { $strResultado .= 'Alterar Mapeamento'; } @@ -206,7 +203,6 @@ print_r($e); print ''; exit(0); - //$objPagina->processarExcecao($e); } @@ -275,35 +271,6 @@ function onClickBtnNovo(){ window.location = 'assinarLink('controlador.php?acao='.PEN_RECURSO_BASE.'_cadastrar&acao_origem='.htmlspecialchars($_GET['acao_origem']).'&acao_retorno='.htmlspecialchars($_GET['acao_origem'])); ?>'; } -function onClickBtnAtivar(){ - - try { - - var form = jQuery('#frmAcompanharEstadoProcesso'); - form.attr('action', 'assinarLink('controlador.php?acao='.PEN_RECURSO_BASE.'_ativar&acao_origem='.htmlspecialchars($_GET['acao_origem']).'&acao_retorno='.PEN_RECURSO_BASE.'_listar'); ?>'); - form.submit(); - } - catch(e){ - - alert('Erro : ' + e.message); - } - -} - -function onClickBtnDesativar(){ - - try { - - var form = jQuery('#frmAcompanharEstadoProcesso'); - form.attr('action', 'assinarLink('controlador.php?acao='.PEN_RECURSO_BASE.'_desativar&acao_origem='.htmlspecialchars($_GET['acao_origem']).'&acao_retorno='.PEN_RECURSO_BASE.'_listar'); ?>'); - form.submit(); - } - catch(e){ - - alert('Erro : ' + e.message); - } -} - function onClickBtnExcluir(){ try { @@ -334,7 +301,7 @@ function onClickBtnExcluir(){ $objPagina->fecharHead(); $objPagina->abrirBody(PEN_PAGINA_TITULO, 'onload="inicializar();"'); ?> -
+ montarBarraComandosSuperior($arrComandos); ?> montarAreaValidacao(); ?> diff --git a/src/pen_parametros_configuracao.php b/src/pen_parametros_configuracao.php index 5ddee9e21..335226033 100755 --- a/src/pen_parametros_configuracao.php +++ b/src/pen_parametros_configuracao.php @@ -189,7 +189,6 @@ function validarPreenchimentoCampo(campoValidacao){ $objPagina->getInstance()->abrirAreaDados('30em'); foreach ($retParametros as $parametro) { - //echo '
'; //Esse parâmetro não aparece, por já existencia de uma tela só para alteração do próprio. if ($parametro->getStrNome() != 'HIPOTESE_LEGAL_PADRAO' && $parametro->getStrNome() != 'PEN_TIPO_PROCESSO_EXTERNO') { ?> setDblIdProtocolo($idProcedimento); - $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($idProcedimento); + $objPenBlocoProcessoDTO->setOrdNumIdBloco(InfraDTO::$TIPO_ORDENACAO_DESC); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $objPenBlocoProcessoDTO->setNumIdAtividade( + array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE + ), + InfraDTO::$OPER_NOT_IN + ); + $objPenBlocoProcessoDTO->setNumMaxRegistrosRetorno(1); - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $tramiteEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloRN->consultarProtocolosBloco($objTramiteEmBlocoProtocoloDTO); - - if ($tramiteEmBlocoProtocoloDTO != null) { - // TODO: tratar atualização a partir de um metodo - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); - - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); - } + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $PenBlocoProcessoDTO = $objPenBlocoProcessoRN->consultar($objPenBlocoProcessoDTO); $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); $objExpedirProcedimentosRN->cancelarTramite($idProcedimento); + + if ($PenBlocoProcessoDTO != null) { + // TODO: tratar atualização a partir de um metodo + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcessoRN->atualizarEstadoDoBloco($PenBlocoProcessoDTO->getNumIdBloco()); + } } catch (InfraException $e) { $strMensagem = $e->getStrDescricao(); } catch (Exception $e) { @@ -65,8 +71,7 @@ $objPaginaSEI->abrirBody(); ?> -montarBarraComandosSuperior($arrComandos); -?> + fecharHead(); diff --git a/src/pen_procedimento_expedir.php b/src/pen_procedimento_expedir.php index fe5a806b1..c837a97ae 100755 --- a/src/pen_procedimento_expedir.php +++ b/src/pen_procedimento_expedir.php @@ -56,8 +56,36 @@ $objPenParametroRN = new PenParametroRN(); $numIdRepositorioOrigem = $objPenParametroRN->getParametro('PEN_ID_REPOSITORIO_ORIGEM'); + try { + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->retNumIdUnidadeRH(); + $objUnidadeDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($objUnidadeDTO->getNumIdUnidadeRH()); + $objPenUnidadeRestricaoDTO->retNumIdUnidadeRestricao(); + $objPenUnidadeRestricaoDTO->retStrNomeUnidadeRestricao(); + + $objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN(); + $arrIdUnidadeRestricao = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); + //Preparação dos dados para montagem da tela de expedição de processos + if ($arrIdUnidadeRestricao != null) { + $repositorios = array(); + foreach ($arrIdUnidadeRestricao as $value) { + $repositorios[$value->getNumIdUnidadeRestricao()] = $value->getStrNomeUnidadeRestricao(); + } + } else { + $repositorios = $objExpedirProcedimentosRN->listarRepositoriosDeEstruturas(); + } + } catch (Exception $e) { $repositorios = $objExpedirProcedimentosRN->listarRepositoriosDeEstruturas(); + } + $motivosDeUrgencia = $objExpedirProcedimentosRN->consultarMotivosUrgencia(); $idRepositorioSelecionado = (isset($numIdRepositorio)) ? $numIdRepositorio : ''; @@ -70,14 +98,7 @@ $strLinkAjaxProcedimentoApensado = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_apensados_auto_completar_expedir_procedimento'); $strLinkProcedimentosApensadosSelecao = $objSessaoSEI->assinarLink('controlador.php?acao=pen_apensados_selecionar_expedir_procedimento&tipo_selecao=2&id_object=objLupaProcedimentosApensados&id_procedimento='.$idProcedimento.''); - $strLinkUnidadesAdministrativasSelecao = $objSessaoSEI->assinarLink('controlador.php?acao=pen_unidades_administrativas_externas_selecionar_expedir_procedimento&tipo_pesquisa=1&id_object=objLupaUnidadesAdministrativas&idRepositorioEstrutura=1'); - - $objUnidadeDTO = new PenUnidadeDTO(); - $objUnidadeDTO->retNumIdUnidadeRH(); - $objUnidadeDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); - - $objUnidadeRN = new UnidadeRN(); - $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + $strLinkUnidadesAdministrativasSelecao = $objSessaoSEI->assinarLink('controlador.php?acao=pen_unidades_administrativas_externas_selecionar_expedir_procedimento&tipo_pesquisa=1&id_object=objLupaUnidadesAdministrativas'); if (!$objUnidadeDTO) { throw new InfraException("A unidade atual não foi mapeada."); @@ -122,8 +143,8 @@ $objExpedirProcedimentoDTO->setBolSinUrgente($boolSinUrgente); $objExpedirProcedimentoDTO->setDblIdProcedimento($numIdProcedimento); $objExpedirProcedimentoDTO->setNumIdMotivoUrgencia($numIdMotivoUrgente); - $objExpedirProcedimentoDTO->setBolSinProcessamentoEmLote(false); - $objExpedirProcedimentoDTO->setNumIdLote(null); + $objExpedirProcedimentoDTO->setBolSinProcessamentoEmBloco(false); + $objExpedirProcedimentoDTO->setNumIdBloco(null); $objExpedirProcedimentoDTO->setNumIdAtividade(null); $objExpedirProcedimentoDTO->setNumIdUnidade(null); @@ -256,6 +277,11 @@ function inicializar() { } }); + objLupaUnidadesAdministrativas.prepararExecucao = function(){ + var parametros = '&idRepositorioEstrutura='+$('#selRepositorioEstruturas').val(); + return parametros; + }; + objAutoCompletarApensados = new infraAjaxAutoCompletar('hdnIdProcedimentoApensado','txtProcedimentoApensado',''); objAutoCompletarApensados.mostrarAviso = true; objAutoCompletarApensados.tamanhoMinimo = 3; @@ -504,7 +530,7 @@ function enviarForm(event){ placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" value="" tabindex="getProxTabDados() ?>" value="" /> - Consultar organograma +
@@ -531,9 +557,7 @@ function enviarForm(event){ -montarBarraComandosInferior($arrComandos); -?> +
montarAreaDebug(); diff --git a/src/pen_procedimento_expedir_validar.php b/src/pen_procedimento_expedir_validar.php index f474e01ed..da72f6c07 100755 --- a/src/pen_procedimento_expedir_validar.php +++ b/src/pen_procedimento_expedir_validar.php @@ -43,6 +43,7 @@ $objProcedimentoDTO->setArrObjDocumentoDTO($objExpedirProcedimentosRN->listarDocumentos($dblIdProcedimento)); $objProcedimentoDTO->setArrObjParticipanteDTO($objExpedirProcedimentosRN->listarInteressados($dblIdProcedimento)); $objExpedirProcedimentosRN->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO, $strProtocoloFormatado); + $objExpedirProcedimentosRN->validarProcessoIncluidoBlocoEmAndamento($objInfraException, $objProcedimentoDTO, $strProtocoloFormatado); // Processos apensados if(array_key_exists('selProcedimentosApensados', $_POST) && is_array($_POST['selProcedimentosApensados'])){ @@ -52,6 +53,7 @@ $objProcedimentoDTO->setArrObjDocumentoDTO($objExpedirProcedimentosRN->listarDocumentos($dblIdProcedimento)); $objProcedimentoDTO->setArrObjParticipanteDTO($objExpedirProcedimentosRN->listarInteressados($dblIdProcedimento)); $objExpedirProcedimentosRN->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO, $strProtocoloFormatado); + $objExpedirProcedimentosRN->validarProcessoIncluidoBlocoEmAndamento($objInfraException, $objProcedimentoDTO, $strProtocoloFormatado); } } } @@ -70,7 +72,7 @@ if(!array_key_exists($strAtributo, $arrErros)){ $arrErros[$strAtributo] = array(); } - $arrErros[$strAtributo][] = utf8_encode($objInfraValidacao->getStrDescricao()); + $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); } $arrResponse['erros'] = $arrErros; diff --git a/src/pen_tipo_procedimento_lista.php b/src/pen_tipo_procedimento_lista.php index 6cf1780c0..e742e69bb 100644 --- a/src/pen_tipo_procedimento_lista.php +++ b/src/pen_tipo_procedimento_lista.php @@ -91,7 +91,6 @@ $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); $objTipoProcedimentoDTO->retNumIdTipoProcedimento(); $objTipoProcedimentoDTO->retStrNome(); - //$objTipoProcedimentoDTO->retStrDescricao(); if ($_GET['acao'] == 'tipo_procedimento_reativar') { //Lista somente inativos diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php old mode 100644 new mode 100755 index 24e095f5d..71b5edcb9 --- a/src/pen_tramita_em_bloco_protocolo_listar.php +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -1,204 +1,145 @@ validarLink(); $objSessaoSEI->validarPermissao($_GET['acao']); - $objPaginaSEI->salvarCamposPost(array('txtProcedimentoFormatado')); + $objPaginaSEI->salvarCamposPost(array('txtProcedimentoFormatado')); switch ($_GET['acao']) { case 'pen_tramita_em_bloco_protocolo_excluir': + $arrExcluidos = array(); try { - + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrStrIds = $objPaginaSEI->getArrStrItensSelecionados(); $arrObjTramiteBlocoProtocoloDTO = array(); if (count($arrStrIds) > 0) { - for ($i = 0; $i < count($arrStrIds); $i++) { + for ($i = 0; $i < count($arrStrIds); $i++) { $arrStrIdComposto = explode('-', $arrStrIds[$i]); - $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO->setNumId($arrStrIdComposto[0]); - $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($arrStrIdComposto[1]); - $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($arrStrIdComposto[2]); - $objTramiteEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); - $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - $arrObjTramiteBlocoProtocoloDTO[] = $objTramiteEmBlocoProtocoloDTO; + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setNumIdBlocoProcesso($arrStrIdComposto[0]); + $objPenBlocoProcessoDTO->setDblIdProtocolo($arrStrIdComposto[1]); + $objPenBlocoProcessoDTO->setNumIdBloco($arrStrIdComposto[2]); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $arrObjTramiteBlocoProtocoloDTO[] = $objPenBlocoProcessoDTO; } } elseif (isset($_GET['hdnInfraItensSelecionados'])) { + $arrStrIdComposto = explode('-', $_GET['hdnInfraItensSelecionados']); - $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO->setNumId($arrStrIdComposto[0]); - $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($arrStrIdComposto[1]); - $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($arrStrIdComposto[2]); - $arrObjTramiteBlocoProtocoloDTO[] = $objTramiteEmBlocoProtocoloDTO; + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setNumIdBlocoProcesso($arrStrIdComposto[0]); + $objPenBlocoProcessoDTO->setDblIdProtocolo($arrStrIdComposto[1]); + $objPenBlocoProcessoDTO->setNumIdBloco($arrStrIdComposto[2]); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $arrObjTramiteBlocoProtocoloDTO[] = $objPenBlocoProcessoDTO; } - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $objTramitaEmBlocoProtocoloRN->excluir($arrObjTramiteBlocoProtocoloDTO); - - $dblIdBloco = $arrObjTramiteBlocoProtocoloDTO[0]->getNumIdTramitaEmBloco(); - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($dblIdBloco); - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); - $objTramiteEmBlocoDTO->retNumId(); - $objTramiteEmBlocoDTO->retStrStaEstado(); - - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); - - if ($blocoResultado != null) { - $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($dblIdBloco); - $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - $objTramiteEmBlocoProtocoloDTO->setNumMaxRegistrosRetorno(1); - $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); - - $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $tramiteEmBlocoProtocoloDTO = $tramitaEmBlocoProtocoloRN->consultar($objTramiteEmBlocoProtocoloDTO); - - if ($tramiteEmBlocoProtocoloDTO == null) { - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($dblIdBloco); - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); - - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); - } else { - $recusa = false; - $cancelado = false; - // Verificar se tem existe processo recusado dentro de um bloco - $objTramiteEmBlocoProtocoloDTO2 = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO2->setNumIdTramitaEmBloco($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); - $objTramiteEmBlocoProtocoloDTO2->retNumIdTramitaEmBloco(); - $objTramiteEmBlocoProtocoloDTO2->retDblIdProtocolo(); - - $objTramiteEmBlocoProtocoloDTORN = new TramitaEmBlocoProtocoloRN($objTramiteEmBlocoProtocoloDTO2); - - $arrTramiteEmBlocoProtocolo = $objTramiteEmBlocoProtocoloDTORN->listar($objTramiteEmBlocoProtocoloDTO2); - - $objPenProtocolo = new PenProtocoloDTO(); - $objPenProtocolo->setDblIdProtocolo(InfraArray::converterArrInfraDTO($arrTramiteEmBlocoProtocolo, 'IdProtocolo'), InfraDTO::$OPER_IN); - $objPenProtocolo->setStrSinObteveRecusa('S'); - $objPenProtocolo->setNumMaxRegistrosRetorno(1); - $objPenProtocolo->retDblIdProtocolo(); - - $objPenProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $ObjPenProtocoloDTO = $objPenProtocoloBD->consultar($objPenProtocolo); - - if ($ObjPenProtocoloDTO != null) { - $recusa = true; - } - - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo(InfraArray::converterArrInfraDTO($arrTramiteEmBlocoProtocolo, 'IdProtocolo'), InfraDTO::$OPER_IN); - $objAtividadeDTO->setNumIdTarefa([ - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO) - ], InfraDTO::$OPER_IN); - $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); - $objAtividadeDTO->setNumMaxRegistrosRetorno(1); - $objAtividadeDTO->retNumIdAtividade(); - $objAtividadeDTO->retNumIdTarefa(); - $objAtividadeDTO->retDblIdProcedimentoProtocolo(); - $objAtividadeRN = new AtividadeRN(); - $objAtividadeDTO = $objAtividadeRN->consultarRN0033($objAtividadeDTO); - - if ($objAtividadeDTO != null) { - $cancelado = true; - } - - if ($recusado == false && $cancelado == false) { - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO); - - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); - } + $contemValidacoes = $objPenBlocoProcessoRN->verificarExclusaoBloco($arrObjTramiteBlocoProtocoloDTO); + $arrExcluidos = $objPenBlocoProcessoRN->excluir($arrObjTramiteBlocoProtocoloDTO); + if (!empty($arrExcluidos)) { + $dblIdBloco = $arrObjTramiteBlocoProtocoloDTO[0]->getNumIdBloco(); + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($dblIdBloco); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retStrStaEstado(); + $objTramiteEmBlocoDTO->retNumOrdem(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + + if ($blocoResultado != null) { + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcessoRN->atualizarEstadoDoBloco($dblIdBloco); } - } - - PaginaSEI::getInstance()->setStrMensagem('Operação realizada com sucesso.'); + } + if (!is_null($contemValidacoes)) { + PaginaSEI::getInstance()->setStrMensagem($contemValidacoes); + } else { + PaginaSEI::getInstance()->setStrMensagem('Operação realizada com sucesso.'); + } + } catch (Exception $e) { PaginaSEI::getInstance()->processarExcecao($e); } header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'].'&id_bloco='.$_GET['id_bloco'])); die; case 'pen_tramita_em_bloco_protocolo_listar': - $strTitulo = 'Processos do Bloco: ' . $_GET['id_bloco']; + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($_GET['id_bloco']); + $objTramiteEmBlocoDTO->retNumOrdem(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + + $strTitulo = 'Processos do Bloco ' . $blocoResultado->getNumOrdem() . ':'; break; default: throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); } - $arrComandos = array(); $arrComandos[] = ''; $arrComandos[] = ''; - $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramitaEmBlocoProtocoloDTO->retNumId(); - $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramitaEmBlocoProtocoloDTO->retNumSequencia(); - $objTramitaEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); - $objTramitaEmBlocoProtocoloDTO->retNumIdUsuario(); - $objTramitaEmBlocoProtocoloDTO->retNumIdUnidadeBloco(); - $objTramitaEmBlocoProtocoloDTO->retStrStaEstadoProtocolo(); - $objTramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($_GET['id_bloco']); + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setNumIdBloco($_GET['id_bloco']); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->retNumSequencia(); + $objPenBlocoProcessoDTO->retStrNomeUsuario(); + $objPenBlocoProcessoDTO->retDthEnvio(); + $objPenBlocoProcessoDTO->retStrUnidadeDestino(); + $objPenBlocoProcessoDTO->retNumIdUsuario(); + $objPenBlocoProcessoDTO->retNumIdUnidadeBloco(); + $objPenBlocoProcessoDTO->retStrStaEstadoProtocolo(); + $objPenBlocoProcessoDTO->retStrStaEstadoBloco(); + $objPenBlocoProcessoDTO->retNumIdAndamento(); $strPalavrasPesquisa = PaginaSEI::getInstance()->recuperarCampo('txtProcedimentoFormatado'); if ($strPalavrasPesquisa!=''){ - $objTramitaEmBlocoProtocoloDTO->setStrPalavrasPesquisa($strPalavrasPesquisa); + $objPenBlocoProcessoDTO->setStrPalavrasPesquisa($strPalavrasPesquisa); } - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $arrTramitaEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloRN->listarProtocolosBloco($objTramitaEmBlocoProtocoloDTO); - + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrPenBlocoProcessoDTO = $objPenBlocoProcessoRN->listarProtocolosBloco($objPenBlocoProcessoDTO); $arrComandos = array(); $arrComandos[] = ''; $arrComandos[] = ''; - $objPaginaSEI->prepararPaginacao($objTramitaEmBlocoProtocoloDTO); - $objPaginaSEI->processarPaginacao($objTramitaEmBlocoProtocoloDTO); - $objPaginaSEI->prepararOrdenacao($objTramitaEmBlocoProtocoloDTO, 'IdxRelBlocoProtocolo', InfraDTO::$TIPO_ORDENACAO_DESC); + $objPaginaSEI->prepararPaginacao($objPenBlocoProcessoDTO); + $objPaginaSEI->processarPaginacao($objPenBlocoProcessoDTO); + $objPaginaSEI->prepararOrdenacao($objPenBlocoProcessoDTO, 'IdProtocolo', InfraDTO::$TIPO_ORDENACAO_DESC); - $numRegistros = count($arrTramitaEmBlocoProtocoloDTO); + $numRegistros = count($arrPenBlocoProcessoDTO); if ($numRegistros > 0) { - $arrComandos[] = ''; - $strResultado = ''; - $strSumarioTabela = 'Tabela de Processo em Lote.'; - $strCaptionTabela = 'Processo em Lote'; - + $strSumarioTabela = 'Tabela de Processo em Bloco.'; + $strCaptionTabela = 'Processo em Bloco'; $strResultado .= '' . "\n"; $strResultado .= ''; $strResultado .= ''; $strResultado .= '' . "\n"; $strResultado .= '' . "\n"; $strResultado .= '' . "\n"; $strResultado .= '' . "\n"; $strResultado .= '' . "\n"; @@ -207,79 +148,81 @@ $strResultado .= '' . "\n"; $strResultado .= '' . "\n"; $strCssTr = ''; - foreach ($arrTramitaEmBlocoProtocoloDTO as $i => $objTramitaEmBlocoProtocoloDTO) { + $situacaoPodeExcluir = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ); + + foreach ($arrPenBlocoProcessoDTO as $i => $objPenBlocoProcessoDTO) { $strCssTr = ($strCssTr == '') ? '' : ''; $strResultado .= $strCssTr; - $numIdBlocoProtocolo = $objTramitaEmBlocoProtocoloDTO->getNumId().'-'.$objTramitaEmBlocoProtocoloDTO->getDblIdProtocolo().'-'.$_GET['id_bloco']; + $numIdBlocoProtocolo = $objPenBlocoProcessoDTO->getNumIdBlocoProcesso().'-'.$objPenBlocoProcessoDTO->getDblIdProtocolo().'-'.$_GET['id_bloco']; $strResultado .= ''; $strResultado .= ''; $strResultado .= ''; + $objProcedimentoDTO = new ProcedimentoDTO(); + $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado(); + $objProcedimentoDTO->setDblIdProcedimento($objPenBlocoProcessoDTO->getDblIdProtocolo()); - $objPenLoteProcedimento = $objTramitaEmBlocoProtocoloDTO->getObjPenLoteProcedimentoDTO(); + $objProcedimentoRN = new ProcedimentoRN(); + $procedimento = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); + + $strResultado .= '' . $procedimento->getStrProtocoloProcedimentoFormatado() . ''; + $strResultado .= ''; - if ($objPenLoteProcedimento && $objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() != TramiteEmBlocoRN::$TE_ABERTO) { - $strResultado .= ''; - $strResultado .= ''; - $strResultado .= ''; - + if ($objPenBlocoProcessoDTO->getStrStaEstadoBloco() != TramiteEmBlocoRN::$TE_ABERTO) { + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; } else { $strResultado .= str_repeat('' . "\n", 3); } $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; $strResultado .= '' . "\n"; @@ -424,7 +367,7 @@ function onClickBtnTramitarProcessos() { var len = jQuery('input[name*=chkInfraItem]:checked').length; if (len > 0) { var form = jQuery('#frmLoteListar'); - form.attr('action', 'assinarLink('controlador.php?acao=pen_expedir_lote&acao_origem=pen_tramita_em_bloco_protocolo_listar&acao_retorno=pen_tramita_em_bloco_protocolo_listar&tramite_em_bloco=1'); ?>'); + form.attr('action', 'assinarLink('controlador.php?acao=pen_expedir_bloco&acao_origem=pen_tramita_em_bloco_protocolo_listar&acao_retorno=pen_tramita_em_bloco_protocolo_listar&tramite_em_bloco=1'); ?>'); form.submit(); } else { alert('Selecione pelo menos um processo'); diff --git a/src/pen_tramite_bloco_listar.php b/src/pen_tramite_bloco_listar.php index 65f00906c..0b5a8bc2d 100644 --- a/src/pen_tramite_bloco_listar.php +++ b/src/pen_tramite_bloco_listar.php @@ -9,8 +9,6 @@ $objPaginaSEI = PaginaSEI::getInstance(); $objSessaoSEI = SessaoSEI::getInstance(); - // $objSessaoSEI->validarLink(); - $strActionPadrao = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao'] . '&acao_origem=' . $_GET['acao'] . '&id_documento=' . $_GET['id_documento']); PaginaSEI::getInstance()->salvarCamposPost(array('txtPalavrasPesquisaBloco', 'chakSinEstadoGerado', 'selUnidadeGeradora', 'hdnMeusBlocos')); @@ -48,16 +46,16 @@ $arrObjTramiteEmBloco = []; $excluir = true; foreach ($arrTramiteEmBloco as $objTramiteEmBloco) { - $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $tramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($objTramiteEmBloco->getNumId()); - $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - $tramitaEmBlocoProtocoloDTO->retNumId(); - $tramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); - - $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $arrTramitaEmBlocoProtocoloRN = $tramitaEmBlocoProtocoloRN->listar($tramitaEmBlocoProtocoloDTO); + $PenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $PenBlocoProcessoDTO->setNumIdBloco($objTramiteEmBloco->getNumId()); + $PenBlocoProcessoDTO->retNumIdBloco(); + $PenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $PenBlocoProcessoDTO->retDblIdProtocolo(); + + $PenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrPenBlocoProcessoRN = $PenBlocoProcessoRN->listar($PenBlocoProcessoDTO); - if ($arrTramitaEmBlocoProtocoloRN == null) { + if ($arrPenBlocoProcessoRN == null) { $arrObjTramiteEmBloco[] = $objTramiteEmBloco; } else { $excluir = false; @@ -83,7 +81,6 @@ $checkboxesEstados = [ 'chkSinEstadoGerado' => TramiteEmBlocoRN::$TE_ABERTO, 'chkSinEstadoDisponibilizado' => TramiteEmBlocoRN::$TE_DISPONIBILIZADO, - 'chkSinEstadoConcluidoParcialmente' => TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE, 'chkSinEstadoConcluido' => TramiteEmBlocoRN::$TE_CONCLUIDO ]; @@ -120,8 +117,10 @@ $objFiltroDTO = new TramiteEmBlocoDTO(); $objFiltroDTO->retNumId(); + $objFiltroDTO->retNumOrdem(); $objFiltroDTO->retStrStaEstado(); $objFiltroDTO->retStrDescricao(); + $objFiltroDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objFiltroDTO->setStrPalavrasPesquisa($setStrPalavrasPesquisa); @@ -136,7 +135,8 @@ // Cabeçalho da tabela $colunas = [ - 'id' => 'Número', + 'id' => 'Id', + 'ordem' => 'Número', 'estado' => 'Estado', 'descricao' => 'Descrição', ]; @@ -146,6 +146,7 @@ foreach ($arrObjBlocosListar as $objFiltro) { $tabelaLinhas[] = [ 'id' => $objFiltro->getNumId(), + 'ordem' => $objFiltro->getNumOrdem(), 'estado' => $objTramiteEmBloco->retornarEstadoDescricao($objFiltro->getStrStaEstado()), 'descricao' => $objFiltro->getStrDescricao(), ]; @@ -171,46 +172,51 @@ $strResultado .= '' . "\n"; // Adicionar colunas dinamicamente - foreach ($colunas as $coluna) { - $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + } } // Adicionar coluna ações $strResultado .= '' . "\n"; $strResultado .= ""; - foreach ($tabelaLinhas as $cont => $linha) { + $strResultado .= ""; $strResultado .= ''; $idBlocoTramite = ''; foreach ($colunas as $key => $coluna) { $idBlocoTramite = $linha['id']; - if ($linha[$key]) { + if (!is_null($linha[$key]) && $key != 'id') { $strResultado .= ""; } + } $strResultado .= "
' . $objPaginaSEI->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPaginaSEI->getThCheck() . ''; - $strResultado .= '
'; $strResultado .= '
Seq
'; $strResultado .= '
Ordenar Processo Ascendente
'; $strResultado .= '
Ordenar Processo Descendente
'; $strResultado .= '
'; - $strResultado .= '
'; - $strResultado .= '
'; $strResultado .= '
Processo
'; $strResultado .= '
Ordenar Processo Ascendente
'; $strResultado .= '
Ordenar Processo Descendente
'; $strResultado .= '
'; - $strResultado .= '
UsuárioData do EnvioAções
' . $objPaginaSEI->getTrCheck($i, $numIdBlocoProtocolo, $numIdBlocoProtocolo) . '' . ($i + 1) . ''; - $strResultado .= '' . $objTramitaEmBlocoProtocoloDTO->getStrIdxRelBlocoProtocolo() . ''; - $strResultado .= '' . PaginaSEI::tratarHTML($objPenLoteProcedimento[0]->getStrNomeUsuario()) . '' . PaginaSEI::tratarHTML($objPenLoteProcedimento[0]->getDthRegistro()) . '' . PaginaSEI::tratarHTML($objPenLoteProcedimento[0]->getStrUnidadeDestino()) . ''. PaginaSEI::tratarHTML($objPenBlocoProcessoDTO->getStrNomeUsuario()) . ''. PaginaSEI::tratarHTML($objPenBlocoProcessoDTO->getDthEnvio()) . ''. PaginaSEI::tratarHTML($objPenBlocoProcessoDTO->getStrUnidadeDestino()) . '' . "\n"; - if ($objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() == TramiteEmBlocoRN::$TE_ABERTO) { - $strResultado .= 'Em aberto'; - } elseif ($objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() == TramiteEmBlocoRN::$TE_DISPONIBILIZADO) { - $strResultado .= ''; - } elseif ($objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() == TramiteEmBlocoRN::$TE_CONCLUIDO && count($objPenLoteProcedimento) > 1) { - $strResultado .= ''; - } elseif ($objTramitaEmBlocoProtocoloDTO->getStrSinObteveRecusa() == 'S') { - $strResultado .= 'Um trâmite para esse processo foi recusado'; - } else { - - $processoConcluidoRecebido = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO); - $processoConcluidoAvulso = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO); - $processoTramiteExpedido = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO); - $processoTramiteCancelado = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO); - $processoTramiteProcessamento = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); - $processoTramiteAberto = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); - - switch ($objTramitaEmBlocoProtocoloDTO->getNumStaIdTarefa()) { - case $processoConcluidoAvulso: - case $processoTramiteExpedido: - case $processoConcluidoRecebido: - $strResultado .= ''; - break; - case $processoTramiteProcessamento: - $strResultado .= ''; + switch ($objPenBlocoProcessoDTO->getNumIdAndamento()) { + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO: + $strResultado .= ''; + break; + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE: + $strResultado .= ''; + break; + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA: + $strResultado .= ''; + break; + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE: + $strResultado .= ''; + break; + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO: + if(is_null($objPenBlocoProcessoDTO->getNumIdAndamento())){ + $strResultado .= 'Em aberto'; break; - case $processoTramiteCancelado: - $strResultado .= ''; - break; - default: - $strResultado .= 'Em aberto'; - break; - } + } + $strResultado .= ''; + break; + default: + $strResultado .= 'Em aberto'; + break; } $strResultado .= '' . "\n"; - - if ($objTramitaEmBlocoProtocoloDTO->getNumIdUnidadeBloco() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()) { - if ($objTramitaEmBlocoProtocoloDTO->getStrSinObteveRecusa() == 'S' || - $objTramitaEmBlocoProtocoloDTO->getNumStaIdTarefa() == $processoTramiteCancelado || - $objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() == TramiteEmBlocoRN::$TE_ABERTO ) { + $strResultado .= ''. "\n"; - if ($objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() != TramiteEmBlocoRN::$TE_DISPONIBILIZADO && - $objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() != TramiteEmBlocoRN::$TE_CONCLUIDO) { - $strResultado .= 'Excluir processo '; - } - } + if ( + $objPenBlocoProcessoDTO->getNumIdUnidadeBloco() == SessaoSEI::getInstance()->getNumIdUnidadeAtual() + && $objPenBlocoProcessoDTO->getNumIdAndamento() === null + ) { + $strResultado .= 'Excluir processo '; } $strResultado .= '
' . PaginaSEI::getInstance()->getThCheck() . ''; + foreach ($colunas as $key => $coluna) { + if ($key != 'id') { + $strResultado .= ''; - $strResultado .= '
'; - $strResultado .= "
{$coluna}
"; - $strResultado .= '
Ordenar Processo Ascendente
'; - $strResultado .= '
Ordenar Processo Descendente
'; - $strResultado .= '
'; + $strResultado .= '
'; + $strResultado .= "
{$coluna}
"; + $strResultado .= '
Ordenar Processo Ascendente
'; + $strResultado .= '
Ordenar Processo Descendente
'; + $strResultado .= '
'; - $strResultado .= '
'; $strResultado .= "
Ações
"; $strResultado .= '
' . PaginaSEI::getInstance()->getTrCheck($cont, $linha['id'], $linha['id']) . ' {$linha[$key]} "; // Tramitar bloco - $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($idBlocoTramite); - $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramitaEmBlocoProtocoloDTO); - - if (!empty($arrTramiteEmBlocoProtocolo) && $linha['estado'] == $objTramiteEmBloco->retornarEstadoDescricao(TramiteEmBlocoRN::$TE_ABERTO)) { - $strResultado .= 'getDiretorioImagens()) . '" title="Tramitar Bloco" alt="Bloco-' . $cont . '" class="infraImg iconTramita" /> '; + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setNumIdBloco($idBlocoTramite); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + + $bolUnidadeMapeada = $objTramiteEmBloco->existeUnidadeMapeadaParaUnidadeLogada(); + if (!empty($arrPenBlocoProcesso) && $bolUnidadeMapeada && $linha['estado'] == $objTramiteEmBloco->retornarEstadoDescricao(TramiteEmBlocoRN::$TE_ABERTO)) { + $strResultado .= 'getDiretorioImagens()) . '" title="Tramitar Bloco" alt="Bloco-' . $cont . '" class="infraImg iconTramita" /> '; } @@ -494,11 +500,6 @@ function onClickBtnExcluir() { -
- name="chkSinEstadoConcluidoParcialmente" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoConcluidoParcialmente) ?> tabindex="getProxTabDados() ?>" /> - -
-
name="chkSinEstadoConcluido" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoConcluido) ?> tabindex="getProxTabDados() ?>" /> diff --git a/src/pen_tramite_em_bloco_cadastrar.php b/src/pen_tramite_em_bloco_cadastrar.php index dda80a49b..da8ace211 100644 --- a/src/pen_tramite_em_bloco_cadastrar.php +++ b/src/pen_tramite_em_bloco_cadastrar.php @@ -44,12 +44,28 @@ $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); if (isset($_POST['sbmCadastrarTramiteEmBloco'])) { + // Calcula a ordem do novo bloco + $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $tramiteEmBlocoDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_DESC); + $tramiteEmBlocoDTO->retNumOrdem(); + $tramiteEmBlocoDTO->setNumMaxRegistrosRetorno(1); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $tramiteEmBlocoDTO = $objTramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); + if ($tramiteEmBlocoDTO == null) { + $ordem = 1; + } else { + $ordem = $tramiteEmBlocoDTO->getNumOrdem() + 1; + } + $strNovaDescricao = 'Novo Bloco'; $strDescricao = $objPaginaSEI->recuperarCampo('txtDescricao'); if ($strDescricao) { $strNovaDescricao = $strDescricao; } $objTramiteEmBlocoDTO->setStrDescricao($strNovaDescricao); + $objTramiteEmBlocoDTO->setNumOrdem($ordem); try { $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); diff --git a/src/pen_tramite_processo_em_bloco_cadastrar.php b/src/pen_tramite_processo_em_bloco_cadastrar.php old mode 100644 new mode 100755 index ab9532cb1..d3d0b30fb --- a/src/pen_tramite_processo_em_bloco_cadastrar.php +++ b/src/pen_tramite_processo_em_bloco_cadastrar.php @@ -35,6 +35,53 @@ $arrComandos[] = ''; $arrComandos[] = ''; switch ($_GET['acao']) { + case 'pen_excluir_processo_em_bloco_tramite': + try { + $objProcedimentoDTO = new ProcedimentoDTO(); + $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado(); + $objProcedimentoDTO->setDblIdProcedimento($_GET['id_procedimento']); + + $objProcedimentoRN = new ProcedimentoRN(); + $procedimento = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); + + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($_GET['id_procedimento']); + $objPenBlocoProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + foreach($arrObjPenBlocoProcessoDTO as $objPenBlocoProcessoDTO){ + $concluido = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE + ); + if ($objPenBlocoProcessoDTO->getNumIdAndamento() === null || !in_array($objPenBlocoProcessoDTO->getNumIdAndamento(), $concluido)) { + $objPenBlocoProcessoRN->excluir(array($objPenBlocoProcessoDTO)); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcessoRN->atualizarEstadoDoBloco($objPenBlocoProcessoDTO->getNumIdBloco()); + } + } + + $strMensagem = 'O processo "' . $procedimento->getStrProtocoloProcedimentoFormatado() . '" foi removido com sucesso do bloco de trâmite externo'; + } catch (Exception $e) { + $strMensagem = $e->getMessage(); + PaginaSEI::getInstance()->processarExcecao($e); + } + ?> + + validarPermissao($_GET['acao']); @@ -54,8 +101,8 @@ exit(0); } - $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $validar = $tramitaEmBlocoProtocoloRN->validarQuantidadeDeItensNoBloco($idBlocoExterno, [$_GET['id_procedimento']]); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $validar = $objPenBlocoProcessoRN->validarQuantidadeDeItensNoBloco($idBlocoExterno, [$_GET['id_procedimento']]); if ($validar !== false) { $objPaginaSEI->adicionarMensagem($validar, InfraPagina::$TIPO_MSG_ERRO); @@ -64,45 +111,78 @@ exit(0); } - $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + // Esse quem vai ficar + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setNumIdBlocoProcesso(null); + $objPenBlocoProcessoDTO->setDblIdProtocolo($_GET['id_procedimento']); + $objPenBlocoProcessoDTO->setNumIdBloco($idBlocoExterno); + $dthRegistro = date('d/m/Y H:i:s'); + $objPenBlocoProcessoDTO->setDthRegistro($dthRegistro); + $objPenBlocoProcessoDTO->setDthAtualizado($dthRegistro); + $objPenBlocoProcessoDTO->setNumIdUsuario($objSessaoSEI->getNumIdUsuario()); + $objPenBlocoProcessoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); - $objTramiteEmBlocoProtocoloDTO->setNumId(null); - $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($_GET['id_procedimento']); - $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($idBlocoExterno); - $objTramiteEmBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($procedimento->getStrProtocoloProcedimentoFormatado()); - - $objTramiteEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $validar = $objTramiteEmBlocoProtocoloRN->validarBlocoDeTramite($_GET['id_procedimento']); + $validar = $objPenBlocoProcessoRN->validarBlocoDeTramite($_GET['id_procedimento']); if ($validar) { $objPaginaSEI->adicionarMensagem($validar, InfraPagina::$TIPO_MSG_AVISO); header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); exit(0); } + + //Verifica processo aberto em outra unidade. + $objInfraException = new InfraException(); + $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); + $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, array($_GET['id_procedimento'])); + $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); + if (!is_null($mensagemDeErro)) { + $objPaginaSEI->adicionarMensagem($mensagemDeErro, InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + exit(0); + } + + $objExpedirProcedimentosRN->validarProcessoAbertoEmOutraUnidade($objInfraException, array($_GET['id_procedimento'])); + $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); + if (!is_null($mensagemDeErro)) { + $objPaginaSEI->adicionarMensagem($mensagemDeErro, InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + exit(0); + } - $objTramiteEmBlocoProtocoloDTO = $objTramiteEmBlocoProtocoloRN->cadastrar($objTramiteEmBlocoProtocoloDTO); - $objPaginaSEI->adicionarMensagem('Processo "' . $procedimento->getStrProtocoloProcedimentoFormatado() . '" adicionado ao bloco', InfraPagina::$TIPO_MSG_AVISO); + $objPenBlocoProcessoDTO = $objPenBlocoProcessoRN->cadastrar($objPenBlocoProcessoDTO); + $strMensagem = 'Processo "' . $procedimento->getStrProtocoloProcedimentoFormatado() . '" adicionado ao bloco'; } catch (Exception $e) { + $strMensagem = $e->getMessage(); PaginaSEI::getInstance()->processarExcecao($e); } - header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + ?> + + getArrStrItensSelecionados('Gerados'), $objPaginaSEI->getArrStrItensSelecionados('Recebidos')); + $arrProtocolosOrigem = array_merge( + $objPaginaSEI->getArrStrItensSelecionados('Gerados'), + $objPaginaSEI->getArrStrItensSelecionados('Recebidos'), + $objPaginaSEI->getArrStrItensSelecionados('Detalhado') + ); $strIdItensSelecionados = $strIdItensSelecionados ?: $_GET['processos']; $strTitulo = 'Incluir Processo(s) no Bloco de Trâmite'; if (isset($_POST['sbmCadastrarProcessoEmBloco'])) { try { - $erros = []; - $sucesso = false; + $bolInclusaoSucesso = false; + $arrMensagensErros = []; $arrProtocolosOrigemProtocolo = explode(',', $strIdItensSelecionados); - $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $validar = $tramitaEmBlocoProtocoloRN->validarQuantidadeDeItensNoBloco($idBlocoExterno, $arrProtocolosOrigemProtocolo); + // Refatorar validarQuantidadeDeItensNoBloco + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $validar = $objPenBlocoProcessoRN->validarQuantidadeDeItensNoBloco($idBlocoExterno, $arrProtocolosOrigemProtocolo); if ($validar !== false) { $objPaginaSEI->adicionarMensagem($validar, InfraPagina::$TIPO_MSG_ERRO); @@ -112,40 +192,66 @@ } foreach ($arrProtocolosOrigemProtocolo as $idItensSelecionados) { - - $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $tramitaEmBlocoProtocoloDTO->setDblIdProtocolo($idItensSelecionados); - $tramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($idBlocoExterno); - $tramitaEmBlocoProtocoloDTO->retNumId(); - $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - $tramitaEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); - - $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $validar = $tramitaEmBlocoProtocoloRN->validarBlocoDeTramite($idItensSelecionados); - - if ($validar == false) { - $sucesso = true; - $objProcedimentoDTO = new ProcedimentoDTO(); - $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado(); - $objProcedimentoDTO->setDblIdProcedimento($idItensSelecionados); - - $objProcedimentoRN = new ProcedimentoRN(); - $procedimento = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); - - $tramitaEmBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($procedimento->getStrProtocoloProcedimentoFormatado()); - $objTramiteEmBlocoProtocoloDTO = $tramitaEmBlocoProtocoloRN->cadastrar($tramitaEmBlocoProtocoloDTO); - } else { - $erros = true; - $objPaginaSEI->adicionarMensagem($validar, InfraPagina::$TIPO_MSG_ERRO); + $bolInclusaoErro = false; + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($idItensSelecionados); + $objPenBlocoProcessoDTO->setNumIdBloco($idBlocoExterno); + $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $dtRegistro = date('d/m/Y H:i:s'); + $objPenBlocoProcessoDTO->setDthRegistro($dtRegistro); + $objPenBlocoProcessoDTO->setDthAtualizado($dtRegistro); + $objPenBlocoProcessoDTO->setNumIdUsuario($objSessaoSEI->getNumIdUsuario()); + $objPenBlocoProcessoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + + $validarPreCondicoesIncluir = $objPenBlocoProcessoRN->validarBlocoDeTramite($idItensSelecionados); + + if ($validarPreCondicoesIncluir != false) { + $bolInclusaoErro = true; + $arrMensagensErros[] = $validarPreCondicoesIncluir; + }else{ + $objInfraException = new InfraException(); + $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); + $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, array($idItensSelecionados)); + $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); + if (!is_null($mensagemDeErro)) { + $bolInclusaoErro = true; + $arrMensagensErros[] = $mensagemDeErro; + } + + $objExpedirProcedimentosRN->validarProcessoAbertoEmOutraUnidade($objInfraException, array($idItensSelecionados)); + $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); + if (!is_null($mensagemDeErro)) { + $bolInclusaoErro = true; + $arrMensagensErros[] = $mensagemDeErro; + } + + if ($bolInclusaoErro === false) { + $bolInclusaoSucesso = true; + $objPenBlocoProcessoDTO = $objPenBlocoProcessoRN->cadastrar($objPenBlocoProcessoDTO); + } + } } - if ($sucesso) { - $mensagemSucesso = "Processo(s) incluído(s) com sucesso no bloco {$idBlocoExterno}"; + if (!empty($arrMensagensErros)) { + foreach ($arrMensagensErros as $mensagemErro) { + $objPaginaSEI->adicionarMensagem($mensagemErro, InfraPagina::$TIPO_MSG_ERRO); + } + } + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($idBlocoExterno); + $objTramiteEmBlocoDTO->retNumOrdem(); + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + + if ($bolInclusaoSucesso) { + $mensagemSucesso = "Processo(s) incluído(s) com sucesso no bloco {$blocoResultado->getNumOrdem()}"; } - if ($sucesso && $erros) { - $mensagemSucesso = "Os demais processos selecionados foram incluídos com sucesso no bloco {$idBlocoExterno}"; + if ($bolInclusaoSucesso && !empty($arrMensagensErros)) { + $mensagemSucesso = "Os demais processos selecionados foram incluídos com sucesso no bloco {$blocoResultado->getNumOrdem()}"; } $objPaginaSEI->adicionarMensagem($mensagemSucesso, 5); @@ -162,15 +268,19 @@ $arrMapIdBloco = array(); $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); //($objSessaoSEI->getNumIdUnidadeAtual()); + $objTramiteEmBlocoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retNumOrdem(); $objTramiteEmBlocoDTO->retNumIdUnidade(); $objTramiteEmBlocoDTO->retStrDescricao(); - PaginaSEI::getInstance()->prepararOrdenacao($objTramiteEmBlocoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_DESC); + if ($_GET['acao'] != 'pen_tramita_em_bloco_adicionar') { + PaginaSEI::getInstance()->prepararOrdenacao($objTramiteEmBlocoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_DESC); + } $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); foreach ($objTramiteEmBlocoRN->listar($objTramiteEmBlocoDTO) as $dados) { - $arrMapIdBloco[$dados->getNumId()] = "{$dados->getNumId()} - {$dados->getStrDescricao()}"; + $arrMapIdBloco[$dados->getNumId()] = "{$dados->getNumOrdem()} - {$dados->getStrDescricao()}"; } } catch (Exception $e) { PaginaSEI::getInstance()->processarExcecao($e); diff --git a/src/pen_unidade_sel_expedir_procedimento.php b/src/pen_unidade_sel_expedir_procedimento.php index 27e79aba7..aea74df4e 100755 --- a/src/pen_unidade_sel_expedir_procedimento.php +++ b/src/pen_unidade_sel_expedir_procedimento.php @@ -22,11 +22,6 @@ SessaoSEI::getInstance()->validarLink(); - - -// $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); -// $resultDadosHierarquia = $objExpedirProcedimentosRN->consultarUnidadesHierarquia(); - switch ($_GET['acao']) { case 'pen_unidade_sel_expedir_procedimento': diff --git a/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php b/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php index b576fd7fb..427a49842 100755 --- a/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php +++ b/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php @@ -324,10 +324,6 @@ function monitorarJanela(){ if(objJanelaPesquisaTextual.closed) { window.clearInterval(evnJanelaPesquisaTextual); jQuery('#divInfraModalFundo', window.parent.document).css('visibility', 'hidden'); - //var strDestino = 'assinarLink('controlador.php?acao=procedimento_trabalhar&acao_origem=procedimento_controlar&acao_retorno=procedimento_controlar&id_procedimento='.$idProcedimento); ?>//'; - //if(strDestino) { - // window.top.location = strDestino; - //} } } diff --git a/src/pen_validar_expedir_lote.php b/src/pen_validar_expedir_lote.php index f4b5bc2c3..36d5d6ace 100755 --- a/src/pen_validar_expedir_lote.php +++ b/src/pen_validar_expedir_lote.php @@ -16,6 +16,23 @@ throw new InfraException('Nenhum procedimento foi informado', 'Desconhecido'); } + $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); + $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, $arrProtocolosOrigem); + if ($objInfraException->contemValidacoes()) { + $arrErros = array(); + foreach ($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { + $strAtributo = $objInfraValidacao->getStrAtributo(); + if (!array_key_exists($strAtributo, $arrErros)) { + $arrErros[$strAtributo] = array(); + } + $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); + } + + $arrResponse['erros'] = $arrErros; + print json_encode($arrResponse); + exit(0); + } + foreach ($arrProtocolosOrigem as $dblIdProcedimento) { $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); @@ -41,11 +58,9 @@ $objInfraException->adicionarValidacao('Informe Unidade de destino', $strProtocoloFormatado); } - if(!$objInfraException->contemValidacoes()) { - $objProcedimentoDTO->setArrObjDocumentoDTO($objExpedirProcedimentosRN->listarDocumentos($dblIdProcedimento)); - $objProcedimentoDTO->setArrObjParticipanteDTO($objExpedirProcedimentosRN->listarInteressados($dblIdProcedimento)); - $objExpedirProcedimentosRN->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO, $strProtocoloFormatado); - } + $objProcedimentoDTO->setArrObjDocumentoDTO($objExpedirProcedimentosRN->listarDocumentos($dblIdProcedimento)); + $objProcedimentoDTO->setArrObjParticipanteDTO($objExpedirProcedimentosRN->listarInteressados($dblIdProcedimento)); + $objExpedirProcedimentosRN->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO); } } catch(\InfraException $e) { @@ -54,21 +69,20 @@ LogSEI::getInstance()->gravar($strmensagemErro); } -if($objInfraException->contemValidacoes()) { +if ($objInfraException->contemValidacoes()) { - $arrErros = array(); - foreach($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { - $strAtributo = $objInfraValidacao->getStrAtributo(); - if(!array_key_exists($strAtributo, $arrErros)){ - $arrErros[$strAtributo] = array(); + $arrErros = array(); + foreach ($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { + $strAtributo = $objInfraValidacao->getStrAtributo(); + if (!array_key_exists($strAtributo, $arrErros)) { + $arrErros[$strAtributo] = array(); } - $arrErros[$strAtributo][] = utf8_encode($objInfraValidacao->getStrDescricao()); + $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); } - $arrResponse['erros'] = $arrErros; -} -else { - $arrResponse['sucesso'] = true; + $arrResponse['erros'] = $arrErros; +} else { + $arrResponse['sucesso'] = true; } print json_encode($arrResponse); diff --git a/src/rn/Editor3011RN.php b/src/rn/Editor3011RN.php index 69d8f26de..acf59fb65 100755 --- a/src/rn/Editor3011RN.php +++ b/src/rn/Editor3011RN.php @@ -200,12 +200,7 @@ private function montarBarraFerramentas($bolAdicionarTextoPadrao, $bolBtnWSC, $b $arrRetorno[] = array('assinatura'); } - $arrRetorno[] = array('Find', 'Replace', '-', 'RemoveFormat', 'Bold', 'Italic', 'Underline', 'Strike','Subscript','Superscript', 'Maiuscula', 'Minuscula', 'TextColor', 'BGColor' /*,'PageBreak'*/); - - //if (ConfiguracaoSEI::getInstance()->getValor('SEI','Producao')){ - // $bolBtnWSC=false; - // $bolBtnScayt=false; - //} + $arrRetorno[] = array('Find', 'Replace', '-', 'RemoveFormat', 'Bold', 'Italic', 'Underline', 'Strike','Subscript','Superscript', 'Maiuscula', 'Minuscula', 'TextColor', 'BGColor'); $temp = array('Cut', 'Copy', 'PasteFromWord', 'PasteText', '-', 'Undo', 'Redo', 'ShowBlocks','Symbol'); if ($bolBtnWSC) { $temp[] = 'SpellChecker'; @@ -535,9 +530,7 @@ protected function montarCssEditorConectado($numIdConjuntoEstilos) public function filtrarTags($strConteudo) { $strConteudo = preg_replace("%]*>%si", "", $strConteudo); - //$strConteudo = preg_replace("%]*>%si", "", $strConteudo); $strConteudo = preg_replace("%%si", "", $strConteudo); - //$strConteudo = preg_replace("%%si", "", $strConteudo); return str_replace(array('', ''), '', $strConteudo); } @@ -546,17 +539,13 @@ protected function gerarVersaoInicialControlado(EditorDTO $parObjEditorDTO) { try { - //$objParametrosEditorDTO = $this->obterParametros($parObjEditorDTO); - self::$arrTags = array(); self::$arrTags['versao'] = 1; $objSecaoModeloRN = new SecaoModeloRN(); $objSecaoDocumentoRN = new SecaoDocumentoRN(); $objVersaoSecaoDocumentoRN = new VersaoSecaoDocumentoRN(); - //$objRelSecaoModeloEstiloRN = new RelSecaoModeloEstiloRN(); $objDocumentoRN = new DocumentoRN(); - //$objSerieRN = new SerieRN(); $dthAtual = InfraData::getStrDataHoraAtual(); $parObjEditorDTO->setNumIdConjuntoEstilos(null); @@ -759,7 +748,6 @@ protected function gerarVersaoInicialControlado(EditorDTO $parObjEditorDTO) } else { //efetua limpeza de tags para documentos gerados com conteudo inicial - //$strConteudo = $this->limparTagsCriticas($strConteudo); $this->validarTagsCriticas($arrImagemPermitida, $strConteudo, $parObjEditorDTO->getDblIdDocumento()); $strConteudo=$this->processarLinksSei($strConteudo); @@ -910,7 +898,6 @@ protected function gerarVersaoInicialControlado(EditorDTO $parObjEditorDTO) } //cadastrar conjunto de estilos - //print_r($parObjEditorDTO); die; $this->atualizarConteudo($parObjEditorDTO); } catch (Exception $e) { @@ -1105,15 +1092,6 @@ protected function adicionarVersaoControlado(EditorDTO $parObjEditorDTO) } } -// self::$arrTags = null; -// foreach ($arrObjSecaoDocumentoDTO as $objSecaoDocumentoDTO) { -// if ($objSecaoDocumentoDTO->getStrSinDinamica()=='S') { -// $objParametrosEditorDTO = $this->obterParametros($parObjEditorDTO); -// $arrTags = $objParametrosEditorDTO->getArrTags(); -// break; -// } -// } - //bloquear registros de versão $objVersaoSecaoDocumentoDTO = new VersaoSecaoDocumentoDTO(); $objVersaoSecaoDocumentoDTO->retDblIdVersaoSecaoDocumento(); @@ -1374,9 +1352,7 @@ private function converterDocumento(EditorDTO $parObjEditorDTO) public function converteTextoEstiloCss($arrEstilosCss, $strConteudo) { - //print_r($strConteudo); $strConteudoNovo = ""; -// $posAtual = 0; $posAnterior = 0; $cntNaoEncontrados = 0; $cntEncontrados = 0; @@ -1572,9 +1548,6 @@ private function consultarHtmlIdentificacaoVersao3015(EditorDTO $parObjEditorDTO $html .= '' . $strSiglaUsuarioVersao . ''; $html .= ' em ' . $dthVersao . '.' . "\n"; - //$html = '
'; - //$html .= 'Criado por '. $strSiglaUsuarioGerador . ', versão ' . $numVersao . ' por '.$strSiglaUsuarioVersao . ' em ' . $dthVersao . '.' . "\n"; - return $html; } @@ -2306,16 +2279,6 @@ private function obterParametros(EditorDTO $parObjEditorDTO, $parStrTag){ $objUnidadeDTO->retStrTimbreOrgao(); $objUnidadeDTO->retStrSitioInternetOrgaoContato(); - //$objUnidadeDTO->retStrEnderecoContato(); - //$objUnidadeDTO->retStrComplementoContato(); - //$objUnidadeDTO->retStrNomeCidadeContato(); - //$objUnidadeDTO->retStrBairroContato(); - //$objUnidadeDTO->retStrTelefoneFixoContato(); - //$objUnidadeDTO->retStrTelefoneCelularContato(); - //$objUnidadeDTO->retStrCepContato(); - //$objUnidadeDTO->retStrSiglaUfContato(); - - $objUnidadeDTO->setNumIdUnidade(self::$arrTags['#numIdUnidadeResponsavel']); $objUnidadeRN = new UnidadeRN(); diff --git a/src/rn/EditorSEI4RN.php b/src/rn/EditorSEI4RN.php index 76f309b9a..91ccf8be1 100755 --- a/src/rn/EditorSEI4RN.php +++ b/src/rn/EditorSEI4RN.php @@ -114,7 +114,6 @@ protected function montarBasicoConectado(EditorDTO $objEditorDTO) if ($objEditorDTO->getStrSinSomenteLeitura() == 'S') { $strInicializacao .= "CKEDITOR.config.readOnly=true;\n"; } - //$ret->setStrCss($this->jsEncode($this->montarCssEditor(0))); $strInicializacao .= "\n"; $ret->setStrInicializacao($strInicializacao); @@ -517,7 +516,7 @@ protected function montarControlado(EditorDTO $parObjEditorDTO) $bolDesabilitarCorretor=false; if ($scayt != "") { $includePlugins[] = $scayt; - $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); + $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); $numTamanhoDesabilitarEditor=$objInfraParametro->getValor('SEI_TAM_MB_CORRETOR_DESABILITADO', false); if($numTamanhoDesabilitarEditor===null){ $numTamanhoDesabilitarEditor=2; @@ -812,9 +811,7 @@ protected function montarCssEditorConectado($numIdConjuntoEstilos) public function filtrarTags($strConteudo) { $strConteudo = preg_replace("%]*>%si", "", $strConteudo); - //$strConteudo = preg_replace("%]*>%si", "", $strConteudo); $strConteudo = preg_replace("%%si", "", $strConteudo); - //$strConteudo = preg_replace("%%si", "", $strConteudo); return str_replace(array('', ''), '', $strConteudo); } @@ -823,17 +820,13 @@ protected function gerarVersaoInicialControlado(EditorDTO $parObjEditorDTO) { try { - //$objParametrosEditorDTO = $this->obterParametros($parObjEditorDTO); - self::$arrTags = array(); self::$arrTags['versao'] = 1; $objSecaoModeloRN = new SecaoModeloRN(); $objSecaoDocumentoRN = new SecaoDocumentoRN(); $objVersaoSecaoDocumentoRN = new VersaoSecaoDocumentoRN(); - //$objRelSecaoModeloEstiloRN = new RelSecaoModeloEstiloRN(); $objDocumentoRN = new DocumentoRN(); - //$objSerieRN = new SerieRN(); $dthAtual = InfraData::getStrDataHoraAtual(); $parObjEditorDTO->setNumIdConjuntoEstilos(null); @@ -1029,7 +1022,6 @@ protected function gerarVersaoInicialControlado(EditorDTO $parObjEditorDTO) } else { //efetua limpeza de tags para documentos gerados com conteudo inicial - //$strConteudo = $this->limparTagsCriticas($strConteudo); $this->validarTagsCriticas($arrImagemPermitida, $strConteudo); $strConteudo = $this->processarLinksSei($strConteudo); @@ -1180,7 +1172,6 @@ protected function gerarVersaoInicialControlado(EditorDTO $parObjEditorDTO) } //cadastrar conjunto de estilos - //print_r($parObjEditorDTO); die; $this->atualizarConteudo($parObjEditorDTO); } catch (Exception $e) { @@ -1412,15 +1403,6 @@ protected function adicionarVersaoInternoControlado(EditorDTO $parObjEditorDTO) } } -// self::$arrTags = null; -// foreach ($arrObjSecaoDocumentoDTO as $objSecaoDocumentoDTO) { -// if ($objSecaoDocumentoDTO->getStrSinDinamica()=='S') { -// $objParametrosEditorDTO = $this->obterParametros($parObjEditorDTO); -// $arrTags = $objParametrosEditorDTO->getArrTags(); -// break; -// } -// } - //bloquear registros de versão $objVersaoSecaoDocumentoDTO = new VersaoSecaoDocumentoDTO(); $objVersaoSecaoDocumentoDTO->retDblIdVersaoSecaoDocumento(); @@ -1677,9 +1659,7 @@ private function converterDocumento(EditorDTO $parObjEditorDTO) public function converteTextoEstiloCss($arrEstilosCss, $strConteudo) { - //print_r($strConteudo); $strConteudoNovo = ""; -// $posAtual = 0; $posAnterior = 0; $cntNaoEncontrados = 0; $cntEncontrados = 0; @@ -1836,9 +1816,6 @@ private function consultarHtmlIdentificacaoVersao(EditorDTO $parObjEditorDTO) $html .= '' . $strSiglaUsuarioVersao . ''; $html .= ' em ' . $dthVersao . '.' . "\n"; -// $html = '
'; -// $html .= 'Criado por '. $strSiglaUsuarioGerador . ', versão ' . $numVersao . ' por '.$strSiglaUsuarioVersao . ' em ' . $dthVersao . '.' . "\n"; - return $html; } @@ -2088,8 +2065,6 @@ protected function consultarHtmlVersaoConectado($dados) if ($parObjEditorDTO->isSetStrSinProcessarLinks() && $parObjEditorDTO->getStrSinProcessarLinks()=='S') { $strHtml=$this->processarLinksSei($strHtml); -// $strHtml=preg_replace(self::$REGEXP_LINK_ASSINADO,'$4',$strHtml); - $strHtml=$this->assinarLinksSei($strHtml, $dblIdProcedimento); $strHtml=$this->assinarLinkFederacao($strHtml); @@ -2274,7 +2249,6 @@ protected function compararHtmlVersaoConectado(EditorDTO $parObjEditorDTO) if ($parObjEditorDTO->isSetStrSinProcessarLinks() && $parObjEditorDTO->getStrSinProcessarLinks()=='S') { $strHtml=$this->processarLinksSei($strHtml); -// $strHtml=preg_replace(self::$REGEXP_LINK_ASSINADO,'$4',$strHtml); $strHtml=$this->assinarLinksSei($strHtml, $dblIdProcedimento); $strHtml=$this->assinarLinkFederacao($strHtml); @@ -2800,15 +2774,6 @@ private function obterParametros(EditorDTO $parObjEditorDTO, $parStrTag, $bolTes $objUnidadeDTO->retStrTimbreOrgao(); $objUnidadeDTO->retStrSitioInternetOrgaoContato(); - //$objUnidadeDTO->retStrEnderecoContato(); - //$objUnidadeDTO->retStrComplementoContato(); - //$objUnidadeDTO->retStrNomeCidadeContato(); - //$objUnidadeDTO->retStrBairroContato(); - //$objUnidadeDTO->retStrTelefoneFixoContato(); - //$objUnidadeDTO->retStrTelefoneCelularContato(); - //$objUnidadeDTO->retStrCepContato(); - //$objUnidadeDTO->retStrSiglaUfContato(); - $objUnidadeDTO->setNumIdUnidade(self::$arrTags['#numIdUnidadeResponsavel']); @@ -3354,7 +3319,6 @@ public function processarLinksSei($str) */ private function validarLink($matches) { -// LogSEI::getInstance()->gravar('M3='.$matches[3].' - '.SessaoSEI::getInstance()->getNumIdSistema()); if($matches[3]!=SessaoSEI::getInstance()->getNumIdSistema()){ return $matches[0]; } @@ -3558,7 +3522,7 @@ protected function obterNumeroUltimaVersaoConectado(DocumentoDTO $objDocumentoDT protected function recuperarLinkAcessoExternoControlado(DocumentoDTO $parObjDocumentoDTO){ try { - $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); + $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); $objUsuarioDTO = new UsuarioDTO(); $objUsuarioDTO->retNumIdContato(); $objUsuarioDTO->setNumIdUsuario($objInfraParametro->getValor('ID_USUARIO_SEI')); diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index 7b92e24af..5f889b7c9 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -128,13 +128,13 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe SessaoSEI::getInstance()->validarAuditarPermissao('pen_procedimento_expedir', __METHOD__, $objExpedirProcedimentoDTO); $dblIdProcedimento = $objExpedirProcedimentoDTO->getDblIdProcedimento(); - $objLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $bolSinProcessamentoEmLote = $objExpedirProcedimentoDTO->getBolSinProcessamentoEmLote(); - $numIdLote = $objExpedirProcedimentoDTO->getNumIdLote(); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $bolSinProcessamentoEmBloco = $objExpedirProcedimentoDTO->getBolSinProcessamentoEmBloco(); + $numIdBloco = $objExpedirProcedimentoDTO->getNumIdBloco(); $numIdAtividade = $objExpedirProcedimentoDTO->getNumIdAtividade(); $numIdUnidade = $objExpedirProcedimentoDTO->getNumIdUnidade(); - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ $this->barraProgresso->exibir(); $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_VALIDACAO); }else{ @@ -142,9 +142,13 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $numTempoInicialRecebimento = microtime(true); $this->gravarLogDebug(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_VALIDACAO, 2); - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(); - $objPenLoteProcedimentoDTO->setDblIdProcedimento($dblIdProcedimento); - $objPenLoteProcedimentoDTO->setNumIdLote($numIdLote); + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($dblIdProcedimento); + $objPenBlocoProcessoDTO->setNumIdBlocoProcesso($numIdBloco); + $objPenBlocoProcessoDTO->retTodos(); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcessoDTO = $objPenBlocoProcessoRN->consultar($objPenBlocoProcessoDTO); } $objInfraException = new InfraException(); @@ -152,12 +156,12 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $objProcedimentoDTO = $this->consultarProcedimento($dblIdProcedimento); $objProcedimentoDTO->setArrObjDocumentoDTO($this->listarDocumentos($dblIdProcedimento)); $objProcedimentoDTO->setArrObjParticipanteDTO($this->listarInteressados($dblIdProcedimento)); - $this->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO, null, $bolSinProcessamentoEmLote); + $this->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO, null, $bolSinProcessamentoEmBloco); $this->validarParametrosExpedicao($objInfraException, $objExpedirProcedimentoDTO); //Apresentao da mensagens de validao na janela da barra de progresso if($objInfraException->contemValidacoes()){ - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ $this->barraProgresso->mover(0); $this->barraProgresso->setStrRotulo('Erro durante validação dos dados do processo.'); $objInfraException->lancarValidacoes(); @@ -169,11 +173,13 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe if(!array_key_exists($strAtributo, $arrErros)){ $arrErros[$strAtributo] = array(); } - $arrErros[$strAtributo][] = utf8_encode($objInfraValidacao->getStrDescricao()); + $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); } $this->gravarLogDebug(sprintf('Erro durante validação dos dados do processo %s.', $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(), $arrErros), 2); - $objLoteProcedimentoRN->desbloquearProcessoLote($dblIdProcedimento); + LogSEI::getInstance()->gravar("Erro(s) observado(s) na validação do trâmite de bloco externo $numIdBloco: ".InfraException::inspecionar($objInfraException)); + + $objPenBlocoProcessoRN->desbloquearProcessoBloco($dblIdProcedimento); return false; } } @@ -200,7 +206,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe //Obtém o tamanho total da barra de progreso $nrTamanhoTotalBarraProgresso = $this->obterTamanhoTotalDaBarraDeProgresso($objProcesso); - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ //Atribui o tamanho máximo da barra de progresso $this->barraProgresso->setNumMax($nrTamanhoTotalBarraProgresso); @@ -236,10 +242,10 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe try { $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Envio do metadados do processo', 'S')); - if($bolSinProcessamentoEmLote){ + if($bolSinProcessamentoEmBloco){ $this->gravarLogDebug(sprintf('Envio do metadados do processo %s', $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()), 2); - $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); - $objLoteProcedimentoRN->alterarLoteProcedimento($objPenLoteProcedimentoDTO); + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); + $objPenBlocoProcessoRN->alterar($objPenBlocoProcessoDTO); $idAtividadeExpedicao = $numIdAtividade; }else{ $idAtividadeExpedicao = $this->bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $objProcesso->idProcedimentoSEI); @@ -258,7 +264,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $objProcesso, $objTramite->ticketParaEnvioDeComponentesDigitais, $objTramite->componentesDigitaisSolicitados, - $bolSinProcessamentoEmLote, + $bolSinProcessamentoEmBloco, $numIdUnidade); @@ -271,7 +277,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe //componentes precisam ser baixados, semelhante ao que ocorre no enviarProcesso onde o barramento informa quais os componentes //que precisam ser enviados - $this->enviarComponentesDigitais($objTramite->NRE, $objTramite->IDT, $objProcesso->protocolo, $bolSinProcessamentoEmLote); + $this->enviarComponentesDigitais($objTramite->NRE, $objTramite->IDT, $objProcesso->protocolo, $bolSinProcessamentoEmBloco); //TODO: Ao enviar o processo e seus documentos, necessrio bloquear os documentos para alterao //pois eles j foram visualizados @@ -283,13 +289,13 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe //TODO: Alterar atualizao para somente apresentar ao final de todo o trâmite //$this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_CONCLUSAO); - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ $this->barraProgresso->mover($this->barraProgresso->getNumMax()); $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_CONCLUSAO); }else{ $this->gravarLogDebug('Concluído envio dos componentes do processo', 2); - $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE); - $objLoteProcedimentoRN->alterarLoteProcedimento($objPenLoteProcedimentoDTO); + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE); + $objPenBlocoProcessoRN->alterar($objPenBlocoProcessoDTO); } $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'S')); @@ -321,8 +327,8 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe } catch (\Exception $e) { $this->gravarLogDebug("Erro processando envio de processo: $e", 0, true); - if($bolSinProcessamentoEmLote){ - $objLoteProcedimentoRN->desbloquearProcessoLote($dblIdProcedimento); + if($bolSinProcessamentoEmBloco){ + $objPenBlocoProcessoRN->desbloquearProcessoBloco($dblIdProcedimento); } else { throw new InfraException('Falha de comunicação com o serviços de integração. Por favor, tente novamente mais tarde.', $e); } @@ -422,68 +428,6 @@ public function consultarMotivosUrgencia() return $this->objProcessoEletronicoRN->consultarMotivosUrgencia(); } - - private function registrarAndamentoExpedicaoProcesso($objExpedirProcedimentoDTO, $objProcesso) - { - //Processo expedido para a entidade @ENTIDADE_DESTINO@ - @REPOSITORIO_ESTRUTURA@ (@PROCESSO@, @UNIDADE@, @USUARIO@) - //TODO: Atribuir atributos necessrios para formao da mensagem do andamento - //TODO: Especificar quais andamentos sero registrados - $arrObjAtributoAndamentoDTO = array(); - - $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTO->setStrNome('REPOSITORIO_DESTINO'); - $objAtributoAndamentoDTO->setStrValor($objExpedirProcedimentoDTO->getStrRepositorioDestino()); - $objAtributoAndamentoDTO->setStrIdOrigem($objExpedirProcedimentoDTO->getNumIdRepositorioOrigem()); - $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; - - $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); - $objAtributoAndamentoDTO->setStrValor($objExpedirProcedimentoDTO->getStrUnidadeDestino()); - $objAtributoAndamentoDTO->setStrIdOrigem($objExpedirProcedimentoDTO->getNumIdUnidadeDestino()); - $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; - - $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTO->setStrNome('PROCESSO'); - $objAtributoAndamentoDTO->setStrValor($objProcesso->protocolo); - $objAtributoAndamentoDTO->setStrIdOrigem($objProcesso->idProcedimentoSEI); - $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; - - $objUnidadeDTO = new UnidadeDTO(); - $objUnidadeDTO->retStrSigla(); - $objUnidadeDTO->retStrDescricao(); - $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objUnidadeDTO = $this->objUnidadeRN->consultarRN0125($objUnidadeDTO); - - $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTO->setStrNome('UNIDADE'); - $objAtributoAndamentoDTO->setStrValor($objUnidadeDTO->getStrSigla().''.$objUnidadeDTO->getStrDescricao()); - $objAtributoAndamentoDTO->setStrIdOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; - - $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTO->setStrNome('USUARIO'); - $objAtributoAndamentoDTO->setStrValor(SessaoSEI::getInstance()->getStrSiglaUsuario() . '' . SessaoSEI::getInstance()->getStrNomeUsuario()); - $objAtributoAndamentoDTO->setStrIdOrigem(SessaoSEI::getInstance()->getNumIdUsuario()); - $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; - - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($objProcesso->idProcedimentoSEI); - $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); - $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); - $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); - - $objAtividadeRN = new AtividadeRN(); - $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); - - //Registra andamento para processos apensados que foram expedidos - if(isset($objProcesso->processoApensado) && is_array($objProcesso->processoApensado)) { - foreach($objProcesso->processoApensado as $objProcessoApensado) { - $this->registrarAndamentoExpedicaoProcesso($objExpedirProcedimentoDTO, $objProcessoApensado); - } - } - } - private function construirCabecalho(ExpedirProcedimentoDTO $objExpedirProcedimentoDTO, $strNumeroRegistro, $dblIdProcedimento = null){ if(!isset($objExpedirProcedimentoDTO)){ throw new InfraException('Parâmetro $objExpedirProcedimentoDTO não informado.'); @@ -509,23 +453,36 @@ private function construirCabecalho(ExpedirProcedimentoDTO $objExpedirProcedimen ); } + /** + * Verifica se a unidade tem mapeamento de apenas envio de componentes digitais pendentes + * + * @param $numIdRepositorioDestino + * @param $numIdUnidadeDestino + * @return bool + */ private function enviarApenasComponentesDigitaisPendentes($numIdRepositorioDestino, $numIdUnidadeDestino) { - $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); - $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidadePen(); - $objPenRestricaoEnvioComponentesDigitaisDTO->setNumIdEstrutura($numIdRepositorioDestino); - - $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN(); - $arrObjPenRestricaoEnvioComponentesDigitaisDTO = - $objPenRestricaoEnvioComponentesDigitaisRN->listar($objPenRestricaoEnvioComponentesDigitaisDTO); + $objEnvioParcialDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objEnvioParcialDTO->retNumIdEstrutura(); + $objEnvioParcialDTO->retNumIdUnidadePen(); + $objEnvioParcialDTO->setNumIdEstrutura($numIdRepositorioDestino); + + $objEnvioParcialRN = new PenRestricaoEnvioComponentesDigitaisRN(); + $arrObjEnvioParcialDTO = $objEnvioParcialRN->listar($objEnvioParcialDTO); + + if (!is_null($arrObjEnvioParcialDTO) && count($arrObjEnvioParcialDTO) > 0) { + if (count($arrObjEnvioParcialDTO) > 1) { + $arrIdUnidadesParaEnvioPendentes = array(); + foreach ($arrObjEnvioParcialDTO as $value) { + $arrIdUnidadesParaEnvioPendentes[] = $value->getNumIdUnidadePen(); + } - if (!is_null($arrObjPenRestricaoEnvioComponentesDigitaisDTO) && count($arrObjPenRestricaoEnvioComponentesDigitaisDTO) > 0) { - $arrIdUnidadesParaEnvioPendentes = array(); - foreach ($arrObjPenRestricaoEnvioComponentesDigitaisDTO as $value) { - $arrIdUnidadesParaEnvioPendentes[] = $value->getNumIdUnidadePen(); + return in_array($numIdUnidadeDestino, $arrIdUnidadesParaEnvioPendentes); + } elseif (!empty($arrObjEnvioParcialDTO[0]->getNumIdUnidadePen())) { + return $arrObjEnvioParcialDTO[0]->getNumIdUnidadePen() == $numIdUnidadeDestino; } - return in_array($numIdUnidadeDestino, $arrIdUnidadesParaEnvioPendentes); + return true; } return false; @@ -542,10 +499,10 @@ private function construirProcesso($dblIdProcedimento, $arrIdProcessoApensado = $objProcesso = new stdClass(); $objProcesso->staTipoProtocolo = ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO; - $objProcesso->protocolo = utf8_encode($objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()); + $objProcesso->protocolo = mb_convert_encoding($objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(), 'UTF-8', 'ISO-8859-1'); $objProcesso->nivelDeSigilo = $this->obterNivelSigiloPEN($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo()); - $objProcesso->processoDeNegocio = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrNomeTipoProcedimento(), 100)); - $objProcesso->descricao = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrDescricaoProtocolo(), 100)); + $objProcesso->processoDeNegocio = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrNomeTipoProcedimento(), 100), 'UTF-8', 'ISO-8859-1'); + $objProcesso->descricao = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrDescricaoProtocolo(), 100), 'UTF-8', 'ISO-8859-1'); $objProcesso->dataHoraDeProducao = $this->objProcessoEletronicoRN->converterDataWebService($objProcedimentoDTO->getDtaGeracaoProtocolo()); if($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO){ $objProcesso->hipoteseLegal = new stdClass(); @@ -584,9 +541,9 @@ private function atribuirDadosHistorico($objProcesso, $dblIdProcedimento) $objOperacao = new stdClass(); $objOperacao->dataHoraOperacao = $this->objProcessoEletronicoRN->converterDataWebService($objAtividadeDTO->getDthAbertura()); - $objOperacao->unidadeOperacao = $objAtividadeDTO->getStrDescricaoUnidade()?utf8_encode($objAtividadeDTO->getStrDescricaoUnidade()):"NA"; - $objOperacao->operacao = $objAtividadeDTO->getStrNomeTarefa()?$this->objProcessoEletronicoRN->reduzirCampoTexto(strip_tags(utf8_encode($objAtividadeDTO->getStrNomeTarefa())), 1000):"NA"; - $objOperacao->usuario = $objAtividadeDTO->getStrNomeUsuarioOrigem()?utf8_encode($objAtividadeDTO->getStrNomeUsuarioOrigem()):"NA"; + $objOperacao->unidadeOperacao = $objAtividadeDTO->getStrDescricaoUnidade()?mb_convert_encoding($objAtividadeDTO->getStrDescricaoUnidade(), 'UTF-8', 'ISO-8859-1'):"NA"; + $objOperacao->operacao = $objAtividadeDTO->getStrNomeTarefa()?$this->objProcessoEletronicoRN->reduzirCampoTexto(strip_tags(mb_convert_encoding($objAtividadeDTO->getStrNomeTarefa(), 'UTF-8', 'ISO-8859-1')), 1000):"NA"; + $objOperacao->usuario = $objAtividadeDTO->getStrNomeUsuarioOrigem()?mb_convert_encoding($objAtividadeDTO->getStrNomeUsuarioOrigem(), 'UTF-8', 'ISO-8859-1'):"NA"; $arrObjOperacao[] = $objOperacao; } @@ -834,7 +791,7 @@ private function atribuirProdutorProcesso($objProcesso, $dblIdProcedimento, $num $objUsuarioProdutor = $this->consultarUsuario($dblIdProcedimento); if(isset($objUsuarioProdutor)) { //Dados do produtor do processo - $objProcesso->produtor->nome = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objUsuarioProdutor->getStrNome(), 150)); + $objProcesso->produtor->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objUsuarioProdutor->getStrNome(), 150), 'UTF-8', 'ISO-8859-1'); //TODO: Obter tipo de pessoa física dos contatos do SEI $objProcesso->produtor->numeroDeIdentificacao = $objUsuarioProdutor->getDblCpfContato(); $objProcesso->produtor->tipo = self::STA_TIPO_PESSOA_FISICA; @@ -844,7 +801,7 @@ private function atribuirProdutorProcesso($objProcesso, $dblIdProcedimento, $num $objUnidadeGeradora = $this->consultarUnidade($dblIdProcedimento); if(isset($objUnidadeGeradora)){ $objProcesso->produtor->unidade = new stdClass(); - $objProcesso->produtor->unidade->nome = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objUnidadeGeradora->getStrDescricao(), 150)); + $objProcesso->produtor->unidade->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objUnidadeGeradora->getStrDescricao(), 150), 'UTF-8', 'ISO-8859-1'); $objProcesso->produtor->unidade->tipo = self::STA_TIPO_PESSOA_ORGAOPUBLICO; //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } @@ -863,7 +820,7 @@ private function atribuirDadosInteressados($objProcesso, $dblIdProcedimento) foreach ($arrParticipantesDTO as $participanteDTO) { $interessado = new stdClass(); - $interessado->nome = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($participanteDTO->getStrNomeContato(), 150)); + $interessado->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($participanteDTO->getStrNomeContato(), 150), 'UTF-8', 'ISO-8859-1'); $objProcesso->interessado[] = $interessado; } } @@ -905,7 +862,7 @@ private function atribuirDocumentos($objProcesso, $dblIdProcedimento, $parObjMet $strDescricaoDocumento = ($boolDocumentoRecebidoComNumero) ? $documentoDTO->getStrNumero() : "***"; $documento->ordem = $ordem + 1; - $documento->descricao = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($strDescricaoDocumento, 100)); + $documento->descricao = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strDescricaoDocumento, 100), 'UTF-8', 'ISO-8859-1'); $documento->retirado = ($documentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_DOCUMENTO_CANCELADO) ? true : false; $documento->nivelDeSigilo = $this->obterNivelSigiloPEN($documentoDTO->getStrStaNivelAcessoLocalProtocolo()); @@ -930,7 +887,7 @@ private function atribuirDocumentos($objProcesso, $dblIdProcedimento, $parObjMet $documento->produtor = new stdClass(); $usuarioDTO = $this->consultarUsuario($documentoDTO->getNumIdUsuarioGeradorProtocolo()); if(isset($usuarioDTO)) { - $documento->produtor->nome = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($usuarioDTO->getStrNome(), 150)); + $documento->produtor->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($usuarioDTO->getStrNome(), 150), 'UTF-8', 'ISO-8859-1'); $documento->produtor->numeroDeIdentificacao = $usuarioDTO->getDblCpfContato(); //TODO: Obter tipo de pessoa fsica dos contextos/contatos do SEI $documento->produtor->tipo = self::STA_TIPO_PESSOA_FISICA; @@ -940,7 +897,7 @@ private function atribuirDocumentos($objProcesso, $dblIdProcedimento, $parObjMet $unidadeDTO = $this->consultarUnidade($documentoDTO->getNumIdUnidadeResponsavel()); if(isset($unidadeDTO)) { $documento->produtor->unidade = new stdClass(); - $documento->produtor->unidade->nome = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($unidadeDTO->getStrDescricao(), 150)); + $documento->produtor->unidade->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($unidadeDTO->getStrDescricao(), 150), 'UTF-8', 'ISO-8859-1'); $documento->produtor->unidade->tipo = self::STA_TIPO_PESSOA_ORGAOPUBLICO; //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } @@ -969,7 +926,7 @@ private function atribuirDocumentos($objProcesso, $dblIdProcedimento, $parObjMet $documento->componenteDigital = new stdClass(); $documento->componenteDigital->ordem = 1; - $documento->componenteDigital->nome = utf8_encode($componenteDigital->getStrNome()); + $documento->componenteDigital->nome = mb_convert_encoding($componenteDigital->getStrNome(), 'UTF-8', 'ISO-8859-1'); $documento->componenteDigital->hash = new SoapVar("{$componenteDigital->getStrHashConteudo()}", XSD_ANYXML); $documento->componenteDigital->tamanhoEmBytes = $componenteDigital->getNumTamanho(); $documento->componenteDigital->mimeType = $componenteDigital->getStrMimeType(); @@ -1047,12 +1004,12 @@ private function atribuirEspecieDocumental($parMetaDocumento, $parDocumentoDTO, $objComponenteDigitalDTO->setNumMaxRegistrosRetorno(1); $objComponenteDigitalDTO->setOrd('IdTramite', InfraDTO::$TIPO_ORDENACAO_DESC); - $objComponenteDigitalBD = new ComponenteDigitalBD(BancoSEI::getInstance()); + $objComponenteDigitalBD = new ComponenteDigitalBD($this->inicializarObjInfraIBanco()); $objComponenteDigitalDTO = $objComponenteDigitalBD->consultar($objComponenteDigitalDTO); if($objComponenteDigitalDTO != null){ $numCodigoEspecie = $objComponenteDigitalDTO->getNumCodigoEspecie(); - $strNomeEspecieProdutor = utf8_encode($objComponenteDigitalDTO->getStrNomeEspecieProdutor()); + $strNomeEspecieProdutor = mb_convert_encoding($objComponenteDigitalDTO->getStrNomeEspecieProdutor(), 'UTF-8', 'ISO-8859-1'); } //Caso a informação sobre mapeamento esteja nulo, necessário buscar tal informação no Barramento @@ -1081,7 +1038,7 @@ private function atribuirEspecieDocumental($parMetaDocumento, $parDocumentoDTO, //Atribui espécie documental definida pelo produtor do documento e registrado no PEN, caso exista if(count($arrMetaDocumentosAnteriorIndexado) > 0 && array_key_exists($parMetaDocumento->ordem, $arrMetaDocumentosAnteriorIndexado)){ $numCodigoEspecie = $arrMetaDocumentosAnteriorIndexado[$parMetaDocumento->ordem]->especie->codigo; - $strNomeEspecieProdutor = utf8_encode($arrMetaDocumentosAnteriorIndexado[$parMetaDocumento->ordem]->especie->nomeNoProdutor); + $strNomeEspecieProdutor = mb_convert_encoding($arrMetaDocumentosAnteriorIndexado[$parMetaDocumento->ordem]->especie->nomeNoProdutor, 'UTF-8', 'ISO-8859-1'); } } } @@ -1089,7 +1046,7 @@ private function atribuirEspecieDocumental($parMetaDocumento, $parDocumentoDTO, //Aplica o mapeamento de espécies definida pelo administrador para os novos documentos if($numCodigoEspecie == null) { $numCodigoEspecie = $this->obterEspecieMapeada($parDocumentoDTO->getNumIdSerie()); - $strNomeEspecieProdutor = utf8_encode($parDocumentoDTO->getStrNomeSerie()); + $strNomeEspecieProdutor = mb_convert_encoding($parDocumentoDTO->getStrNomeSerie(), 'UTF-8', 'ISO-8859-1'); } $parMetaDocumento->especie = new stdClass(); @@ -1175,7 +1132,7 @@ private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDoc //TODO: Revisar tal implementação para atender a gerao de hash de arquivos grandes $objComponenteDigital = new stdClass(); $objComponenteDigital->ordem = $numOrdemComponente; - $objComponenteDigital->nome = utf8_encode($objDadosArquivos["NOME"]); + $objComponenteDigital->nome = mb_convert_encoding($objDadosArquivos["NOME"], 'UTF-8', 'ISO-8859-1'); $objComponenteDigital->hash = new SoapVar("{$hashDoComponenteDigital}", XSD_ANYXML); $objComponenteDigital->tamanhoEmBytes = $objDadosArquivos['TAMANHO']; @@ -1260,8 +1217,8 @@ public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objComponenteD $objAtividade = $objAtividadeRN->consultarRN0033($objAtividadeDTO); $objAssinaturaDigital = new stdClass(); - $objAssinaturaDigital->razao = utf8_encode($dataTarjas[$keyOrder]); - $objAssinaturaDigital->observacao = utf8_encode($dataTarjas[count($dataTarjas) - 1]); + $objAssinaturaDigital->razao = mb_convert_encoding($dataTarjas[$keyOrder], 'UTF-8', 'ISO-8859-1'); + $objAssinaturaDigital->observacao = mb_convert_encoding($dataTarjas[count($dataTarjas) - 1], 'UTF-8', 'ISO-8859-1'); $objAssinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($objAtividade->getDthAbertura()); if($assinatura->getStrStaFormaAutenticacao() == AssinaturaRN::$TA_CERTIFICADO_DIGITAL){ @@ -1418,7 +1375,6 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs $objInformacaoArquivo['TAMANHO'] = strlen($strConteudoAssinatura); $objInformacaoArquivo['MIME_TYPE'] = 'text/html'; $objInformacaoArquivo['ID_ANEXO'] = null; - // $hashDoComponenteDigital = hash(self::ALGORITMO_HASH_DOCUMENTO, $objInformacaoArquivo['CONTEUDO'], true); $objInformacaoArquivo['HASH_CONTEUDO'] = $hashDoComponenteDigitalAnterior ?: $hashDoComponenteDigital; } else if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO) { @@ -1509,8 +1465,6 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs $objInformacaoArquivo['MIME_TYPE'] = 'text/html'; $objInformacaoArquivo['ID_ANEXO'] = null; $objInformacaoArquivo['CONTEUDO'] = $strConteudoAssinatura; - // $hashDoComponenteDigital = hash(self::ALGORITMO_HASH_DOCUMENTO, $objInformacaoArquivo['CONTEUDO'], true); - // $objInformacaoArquivo['HASH_CONTEUDO'] = base64_encode($hashDoComponenteDigital); $objInformacaoArquivo['HASH_CONTEUDO'] = $hashDoComponenteDigitalAnterior ?: $hashDoComponenteDigital; } else { $strStaDocumento = $objDocumentoDTO->getStrStaDocumento(); @@ -1737,27 +1691,27 @@ private function atribuirNumeracaoDocumento($objDocumento, DocumentoDTO $parObjD if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_UNIDADE) { $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->numero = utf8_encode($parObjDocumentoDTO->getStrNumero()); - $objDocumento->identificacao->siglaDaUnidadeProdutora = utf8_encode($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo()); - $objDocumento->identificacao->complemento = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100)); + $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo(), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100), 'UTF-8', 'ISO-8859-1'); }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ORGAO){ $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->numero = utf8_encode($parObjDocumentoDTO->getStrNumero()); - $objDocumento->identificacao->siglaDaUnidadeProdutora = utf8_encode($objOrgaoDTO->getStrSigla()); - $objDocumento->identificacao->complemento = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100)); + $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($objOrgaoDTO->getStrSigla(), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100), 'UTF-8', 'ISO-8859-1'); }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_UNIDADE){ $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->siglaDaUnidadeProdutora = utf8_encode($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo()); - $objDocumento->identificacao->complemento = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100)); - $objDocumento->identificacao->numero = utf8_encode($parObjDocumentoDTO->getStrNumero()); + $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo(), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); $objDocumento->identificacao->ano = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(), 6, 4); }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_ORGAO){ $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->numero = utf8_encode($parObjDocumentoDTO->getStrNumero()); - $objDocumento->identificacao->siglaDaUnidadeProdutora = utf8_encode($objOrgaoDTO->getStrSigla()); - $objDocumento->identificacao->complemento = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100)); + $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($objOrgaoDTO->getStrSigla(), 'UTF-8', 'ISO-8859-1'); + $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100), 'UTF-8', 'ISO-8859-1'); $objDocumento->identificacao->ano = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(), 6, 4); } } @@ -2011,16 +1965,9 @@ private function consultarDocumento($dblIdDocumento) $documentoDTO = new DocumentoDTO(); $documentoDTO->setDblIdDocumento($dblIdDocumento); $documentoDTO->retStrDescricaoUnidadeGeradoraProtocolo(); - //$documentoDTO->retNumIdOrgaoUnidadeGeradoraProtocolo(); - //$documentoDTO->retStrSiglaUnidadeGeradoraProtocolo(); - //$documentoDTO->retStrStaNivelAcessoLocalProtocolo(); $documentoDTO->retStrProtocoloDocumentoFormatado(); - //$documentoDTO->retNumIdUsuarioGeradorProtocolo(); $documentoDTO->retStrStaProtocoloProtocolo(); - //$documentoDTO->retNumIdUnidadeResponsavel(); $documentoDTO->retStrDescricaoProtocolo(); - //$documentoDTO->retDtaGeracaoProtocolo(); - //$documentoDTO->retDblIdProcedimento(); $documentoDTO->retDblIdDocumento(); $documentoDTO->retStrNomeSerie(); $documentoDTO->retNumIdSerie(); @@ -2029,12 +1976,11 @@ private function consultarDocumento($dblIdDocumento) $documentoDTO->retStrStaEstadoProtocolo(); $documentoDTO->retNumIdHipoteseLegalProtocolo(); $documentoDTO->retStrStaProtocoloProtocolo(); - //$documentoDTO->retStrNumero(); return $this->objDocumentoRN->consultarRN0005($documentoDTO); } - private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $strProtocolo, $bolSinProcessamentoEmLote = false) + private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $strProtocolo, $bolSinProcessamentoEmBloco = false) { if (!isset($strNumeroRegistro)) { throw new InfraException('Parâmetro $strNumeroRegistro não informado.'); @@ -2077,7 +2023,7 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s $this->corrigirNumeroOrdemComponentes($arrComponentesDigitaisDTO, $arrComponentesDigitaisDTO[0]->getStrProtocoloDocumentoFormatado()); foreach ($arrComponentesDigitaisDTO as $objComponenteDigitalDTO) { - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ $this->barraProgresso->setStrRotulo(sprintf(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_DOCUMENTO, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado())); }else{ $this->gravarLogDebug(sprintf(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_DOCUMENTO, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 2); @@ -2091,12 +2037,14 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s $dadosDoComponenteDigital->hashDoComponenteDigital = $objComponenteDigitalDTO->getStrHashConteudo(); $arrObjDocumentoDTOAssociacao = $this->listarDocumentosRelacionados($objComponenteDigitalDTO->getDblIdProcedimento(), $objComponenteDigitalDTO->getDblIdDocumento()); - $arrObjDocumentoDTOAssociacao = array_filter($arrObjDocumentoDTOAssociacao, function($item){ - return $item["StaAssociacao"] == RelProtocoloProtocoloRN::$TA_DOCUMENTO_ASSOCIADO; - }); - $arrObjDocumentoDTOAssociacao = array_values($arrObjDocumentoDTOAssociacao); - $objDocumentoDTO = count($arrObjDocumentoDTOAssociacao) == 1 ? $arrObjDocumentoDTOAssociacao[0]['Documento'] : null; - $strStaAssociacao = count($arrObjDocumentoDTOAssociacao) == 1 ? $arrObjDocumentoDTOAssociacao[0]['StaAssociacao'] : null; + $objDocumentoDTO = null; + $strStaAssociacao = null; + foreach ($arrObjDocumentoDTOAssociacao as $objDocumentoDTOAssociacao) { + $strStaAssociacao = $objDocumentoDTOAssociacao['StaAssociacao']; + if($strStaAssociacao != RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO){ + $objDocumentoDTO = $objDocumentoDTOAssociacao['Documento']; + } + } $strNomeDocumento = $this->consultarNomeDocumentoPEN($objDocumentoDTO); //Verifica se existe o objeto anexoDTO para recuperar informações do arquivo @@ -2131,7 +2079,7 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s //Método que irá particionar o arquivo em partes para realizar o envio $this->particionarComponenteDigitalParaEnvio( $strCaminhoAnexo, $dadosDoComponenteDigital, $nrTamanhoArquivoMb, $nrTamanhoMegasMaximo, - $nrTamanhoBytesMaximo, $objComponenteDigitalDTO, $numIdTramite, $bolSinProcessamentoEmLote + $nrTamanhoBytesMaximo, $objComponenteDigitalDTO, $numIdTramite, $bolSinProcessamentoEmBloco ); //Finalizar o envio das partes do componente digital @@ -2162,7 +2110,7 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; $this->objProcessoEletronicoRN->enviarComponenteDigital($parametros); - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ $this->barraProgresso->mover($this->contadorDaBarraDeProgresso); $this->contadorDaBarraDeProgresso++; } @@ -2241,7 +2189,6 @@ protected function salvarAnexoImutavelControlado($dados){ $objAnexoDTO=$objAnexoRN->cadastrarRN0172($objAnexoDTO); $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); - // $objProcessoEletronicoDTO->setDblIdProcedimento($objDocumentoDTO->getDblIdProcedimento()); $objProcessoEletronicoDTO->setDblIdProcedimento($idProcedimentoPrincipal); $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); @@ -2335,31 +2282,31 @@ private function validarParametrosExpedicao(InfraException $objInfraException, E { if(!isset($objExpedirProcedimentoDTO)){ $objInfraException->adicionarValidacao('Parâmetro $objExpedirProcedimentoDTO não informado.'); - } + } //TODO: Validar se repositrio de origem foi informado if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdRepositorioOrigem())){ - $objInfraException->adicionarValidacao('Identificação do repositório de estruturas da unidade atual não informado.'); + $objInfraException->adicionarValidacao('Identificação do repositório de estruturas da unidade atual não informado. ID do processo: '.$objExpedirProcedimentoDTO->getDblIdProcedimento().". "); } //TODO: Validar se unidade de origem foi informado if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdUnidadeOrigem())){ - $objInfraException->adicionarValidacao('Identificação da unidade atual no repositório de estruturas organizacionais não informado.'); + $objInfraException->adicionarValidacao('Identificação da unidade atual no repositório de estruturas organizacionais não informado. ID do processo: '.$objExpedirProcedimentoDTO->getDblIdProcedimento().". "); } //TODO: Validar se repositrio foi devidamente informado if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdRepositorioDestino())){ - $objInfraException->adicionarValidacao('Repositório de estruturas organizacionais não informado.'); + $objInfraException->adicionarValidacao('Repositório de estruturas organizacionais não informado. ID do processo: '.$objExpedirProcedimentoDTO->getDblIdProcedimento().". "); } //TODO: Validar se unidade foi devidamente informada if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdUnidadeDestino())){ - $objInfraException->adicionarValidacao('Unidade de destino não informado.'); + $objInfraException->adicionarValidacao('Unidade de destino não informado. ID do processo: '.$objExpedirProcedimentoDTO->getDblIdProcedimento().". "); } //TODO: Validar se motivo de urgncia foi devidamente informado, caso expedio urgente if ($objExpedirProcedimentoDTO->getBolSinUrgente() && InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdMotivoUrgencia())){ - $objInfraException->adicionarValidacao('Motivo de urgência não informado.'); + $objInfraException->adicionarValidacao('Motivo de urgência não informado. ID do processo: '.$objExpedirProcedimentoDTO->getDblIdProcedimento().". "); } } @@ -2448,6 +2395,43 @@ private function validarProcessoAbertoUnidade(InfraException $objInfraException, } } + public function validarProcessoIncluidoBlocoEmAndamento(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao) + { + $concluido = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE + ); + + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrPenBlocoProcessoDTO = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + + foreach ($arrPenBlocoProcessoDTO as $objPenBlocoProcessoDTO) { + if (!in_array($objPenBlocoProcessoDTO->getNumIdAndamento(), $concluido)) { + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($objPenBlocoProcessoDTO->getNumIdBloco()); + $objTramiteEmBlocoDTO->retNumOrdem(); + $objTramiteEmBlocoDTO->retStrSiglaUnidade(); + $objTramiteEmBlocoDTO->retStrDescricao(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoDTO = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + + $mensagem = "Prezado(a) usuário(a), o processo {$objPenBlocoProcessoDTO->getStrProtocoloFormatadoProtocolo()} encontra-se inserido no bloco {$objTramiteEmBlocoDTO->getNumOrdem()} - " + . " {$objTramiteEmBlocoDTO->getStrDescricao()} da unidade {$objTramiteEmBlocoDTO->getStrSiglaUnidade()}." + . " Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; + $objInfraException->adicionarValidacao($mensagem, $strAtributoValidacao); + } + } + } + private function validarNivelAcessoProcesso(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao) { if ($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_SIGILOSO) { @@ -2495,7 +2479,6 @@ private function validarAssinaturas(InfraException $objInfraException, $objProce $objDocumentoDTO = new DocumentoDTO(); $objDocumentoDTO->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento()); - // $objDocumentoDTO->setStrStaEditor(array(EditorRN::$TE_EDOC, EditorRN::$TE_INTERNO), InfraDTO::$OPER_IN); $objDocumentoDTO->retDblIdDocumento(); $objDocumentoDTO->retStrStaDocumento(); $objDocumentoDTO->retStrStaEstadoProtocolo(); @@ -2570,7 +2553,7 @@ protected function validarPossibilidadeBloqueioControlado($objProcedimentoDTO){ * @param ProcedimentoDTO $objProcedimentoDTO Informações sobre o procedimento a ser expedido * @param string $strAtributoValidacao índice para o InfraException separar os processos */ - public function validarPreCondicoesExpedirProcedimento(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao = null, $bolSinProcessamentoEmLote = false) + public function validarPreCondicoesExpedirProcedimento(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao = null, $bolSinProcessamentoEmBloco = false) { $this->validarDadosProcedimento($objInfraException, $objProcedimentoDTO, $strAtributoValidacao); $this->validarDadosDocumentos($objInfraException, $objProcedimentoDTO->getArrObjDocumentoDTO(), $strAtributoValidacao); @@ -2581,7 +2564,7 @@ public function validarPreCondicoesExpedirProcedimento(InfraException $objInfraE $this->validarAssinaturas($objInfraException, $objProcedimentoDTO, $strAtributoValidacao); try{ - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ $this->validarPossibilidadeBloqueio($objProcedimentoDTO); } }catch(Exception $e){ @@ -2593,6 +2576,76 @@ public function validarPreCondicoesExpedirProcedimento(InfraException $objInfraE } } + public function verificarProcessosAbertoNaUnidade(InfraException $objInfraException, array $arrProtocolosOrigem) + { + $naoAbertoUnidadeAtual = false; + foreach ($arrProtocolosOrigem as $dblIdProcedimento) { + $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); + $objProcedimentoDTO = $objExpedirProcedimentosRN->consultarProcedimento($dblIdProcedimento); + + $strProtocoloFormatado = $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(); + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDistinct(true); + $objAtividadeDTO->retStrSiglaUnidade(); + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objAtividadeDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); + $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); + $objAtividadeDTO->setDthConclusao(null); + + $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); + if(count($arrObjAtividadeDTO) == 0) { + if ($naoAbertoUnidadeAtual == false) { + $naoAbertoUnidadeAtual = true; + $objInfraException->adicionarValidacao("Verifique o(s) seguinte(s) impedimento(s) para a realização do trâmite:"); + } + $objInfraException->adicionarValidacao("O processo {$strProtocoloFormatado} não possui andamento aberto nesta unidade;"); + } + } + + if ($naoAbertoUnidadeAtual == true) { + $objInfraException->adicionarValidacao("É necessário excluir o(s) processo(s) citado(s) do bloco."); + } + } + + public function validarProcessoAbertoEmOutraUnidade($objInfraException, $arrProtocolosOrigem) + { + foreach ($arrProtocolosOrigem as $dblIdProcedimento) { + + $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); + $objProcedimentoDTO = $objExpedirProcedimentosRN->consultarProcedimento($dblIdProcedimento); + + $strProtocoloFormatado = $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(); + + if (empty($objProcedimentoDTO)) { + throw new InfraException('Procedimento ' . $strProtocoloFormatado . ' não foi localizado', 'Desconhecido'); + } + + $objProcedimentoDTO->setArrObjDocumentoDTO($objExpedirProcedimentosRN->listarDocumentos($dblIdProcedimento)); + $objProcedimentoDTO->setArrObjParticipanteDTO($objExpedirProcedimentosRN->listarInteressados($dblIdProcedimento)); + $objExpedirProcedimentosRN->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO); + } + } + + public function trazerTextoSeContemValidacoes($objInfraException) + { + if ($objInfraException->contemValidacoes()) { + $arrErros = array(); + $message = ""; + foreach ($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { + $strAtributo = $objInfraValidacao->getStrAtributo(); + if (!array_key_exists($strAtributo, $arrErros)) { + $arrErros[$strAtributo] = array(); + } + $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); + $message .= $objInfraValidacao->getStrDescricao() . "\n"; + } + + return $message; + } + + return null; + } private function obterNivelSigiloPEN($strNivelSigilo) { @@ -2653,7 +2706,6 @@ public function listarProcessosApensados($dblIdProcedimentoAtual, $idUnidadeAtua $arrResultado = array(); $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); - //$arrObjAtividadeDTOIndexado = $arrObjAtividadeDTO; $arrObjAtividadeDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjAtividadeDTO, 'ProtocoloFormatadoProtocolo', true); foreach ($arrObjAtividadeDTOIndexado as $key => $value) { @@ -2678,7 +2730,6 @@ public function listarProcessosAbertos($dblIdProcedimentoAtual, $idUnidadeAtual) $objAtividadeDTO->setDistinct(true); $objAtividadeDTO->retDblIdProtocolo(); $objAtividadeDTO->retNumIdUnidade(); - //$objAtividadeDTO->setNumIdUnidade($idUnidadeAtual); $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimentoAtual, InfraDTO::$OPER_DIFERENTE); $objAtividadeDTO->setDthConclusao(null); $objAtividadeDTO->setStrStaEstadoProtocolo(ProtocoloRN::$TE_NORMAL); @@ -2718,7 +2769,6 @@ public function listarProcessosApensadosAvancado(AtividadeDTO $objAtividadeDTO, $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimentoAtual, InfraDTO::$OPER_DIFERENTE); $objAtividadeDTO->setDthConclusao(null); $objAtividadeDTO->setStrStaEstadoProtocolo(ProtocoloRN::$TE_NORMAL); - ///$objAtividadeDTO->setStrDescricaoProtocolo('%'.$strDescricaoPesquisa.'%',InfraDTO::$OPER_LIKE); $arrPalavrasPesquisa = explode(' ', $strPalavrasPesquisa); for($i=0; $ienviarParteDoComponenteDigital($inicio, $fim, $parteDoArquivo, $dadosDoComponenteDigital); - if(!$bolSinProcessamentoEmLote){ + if(!$bolSinProcessamentoEmBloco){ $this->barraProgresso->mover($this->contadorDaBarraDeProgresso); } $this->contadorDaBarraDeProgresso++; @@ -2895,7 +2945,7 @@ protected function receberReciboDeEnvioControlado($parNumIdTramite) try { $objReciboTramiteEnviadoDTO = new ReciboTramiteEnviadoDTO(); $objReciboTramiteEnviadoDTO->setNumIdTramite($parNumIdTramite); - $objGenericoBD = new GenericoBD(BancoSEI::getInstance()); + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); if ($objGenericoBD->contar($objReciboTramiteEnviadoDTO) > 0) { return false; @@ -3002,35 +3052,32 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol $dblIdProcedimento = $objDtoProtocolo->getDblIdProtocolo(); - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(); - $objPenLoteProcedimentoDTO->retTodos(); - $objPenLoteProcedimentoDTO->setDblIdProcedimento($dblIdProcedimento); - $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); - - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $objPenLoteProcedimentoDTO = $objPenLoteProcedimentoRN->consultarLoteProcedimento($objPenLoteProcedimentoDTO); - $cancelarLote=false; - - if(!is_null($objPenLoteProcedimentoDTO)){ - $cancelarLote=true; - } - - if(!$cancelarLote){ - - $objTramiteDTO = new TramiteDTO(); - $objTramiteDTO->setNumIdProcedimento($objDtoProtocolo->getDblIdProtocolo()); - $objTramiteDTO->setStrStaTipoTramite(ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO); - $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteDTO->setNumMaxRegistrosRetorno(1); - $objTramiteDTO->retNumIdTramite(); - - $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); - $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); - - if(!isset($objTramiteDTO)){ - throw new InfraException("Trâmite não encontrado para o processo {$objDtoProtocolo->getDblIdProtocolo()}."); - } - + // Atualizar aqui PenBlocoProcessoDTO PenBlocoProcessoRN + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->retTodos(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($dblIdProcedimento); + $objPenBlocoProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objPenBlocoProcessoDTO->setNumIdAndamento(array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE + ), InfraDTO::$OPER_IN); + $objPenBlocoProcessoDTO->setNumMaxRegistrosRetorno(1); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcessoDTO = $objPenBlocoProcessoRN->consultar($objPenBlocoProcessoDTO); + + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdProcedimento($objDtoProtocolo->getDblIdProtocolo()); + $objTramiteDTO->setStrStaTipoTramite(ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO); + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteDTO->setNumMaxRegistrosRetorno(1); + $objTramiteDTO->retNumIdTramite(); + + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); + + if(isset($objTramiteDTO)) { $tramites = $this->objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, $objPenUnidadeDTO->getNumIdUnidadeRH(), null, null, $numIdRespositorio); $tramite = $tramites ? $tramites[0] : null; @@ -3075,7 +3122,8 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol break; } - //Somente solicita cancelamento ao PEN se processo ainda não estiver cancelado + // Solicitação de cancelamento de tramite de processo ao TramitaGOV.br + // Somente solicita cancelamento ao PEN se processo ainda não estiver cancelado if(!in_array($numSituacaoAtual, array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO))) { $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT); } @@ -3084,18 +3132,17 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol //Desbloqueia o processo ProcessoEletronicoRN::desbloquearProcesso($dblIdProcedimento); - if(is_object($objPenLoteProcedimentoDTO)){ - - $objPenExpedirLoteDTO = new PenLoteProcedimentoDTO(); - $objPenExpedirLoteDTO->setNumIdLote($objPenLoteProcedimentoDTO->getNumIdLote()); - $objPenExpedirLoteDTO->setDblIdProcedimento($dblIdProcedimento); - $objPenExpedirLoteDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO); + if(is_object($objPenBlocoProcessoDTO)){ + // Atualizar aqui PenBlocoProcessoDTO PenBlocoProcessoRN + $objPenBlocoProcessoDTO->setDblIdProtocolo($dblIdProcedimento); + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO); - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $objPenLoteProcedimentoRN->alterarLoteProcedimento($objPenExpedirLoteDTO); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcessoRN->alterar($objPenBlocoProcessoDTO); } - if(!$cancelarLote){ + // Cancelmento de tramite do processo no MOD_PEN + if(isset($objTramiteDTO)){ $objDTOFiltro = new TramiteDTO(); $objDTOFiltro->setNumIdTramite($tramite->IDT); $objDTOFiltro->setNumMaxRegistrosRetorno(1); diff --git a/src/rn/PENAgendamentoRN.php b/src/rn/PENAgendamentoRN.php index 408fe4a0c..634c16473 100755 --- a/src/rn/PENAgendamentoRN.php +++ b/src/rn/PENAgendamentoRN.php @@ -19,13 +19,23 @@ protected function atualizarHipotesesLegaisControlado() $objBD = new PenHipoteseLegalBD($this->inicializarObjInfraIBanco()); $processoEletronicoRN = new ProcessoEletronicoRN(); $hipotesesPen = $processoEletronicoRN->consultarHipotesesLegais(); + $hipotesesPenDesativadas = $processoEletronicoRN->consultarHipotesesLegais(false); - if(empty($hipotesesPen)){ + $hipoteses = array(); + if (!empty($hipotesesPen) && !empty($hipotesesPen->hipotesesLegais) && !empty($hipotesesPen->hipotesesLegais->hipotese)) { + $hipoteses = $hipotesesPen->hipotesesLegais->hipotese; + } + + if (!empty($hipotesesPenDesativadas) && !empty($hipotesesPenDesativadas->hipotesesLegais) && !empty($hipotesesPenDesativadas->hipotesesLegais->hipotese)) { + $hipoteses = array_merge($hipoteses, $hipotesesPenDesativadas->hipotesesLegais->hipotese); + } + + if(empty($hipoteses)){ throw new InfraException('Não foi possível obter as hipóteses legais dos serviços de integração'); } //Para cada hipótese vinda do PEN será verificado a existencia. - foreach ($hipotesesPen->hipotesesLegais->hipotese as $hipotese) { + foreach ($hipoteses as $hipotese) { $objDTO = new PenHipoteseLegalDTO(); $objDTO->setNumIdentificacao($hipotese->identificacao); @@ -39,7 +49,7 @@ protected function atualizarHipotesesLegaisControlado() continue; } - $objDTO->setStrNome(utf8_decode($hipotese->nome)); + $objDTO->setStrNome(mb_convert_encoding($hipotese->nome, 'ISO-8859-1', 'UTF-8')); if ($hipotese->status) { $objDTO->setStrAtivo('S'); @@ -81,7 +91,7 @@ protected function atualizarEspeciesDocumentaisControlado() $arrEspeciesDocumentaisPEN = $processoEletronicoRN->consultarEspeciesDocumentais(); // Obtém lista de espécies documentais registradas na base de dados do SEI - $objGenericoBD = new GenericoBD(BancoSEI::getInstance()); + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); $objEspecieDocumentalDTO = new EspecieDocumentalDTO(); $objEspecieDocumentalDTO->retDblIdEspecie(); $objEspecieDocumentalDTO->retStrNomeEspecie(); @@ -179,7 +189,7 @@ protected function atualizarInformacoesPENControlado() * * @return void */ - public function processarTarefasPEN($arrParametros) + public function processarTarefasRecebimentoPEN($arrParametros) { InfraDebug::getInstance()->setBolLigado(true); InfraDebug::getInstance()->setBolDebugInfra(false); @@ -209,7 +219,7 @@ public function processarTarefasPEN($arrParametros) } // Faz uma requisição para o controlador do sistema - PendenciasTramiteRN::inicializarMonitoramentoPendencias($numValorWorkers, $bolMonitoramentoAtivado, $bolExecutarEmSegundoPlano, $bolDebugAtivo); + PendenciasTramiteRN::inicializarMonitoramentoRecebimentoPendencias($numValorWorkers, $bolMonitoramentoAtivado, $bolExecutarEmSegundoPlano, $bolDebugAtivo); }catch(Exception $e){ InfraDebug::getInstance()->setBolLigado(false); @@ -220,6 +230,51 @@ public function processarTarefasPEN($arrParametros) } } + /** + * Processa tarefas recebidas pelo Barramento de Serviços do PEN para receber novos processos/documentos, + * notificações de conclusão de trâmites ou notificação de recusa de processos + * + * @return void + */ + public function processarTarefasEnvioPEN($arrParametros) + { + InfraDebug::getInstance()->setBolLigado(true); + InfraDebug::getInstance()->setBolDebugInfra(false); + InfraDebug::getInstance()->setBolEcho(false); + InfraDebug::getInstance()->limpar(); + + try { + if (!PENIntegracao::verificarCompatibilidadeConfiguracoes()) { + return false; + } + + $bolDebugAtivo = array_key_exists('debug', $arrParametros) && $arrParametros['debug'][0] != false; + $bolMonitoramentoAtivado = array_key_exists('monitorar', $arrParametros) && $arrParametros['monitorar'][0] != false; + $strValorWorkers = array_key_exists('workers', $arrParametros) ? $arrParametros['workers'][0] : null; + $strValorWorkers = (is_null($strValorWorkers) && array_key_exists('worker', $arrParametros)) ? $arrParametros['worker'][0] : $strValorWorkers; + $numValorWorkers = is_numeric($strValorWorkers) ? intval($strValorWorkers) : null; + $bolForcarInicializacaoWorkers = array_key_exists('forcarInicializacaoWorkers', $arrParametros) && $arrParametros['forcarInicializacaoWorkers'][0] == true; + $bolAtivaWorker = (is_null($numValorWorkers) || $numValorWorkers > 0) && ($this->foiIniciadoPeloTerminal() || $bolForcarInicializacaoWorkers); + + $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); + $arrObjGearman = $objConfiguracaoModPEN->getValor("PEN", "Gearman", false); + $bolExecutarEmSegundoPlano = !empty(trim(@$arrObjGearman["Servidor"] ?: null)); + + // Inicializa workers do Gearman caso este componente esteja configurado e não desativado no agendamento do sistema + if ($bolAtivaWorker && $bolExecutarEmSegundoPlano) { + ProcessarPendenciasRN::inicializarWorkers($numValorWorkers); + } + + // Faz uma requisição para o controlador do sistema + PendenciasEnvioTramiteRN::inicializarMonitoramentoEnvioPendencias($numValorWorkers, $bolMonitoramentoAtivado, $bolExecutarEmSegundoPlano, $bolDebugAtivo); + } catch (Exception $e) { + InfraDebug::getInstance()->setBolLigado(false); + InfraDebug::getInstance()->setBolDebugInfra(false); + InfraDebug::getInstance()->setBolEcho(false); + + throw new InfraException('Erro processando pendências de trâmites do Barramento de Serviços do PEN.', $e); + } + } private function foiIniciadoPeloTerminal() { diff --git a/src/rn/PenAtividadeRN.php b/src/rn/PenAtividadeRN.php index d6a8b4e5c..7cafe6eeb 100755 --- a/src/rn/PenAtividadeRN.php +++ b/src/rn/PenAtividadeRN.php @@ -108,12 +108,8 @@ public static function retornaAtividadeDoTramiteFormatado($numIdTramite, $numIdE $objAtributoAndamentoBD = new AtributoAndamentoBD($objBancoSEI); $arrAtributoAndamentoDTO = $objAtributoAndamentoBD->listar($objAtributoAndamentoDTO); - //$objAtributoAndamentoDTO = current($arrAtributoAndamentoDTO); $objAtributoAndamentoDTO = $arrAtributoAndamentoDTO[0]; - //print_r($objAtributoAndamentoDTO); - //echo "objAtributoAndamentoDTO->getStrValor(): " . $objAtributoAndamentoDTO->getStrValor(); - //die(); $obProtocoloDTO = new ProtocoloDTO(); $obProtocoloDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); $obProtocoloDTO->retStrProtocoloFormatado(); diff --git a/src/rn/PenBlocoProcessoRN.php b/src/rn/PenBlocoProcessoRN.php new file mode 100755 index 000000000..30d1c0046 --- /dev/null +++ b/src/rn/PenBlocoProcessoRN.php @@ -0,0 +1,566 @@ +retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); + $objPenBlocoProcessoDTO->setNumMaxRegistrosRetorno(1); + + $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + $objPenBlocoProcessoDTO = $objPenBlocoProcessoBD->consultar($objPenBlocoProcessoDTO); + + if ( + $objPenBlocoProcessoDTO != null + && $objPenBlocoProcessoDTO->getNumIdAndamento() !== null + ) { + $messagem .= "\n - {$objPenBlocoProcessoDTO->getStrProtocoloFormatadoProtocolo()}"; + $podeExcluir = false; + } + } + + if (!$podeExcluir) { + return $messagem; + } + + return null; + } + + protected function obterPendenciasBlocoControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO) + { + try { + + //Valida PermissãoTipo + SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_bloco', __METHOD__, $objPenBlocoProcessoDTO); + + //Obter todos os processos pendentes antes de iniciar o monitoramento + $arrObjPendenciasBlocoDTO = $this->listar($objPenBlocoProcessoDTO) ?: array(); + shuffle($arrObjPendenciasBlocoDTO); + + $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + foreach ($arrObjPendenciasBlocoDTO as $objPendenciasBlocoDTO) { + //Captura todas as pendências e status retornadas para impedir duplicidade + $arrPendenciasBlocoRetornadas[] = sprintf("%d-%s", $objPendenciasBlocoDTO->getDblIdProtocolo(), $objPendenciasBlocoDTO->getNumIdAndamento()); + + $objPendenciasBlocoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); + $objPenBlocoProcessoBD->alterar($objPendenciasBlocoDTO); + + yield $objPendenciasBlocoDTO; + } + } catch (\Exception $e) { + throw new InfraException('Falha em obter pendências de trâmite de processos em bloco.', $e); + } + } + + protected function desbloquearProcessoBlocoControlado($dblIdProcedimento) + { + try { + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->retTodos(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($dblIdProcedimento); + $objPenBlocoProcessoDTO->setNumIdAndamento(array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO), InfraDTO::$OPER_IN); + + $objPenBlocoProcessoDTO = $this->consultar($objPenBlocoProcessoDTO); + + if (!is_null($objPenBlocoProcessoDTO)) { + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO); + + $this->alterar($objPenBlocoProcessoDTO); + + $idBloco = $objPenBlocoProcessoDTO->getNumIdBloco(); + $this->atualizarEstadoDoBloco($idBloco); + } + + //Desbloqueia o processo + $objProtocoloRN = new ProtocoloRN(); + $objProtocoloDTO = new ProtocoloDTO(); + $objProtocoloDTO->setStrStaEstado(ProtocoloRN::$TE_NORMAL); + $objProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); + $objProtocoloRN->alterarRN0203($objProtocoloDTO); + + //Cria o Objeto que registrar a Atividade de cancelamento + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimento); + $objAtividadeDTO->setNumIdUnidade($objPenBlocoProcessoDTO->getNumIdUnidade()); + $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO)); + + //Seta os atributos do tamplate de descrio dessa atividade + $objAtributoAndamentoDTOHora = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTOHora->setStrNome('DATA_HORA'); + $objAtributoAndamentoDTOHora->setStrIdOrigem(null); + $objAtributoAndamentoDTOHora->setStrValor(date('d/m/Y H:i')); + + $objUsuarioDTO = new UsuarioDTO(); + $objUsuarioDTO->setNumIdUsuario($objPenBlocoProcessoDTO->getNumIdUsuario()); + $objUsuarioDTO->setBolExclusaoLogica(false); + $objUsuarioDTO->retStrNome(); + + $objUsuarioRN = new UsuarioRN(); + $objUsuario = $objUsuarioRN->consultarRN0489($objUsuarioDTO); + + $objAtributoAndamentoDTOUser = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTOUser->setStrNome('USUARIO'); + $objAtributoAndamentoDTOUser->setStrIdOrigem(null); + $objAtributoAndamentoDTOUser->setStrValor($objUsuario->getStrNome()); + + $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser)); + + $objAtividadeRN = new AtividadeRN(); + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); + } catch (\Exception $e) { + throw new InfraException('Falha em obter pendências de trâmite de processos em bloco.', $e); + } + } + + /** + * Registra a tentativa de trâmite do processo em bloco para posterior verificação de estouro do limite de envios + * + * @param PenBlocoProcessoDTO $objPenBlocoProcessoDTO + * @return void + */ + protected function registrarTentativaEnvioControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO) + { + $numTentativas = $objPenBlocoProcessoDTO->getNumTentativas() ?: 0; + $numTentativas += 1; + + $objPenBlocoProcessoDTO->setNumTentativas($numTentativas); + $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + $objPenBlocoProcessoBD->alterar($objPenBlocoProcessoDTO); + } + + protected function listarProtocolosBlocoConectado(PenBlocoProcessoDTO $parObjTramitaEmBlocoProtocoloDTO) + { + try { + + $ret = array(); + + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $parObjTramitaEmBlocoProtocoloDTO); + + $parObjRelBlocoProtocoloDTO = InfraString::prepararPesquisaDTO($parObjTramitaEmBlocoProtocoloDTO, "PalavrasPesquisa", "ProtocoloFormatadoProtocolo"); + $parObjRelBlocoProtocoloDTO->setStrStaNivelAcessoGlobalProtocolo(ProtocoloRN::$NA_SIGILOSO, InfraDTO::$OPER_DIFERENTE); + $arrObjRelProtocoloBlocoDTO = $this->listar($parObjRelBlocoProtocoloDTO); + + foreach ($arrObjRelProtocoloBlocoDTO as $dto) { + + $objPenProtocoloDTO = new PenProtocoloDTO(); + $objPenProtocoloDTO->setDblIdProtocolo($dto->getDblIdProtocolo()); + $objPenProtocoloDTO->retStrSinObteveRecusa(); + $objPenProtocoloDTO->setNumMaxRegistrosRetorno(1); + + $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); + $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); + + if (!empty($objPenProtocoloDTO)) { + $dto->setStrSinObteveRecusa($objPenProtocoloDTO->getStrSinObteveRecusa()); + } else { + $dto->setStrSinObteveRecusa('N'); + } + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($parObjTramitaEmBlocoProtocoloDTO->getNumIdBloco()); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retStrStaEstado(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + + if (!empty($blocoResultado)) { + $dto->setStrStaEstadoBloco($blocoResultado->getStrStaEstado()); + } else { + $dto->setStrStaEstadoBloco('A'); + } + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($dto->getDblIdProtocolo()); + $objAtividadeDTO->setNumIdTarefa([ + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO) + ], InfraDTO::$OPER_IN); + $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); + $objAtividadeDTO->setNumMaxRegistrosRetorno(1); + $objAtividadeDTO->retNumIdAtividade(); + $objAtividadeDTO->retNumIdTarefa(); + $objAtividadeDTO->retDblIdProcedimentoProtocolo(); + $objAtividadeRN = new AtividadeRN(); + $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO); + + if (!empty($arrObjAtividadeDTO) && $arrObjAtividadeDTO[0]->getNumIdTarefa() != null) { + $dto->setNumStaIdTarefa($arrObjAtividadeDTO[0]->getNumIdTarefa()); + } else { + $dto->setNumStaIdTarefa(0); + } + + $ret[] = $dto; + } + + return $ret; + } catch (Exception $e) { + throw new InfraException('Erro listando protocolos do bloco.', $e); + } + } + + protected function consultarConectado(PenBlocoProcessoDTO $objDTO) + { + try { + $objTramitaEmBlocoProtocoloBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + return $objTramitaEmBlocoProtocoloBD->consultar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro consutando blocos.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param TramitaEmBlocoProtocoloDTO $objDTO + * @return array + * @throws InfraException + */ + protected function listarControlado(PenBlocoProcessoDTO $objDTO) + { + try { + //Valida Permissão + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $objDTO); + + $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoBD->listar($objDTO); + + return $arrObjPenBlocoProcessoDTO; + } catch (\Exception $e) { + throw new InfraException('Falha na listagem de pendências de trâmite de processos em bloco.', $e); + } + } + + protected function excluirControlado(array $arrayObjDTO) + { + try { + //Valida Permissão + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_excluir', __METHOD__, $arrayObjDTO); + + $arrExcluido = array(); + + foreach ($arrayObjDTO as $objDTO) { + + $objBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + + $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumId($objDTO->getNumIdBloco()); + $tramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + $tramiteEmBlocoDTO->retStrStaEstado(); + $tramiteEmBlocoDTO->retNumId(); + + $tramiteEmBlocoRN = new TramiteEmBlocoRN(); + $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); + + if ($tramiteEmBloco != null) { + $arrayExcluido[] = $objBD->excluir($objDTO); + continue; + } + + $objPenProtocoloDTO = new PenBlocoProcessoDTO(); + $objPenProtocoloDTO->setNumIdBlocoProcesso($objDTO->getNumIdBlocoProcesso()); + $objPenProtocoloDTO->setDblIdProtocolo($objDTO->getDblIdProtocolo()); + $objPenProtocoloDTO->setNumIdBloco($objDTO->getNumIdBloco()); + $objPenProtocoloDTO->retNumIdAndamento(); + $objPenProtocoloDTO->retDblIdProtocolo(); + + $objPenProtocoloDTO = $this->consultar($objPenProtocoloDTO); + + if ($objPenProtocoloDTO != null && $objPenProtocoloDTO->getNumIdAndamento() === null) { + $arrExcluido[] = $objBD->excluir($objDTO); + continue; + } + } + + return $arrExcluido; + } catch (Exception $e) { + throw new InfraException('Erro excluindo Bloco.', $e); + } + } + + protected function montarIndexacaoControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO) + { + try { + + $dto = new PenBlocoProcessoDTO(); + $dto->retNumIdBlocoProcesso(); + + if (is_array($objPenBlocoProcessoDTO->getNumIdBlocoProcesso())) { + $dto->setNumIdBlocoProcesso($objPenBlocoProcessoDTO->getNumIdBlocoProcesso(), InfraDTO::$OPER_IN); + } else { + $dto->setNumIdBlocoProcesso($objPenBlocoProcessoDTO->getNumIdBlocoProcesso()); + } + + $objPenBlocoProcessoDTOIdx = new PenBlocoProcessoDTO(); + + $arrObjPenBlocoProcessoDTO = $this->listar($dto); + + foreach ($arrObjPenBlocoProcessoDTO as $dto) { + + $objPenBlocoProcessoDTOIdx->setNumBlocoProcesso($dto->getNumIdBlocoProcesso()); + } + } catch (Exception $e) { + throw new InfraException('Erro montando indexação de processos em bloco.', $e); + } + } + + protected function cadastrarControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO) + { + try { + + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramite_em_bloco_cadastrar', __METHOD__, $objPenBlocoProcessoDTO); + + //Regras de Negocio + $objInfraException = new InfraException(); + + $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + $ret = $objPenBlocoProcessoBD->cadastrar($objPenBlocoProcessoDTO); + + return $ret; + } catch (Exception $e) { + throw new InfraException('Erro cadastrando Processo em Bloco.', $e); + } + } + + protected function alterarControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO) + { + try { + $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); + $ret = $objPenBlocoProcessoBD->alterar($objPenBlocoProcessoDTO); + + return $ret; + } catch (Exception $e) { + throw new InfraException('Erro cadastrando Processo em Bloco.', $e); + } + } + + protected function validarBlocoDeTramiteControlado($idProtocolo) + { + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($idProtocolo); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); + + $concluidos = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE + ); + + $arrTramitaEmBloco = $this->listar($objPenBlocoProcessoDTO); + if (!is_null($arrTramitaEmBloco) && count($arrTramitaEmBloco) > 0) { + foreach ($arrTramitaEmBloco as $tramitaEmBloco) { + if ($tramitaEmBloco->getNumIdAndamento() !== null && in_array($tramitaEmBloco->getNumIdAndamento(), $concluidos)) { + continue; + } + + $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumId($tramitaEmBloco->getNumIdBloco()); + $tramiteEmBlocoDTO->retStrDescricao(); + $tramiteEmBlocoDTO->retStrStaEstado(); + $tramiteEmBlocoDTO->retStrSiglaUnidade(); + $tramiteEmBlocoDTO->retNumId(); + $tramiteEmBlocoDTO->retNumOrdem(); + + $tramiteEmBlocoRN = new TramiteEmBlocoRN(); + $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); + + return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrProtocoloFormatadoProtocolo()} encontra-se inserido no bloco {$tramiteEmBloco->getNumOrdem()} - {$tramiteEmBloco->getStrDescricao()} da unidade {$tramiteEmBloco->getStrSiglaUnidade()}." + . " Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; + } + } + + $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); + $objProcedimentoDTO = $objExpedirProcedimentoRN->consultarProcedimento($idProtocolo); + + $bolProcessoEstadoNormal = !in_array($objProcedimentoDTO->getStrStaEstadoProtocolo(), array( + ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO, + ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO + )); + if (!$bolProcessoEstadoNormal) { + return "Prezado(a) usuário(a), o processo {$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()} encontra-se bloqueado." + . " Dessa forma, não foi possível realizar a sua inserção no bloco selecionado."; + } + + return false; + } + + public function validarQuantidadeDeItensNoBloco($dblIdbloco, $arrProtocolosOrigem) + { + $tramitaEmBlocoProtocoloDTO = new PenBlocoProcessoDTO(); + $tramitaEmBlocoProtocoloDTO->setNumIdBloco($dblIdbloco); + $tramitaEmBlocoProtocoloDTO->retNumIdBloco(); + + $tramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); + $arrTramitaEmBlocoProtocolo = $tramitaEmBlocoProtocoloRN->listar($tramitaEmBlocoProtocoloDTO); + $numRegistroBloco = count($arrTramitaEmBlocoProtocolo); + $numRegistroItens = count($arrProtocolosOrigem); + + $numMaximoDeProcessos = 100; + if (!empty($numRegistroBloco) && $numRegistroBloco >= $numMaximoDeProcessos) { + return "Não é possível incluir mais que {$numMaximoDeProcessos} processos em um único bloco. O bloco selecionado já atingiu sua capacidade máxima."; + } + + if ($numRegistroBloco + $numRegistroItens > $numMaximoDeProcessos) { + return "Não é possível incluir mais que {$numMaximoDeProcessos} processos em um único bloco. Por favor, selecione outro bloco ou selecione uma quantidade menor de processos."; + } + + return false; + } + + public function validarBlocosEmAndamento() + { + $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_DISPONIBILIZADO); + $tramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $arrTramiteEmBloco = $objTramiteEmBlocoRN->listar($tramiteEmBlocoDTO); + foreach ($arrTramiteEmBloco as $blocoDTO) { + $this->atualizarEstadoDoBloco($blocoDTO->getNumId()); + } + } + + /** + * Atualizar Bloco de tramite externo para concluído + * + * @param int $idBloco + * @throws InfraException + */ + public function atualizarEstadoDoBloco($idBloco) + { + $blocoResultado = $this->buscarBloco($idBloco); + + if ($blocoResultado != null) { + $arrObjTramiteEmBlocoProtocoloDTO = $this->buscarBlocoProcessos($idBloco); + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $idAndamentoBloco = TramiteEmBlocoRN::$TE_ABERTO; + if (count($arrObjTramiteEmBlocoProtocoloDTO) > 0) { + $idAndamentoBloco = $this->validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDTO, $idAndamentoBloco); + $objTramiteEmBlocoDTO->setStrStaEstado($idAndamentoBloco); + } else { + $objTramiteEmBlocoDTO->setStrStaEstado($idAndamentoBloco); + } + + $objTramiteEmBlocoDTO->setNumId($idBloco); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + } + } + + /** + * Busca um bloco pelo ID + * + * @param int $dblIdBloco + */ + private function buscarBloco($idBloco) + { + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($idBloco); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retStrStaEstado(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + + return $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + } + + /** + * Busca todos os processos de um bloco + * + * @param int $dblIdBloco + */ + private function buscarBlocoProcessos($idBloco) + { + $objTramiteEmBlocoProtocoloDTO = new PenBlocoProcessoDTO(); + $objTramiteEmBlocoProtocoloDTO->setNumIdBloco($idBloco); + $objTramiteEmBlocoProtocoloDTO->retNumIdAndamento(); + $objTramiteEmBlocoProtocoloDTO->retNumIdBloco(); + + $tramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); + + return $tramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); + } + + /** + * Valida o status do processo para o bloco + * + * @param array $arrObjTramiteEmBlocoProtocoloDTO + * @param int $idAndamentoBloco + */ + private function validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDTO, $idAndamentoBloco) + { + $concluido = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE + ); + $emAndamento = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO + ); + + $qtdProcesos = count($arrObjTramiteEmBlocoProtocoloDTO); + $arrayConcluidos = array(); + $arrayEmAndamento = array(); + foreach ($arrObjTramiteEmBlocoProtocoloDTO as $objDTO) { + if (in_array($objDTO->getNumIdAndamento(), $concluido)) { + $arrayConcluidos[] = $objDTO; + } + + if (in_array($objDTO->getNumIdAndamento(), $emAndamento)) { + $arrayEmAndamento[] = $objDTO; + } + } + + if ($qtdProcesos == count($arrayConcluidos)) { + $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO; + } + if (count($arrayEmAndamento) > 0) { + $idAndamentoBloco = TramiteEmBlocoRN::$TE_DISPONIBILIZADO; + } + + return $idAndamentoBloco; + } +} diff --git a/src/rn/PenConsoleActionRN.php b/src/rn/PenConsoleActionRN.php index 886006183..40e2c14f4 100755 --- a/src/rn/PenConsoleActionRN.php +++ b/src/rn/PenConsoleActionRN.php @@ -61,7 +61,7 @@ protected function getAssunto($strCodigoEstruturado = ''){ $objAssuntoDTO->setNumMaxRegistrosRetorno(1); $objAssuntoDTO->retNumIdAssunto(); - $objAssuntoBD = new AssuntoBD(BancoSEI::getInstance()); + $objAssuntoBD = new AssuntoBD($this->inicializarObjInfraIBanco()); $objAssuntoDTO = $objAssuntoBD->consultar($objAssuntoDTO); if (empty($objAssuntoDTO)) { @@ -356,7 +356,6 @@ public function criarProcedimento($args = array()){ // Cadastra o procedimento $objProcedimentoDTO = new ProcedimentoDTO(); $objProcedimentoDTO->setDblIdProcedimento(null); - //$objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($args['tipo']); $objProcedimentoDTO->setNumIdTipoProcedimento($objTipoProcedimentoDTO->getNumIdTipoProcedimento()); $objProcedimentoDTO->setStrNomeTipoProcedimento($objTipoProcedimentoDTO->getStrNome()); $objProcedimentoDTO->setStrSinGerarPendencia('S'); diff --git a/src/rn/PenConsoleRN.php b/src/rn/PenConsoleRN.php index dc78c2a34..4b0e3929b 100755 --- a/src/rn/PenConsoleRN.php +++ b/src/rn/PenConsoleRN.php @@ -118,9 +118,7 @@ public function run(){ public static function format($strMensagem = '', $strFonte = '', $bolBold = false){ $strBold = ($bolBold !== false) ? '1' : '0'; - - //$strMensagem = escapeshellarg($strMensagem); - + if(!empty($strFonte)) { switch($strFonte){ diff --git a/src/rn/PenExpedirLoteRN.php b/src/rn/PenExpedirBlocoRN.php similarity index 63% rename from src/rn/PenExpedirLoteRN.php rename to src/rn/PenExpedirBlocoRN.php index 047534b00..506a99ea7 100755 --- a/src/rn/PenExpedirLoteRN.php +++ b/src/rn/PenExpedirBlocoRN.php @@ -2,7 +2,7 @@ require_once DIR_SEI_WEB . '/SEI.php'; -class PenExpedirLoteRN extends InfraRN +class PenExpedirBlocoRN extends InfraRN { private $barraProgresso; @@ -33,55 +33,55 @@ public function gravarLogDebug($parStrMensagem, $parNumIdentacao = 0, $parBolLog $this->objPenDebug->gravar($parStrMensagem, $parNumIdentacao, $parBolLogTempoProcessamento); } - private function validarParametrosLote(InfraException $objInfraException, PenExpedirLoteDTO $objLoteDTO) + private function validarParametrosBloco(InfraException $objInfraException, PenBlocoProcessoDTO $objBlocoDTO) { - if(!isset($objLoteDTO)){ - $objInfraException->adicionarValidacao('Parâmetro $objLoteDTO não informado.'); + if(!isset($objBlocoDTO)){ + $objInfraException->adicionarValidacao('Parâmetro $objBlocoDTO não informado.'); } //TODO: Validar se repositrio de origem foi informado - if (InfraString::isBolVazia($objLoteDTO->getNumIdRepositorioOrigem())){ + if (InfraString::isBolVazia($objBlocoDTO->getNumIdRepositorioOrigem())){ $objInfraException->adicionarValidacao('Identificação do repositório de estruturas da unidade atual não informado.'); } //TODO: Validar se unidade de origem foi informado - if (InfraString::isBolVazia($objLoteDTO->getNumIdUnidadeOrigem())){ + if (InfraString::isBolVazia($objBlocoDTO->getNumIdUnidadeOrigem())){ $objInfraException->adicionarValidacao('Identificação da unidade atual no repositório de estruturas organizacionais não informado.'); } //TODO: Validar se repositrio foi devidamente informado - if (InfraString::isBolVazia($objLoteDTO->getNumIdRepositorioDestino())){ + if (InfraString::isBolVazia($objBlocoDTO->getNumIdRepositorioDestino())){ $objInfraException->adicionarValidacao('Repositório de estruturas organizacionais não informado.'); } //TODO: Validar se unidade foi devidamente informada - if (InfraString::isBolVazia($objLoteDTO->getNumIdUnidadeDestino()) || InfraString::isBolVazia($objLoteDTO->getStrUnidadeDestino())){ + if (InfraString::isBolVazia($objBlocoDTO->getNumIdUnidadeDestino()) || InfraString::isBolVazia($objBlocoDTO->getStrUnidadeDestino())){ $objInfraException->adicionarValidacao('Unidade de destino não informado.'); } //TODO: Validar se usuário foi devidamente informada - if (InfraString::isBolVazia($objLoteDTO->getNumIdUsuario())){ + if (InfraString::isBolVazia($objBlocoDTO->getNumIdUsuario())){ $objInfraException->adicionarValidacao('Usuário não informado.'); } //TODO: Validar se usuário foi devidamente informada - if (InfraString::isBolVazia($objLoteDTO->getDthRegistro())){ + if (InfraString::isBolVazia($objBlocoDTO->getDthRegistro())){ $objInfraException->adicionarValidacao('Data do registro não informada.'); } } - protected function cadastrarLoteControlado(PenExpedirLoteDTO $objPenExpedirLoteDTO) + protected function cadastrarBlocoControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO) { try { //Valida Permissão - SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_lote', __METHOD__, $objPenExpedirLoteDTO); + SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_bloco', __METHOD__, $objPenBlocoProcessoDTO); $this->barraProgresso->exibir(); - $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_VALIDACAO); + $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_VALIDACAO); //Obtém o tamanho total da barra de progreso - $nrTamanhoTotalBarraProgresso = count($objPenExpedirLoteDTO->getArrIdProcedimento()); + $nrTamanhoTotalBarraProgresso = count($objPenBlocoProcessoDTO->getArrListaProcedimento()); //Atribui o tamanho máximo da barra de progresso $this->barraProgresso->setNumMax($nrTamanhoTotalBarraProgresso); @@ -89,38 +89,38 @@ protected function cadastrarLoteControlado(PenExpedirLoteDTO $objPenExpedirLoteD //Exibe a barra de progresso após definir o seu tamanho $this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_PROCEDIMENTO); - $objPenExpedirLoteBD = new PenExpedirLoteBD($this->getObjInfraIBanco()); - $objInfraException = new InfraException(); - $this->validarParametrosLote($objInfraException, $objPenExpedirLoteDTO); - $ret = $objPenExpedirLoteBD->cadastrar($objPenExpedirLoteDTO); + $this->validarParametrosBloco($objInfraException, $objPenBlocoProcessoDTO); - if ($objPenExpedirLoteDTO->isSetArrIdProcedimento()) { + if ($objPenBlocoProcessoDTO->isSetArrListaProcedimento()) { - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); - foreach ($objPenExpedirLoteDTO->getArrIdProcedimento() as $dblIdProcedimento) { + foreach ($objPenBlocoProcessoDTO->getArrListaProcedimento() as $dblIdProcedimento) { try { $objProcedimentoDTO = $this->objExpedirProcedimentoRN->consultarProcedimento($dblIdProcedimento); $this->barraProgresso->setStrRotulo(sprintf(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_PROCEDIMENTO, $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado())); //Bloquea o processo para atualização - $idAtividadeExpedicao = $this->objExpedirProcedimentoRN->bloquearProcedimentoExpedicao($objPenExpedirLoteDTO, $dblIdProcedimento); + $idAtividadeExpedicao = $this->objExpedirProcedimentoRN->bloquearProcedimentoExpedicao($objPenBlocoProcessoDTO, $dblIdProcedimento); + + $objDto = new PenBlocoProcessoDTO(); + $objDto->setNumIdBloco($objPenBlocoProcessoDTO->getNumIdBloco()); + $objDto->setDblIdProtocolo($dblIdProcedimento); + $objDto->retTodos(); + + $objPenBlocoProcesso = $objPenBlocoProcessoRN->consultar($objDto); - $objPenLoteProcedimentoDTO->setNumIdLote($ret->getNumIdLote()); - $objPenLoteProcedimentoDTO->setDblIdProcedimento($dblIdProcedimento); - $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); - $objPenLoteProcedimentoDTO->setNumIdAtividade($idAtividadeExpedicao); - $objPenLoteProcedimentoRN->cadastrarLoteProcedimento($objPenLoteProcedimentoDTO); + $objPenBlocoProcesso->setNumIdAtividade($idAtividadeExpedicao); + $objPenBlocoProcessoRN->alterar($objPenBlocoProcesso); $this->barraProgresso->mover($this->barraProgresso->getNumMax()); - $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_CONCLUSAO); + $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_BLOCO_ETAPA_CONCLUSAO); } catch (\Exception $e) { //Realiza o desbloqueio do processo try { - $this->objExpedirProcedimentoRN->desbloquearProcessoExpedicao($objPenExpedirLoteDTO->getDblIdProcedimento()); + $this->objExpedirProcedimentoRN->desbloquearProcessoExpedicao($objPenBlocoProcessoDTO->getDblIdProcedimento()); } catch (InfraException $ex) { } throw $e; diff --git a/src/rn/PenHipoteseLegalRN.php b/src/rn/PenHipoteseLegalRN.php index 98c963be4..e8510a00e 100755 --- a/src/rn/PenHipoteseLegalRN.php +++ b/src/rn/PenHipoteseLegalRN.php @@ -1,28 +1,50 @@ inicializarObjInfraIBanco()); + return $objBD->listar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando hipotese legal.', $e); + } + } + + protected function consultarConectado(PenHipoteseLegalDTO $objDTO) + { try { - //SessaoSEI::getInstance()->validarAuditarPermissao('email_sistema_excluir', __METHOD__, $arrObjEmailSistemaDTO); - $objBD = new GenericoBD($this->inicializarObjInfraIBanco()); - return $objBD->listar($objDTO); - } - catch (Exception $e) { - throw new InfraException('Erro excluindo E-mail do Sistema.', $e); + //Valida Permissao + $objBD = new GenericoBD($this->inicializarObjInfraIBanco()); + return $objBD->consultar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro ao consultar Hipotese Legal.', $e); } } } diff --git a/src/rn/PenLoteProcedimentoRN.php b/src/rn/PenLoteProcedimentoRN.php deleted file mode 100755 index f49ccfb69..000000000 --- a/src/rn/PenLoteProcedimentoRN.php +++ /dev/null @@ -1,202 +0,0 @@ -validarAuditarPermissao('pen_expedir_lote', __METHOD__, $objPenLoteProcedimentoDTO); - $objPenLoteProcedimentoBD = new PenLoteProcedimentoBD($this->getObjInfraIBanco()); - return $objPenLoteProcedimentoBD->cadastrar($objPenLoteProcedimentoDTO); - } - catch (Exception $e) { - throw new InfraException('Erro ao cadastrar procedimento lote.', $e); - } - } - - public function alterarLoteProcedimentoControlado(PenLoteProcedimentoDTO $objPenLoteProcedimentoDTO) - { - try { - //Valida Permissão - SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_lote', __METHOD__, $objPenLoteProcedimentoDTO); - - $objPenLoteProcedimentoBD = new PenLoteProcedimentoBD($this->getObjInfraIBanco()); - $objPenLoteProcedimentoBD->alterar($objPenLoteProcedimentoDTO); - - } catch (\Exception $e) { - throw new InfraException('Falha na alteração da pendência de trâmite de processos em lote.', $e); - } - - } - - protected function consultarLoteProcedimentoConectado(PenLoteProcedimentoDTO $objPenLoteProcedimentoDTO) - { - - try { - //Valida Permissão - SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_lote', __METHOD__, $objPenLoteProcedimentoDTO); - - $objPenLoteProcedimentoBD = new PenLoteProcedimentoBD($this->getObjInfraIBanco()); - $objPenLoteProcedimento = $objPenLoteProcedimentoBD->consultar($objPenLoteProcedimentoDTO); - - return $objPenLoteProcedimento; - - } catch (\Exception $e) { - throw new InfraException('Falha na consulta de trâmite de processos em lote.', $e); - } - - } - - protected function listarLoteProcedimentoConectado(PenLoteProcedimentoDTO $objPenLoteProcedimentoDTO) - { - - try { - //Valida Permissão - SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_lote', __METHOD__, $objPenLoteProcedimentoDTO); - - $objPenLoteProcedimentoBD = new PenLoteProcedimentoBD($this->getObjInfraIBanco()); - $arrObjPenLoteProcedimento = $objPenLoteProcedimentoBD->listar($objPenLoteProcedimentoDTO); - - return $arrObjPenLoteProcedimento; - - } catch (\Exception $e) { - throw new InfraException('Falha na listagem de pendências de trâmite de processos em lote.', $e); - } - - } - - protected function obterPendenciasLoteControlado(PenLoteProcedimentoDTO $objPenLoteProcedimentoDTO) - { - try { - - //Valida PermissãoTipo - SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_lote', __METHOD__, $objPenLoteProcedimentoDTO); - - //Obter todos os processos pendentes antes de iniciar o monitoramento - $arrObjPendenciasLoteDTO = $this->listarLoteProcedimento($objPenLoteProcedimentoDTO) ?: array(); - shuffle($arrObjPendenciasLoteDTO); - - $objPenLoteProcedimentoBD = new PenLoteProcedimentoBD($this->getObjInfraIBanco()); - foreach ($arrObjPendenciasLoteDTO as $objPendenciasLoteDTO) { - //Captura todas as pendências e status retornadas para impedir duplicidade - $arrPendenciasLoteRetornadas[] = sprintf("%d-%s", $objPendenciasLoteDTO->getDblIdProcedimento(), $objPendenciasLoteDTO->getNumIdAndamento()); - - $objPendenciasLoteDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); - $objPenLoteProcedimentoBD->alterar($objPendenciasLoteDTO); - - yield $objPendenciasLoteDTO; - } - } catch (\Exception $e) { - throw new InfraException('Falha em obter pendências de trâmite de processos em lote.', $e); - } - - } - - /** - * Registra a tentativa de trâmite do processo em lote para posterior verificação de estouro do limite de envios - * - * @param PenLoteProcedimentoDTO $objPenLoteProcedimentoDTO - * @return void - */ - protected function registrarTentativaEnvioControlado(PenLoteProcedimentoDTO $objPenLoteProcedimentoDTO){ - $numTentativas = $objPenLoteProcedimentoDTO->getNumTentativas() ?: 0; - $numTentativas += 1; - - $objPenLoteProcedimentoDTO->setNumTentativas($numTentativas); - $objPenLoteProcedimentoBD = new PenLoteProcedimentoBD($this->getObjInfraIBanco()); - $objPenLoteProcedimentoBD->alterar($objPenLoteProcedimentoDTO); - } - - - protected function desbloquearProcessoLoteControlado($dblIdProcedimento) - { - try{ - - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(); - $objPenLoteProcedimentoDTO->retNumIdLote(); - $objPenLoteProcedimentoDTO->retNumIdUsuario(); - $objPenLoteProcedimentoDTO->retNumIdUnidade(); - $objPenLoteProcedimentoDTO->setDblIdProcedimento($dblIdProcedimento); - $objPenLoteProcedimentoDTO->setNumIdAndamento(array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO), InfraDTO::$OPER_IN); - - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $objPenLoteProcedimentoDTO = $objPenLoteProcedimentoRN->consultarLoteProcedimento($objPenLoteProcedimentoDTO); - - if(!is_null($objPenLoteProcedimentoDTO)){ - $objPenExpedirLoteDTO = new PenLoteProcedimentoDTO(); - $objPenExpedirLoteDTO->setNumIdLote($objPenLoteProcedimentoDTO->getNumIdLote()); - $objPenExpedirLoteDTO->setDblIdProcedimento($dblIdProcedimento); - $objPenExpedirLoteDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO); - - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $objPenLoteProcedimentoRN->alterarLoteProcedimento($objPenExpedirLoteDTO); - - - // Atualizar Bloco para concluido parcialmente - $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); - $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $tramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); - - if ($tramiteEmBlocoProtocolo != null) { - $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBlocoConcluidoParcialmente($tramiteEmBlocoProtocolo); - } - } - - //Desbloqueia o processo - $objProtocoloRN = new ProtocoloRN(); - $objProtocoloDTO = new ProtocoloDTO(); - $objProtocoloDTO->setStrStaEstado(ProtocoloRN::$TE_NORMAL); - $objProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); - $objProtocoloRN->alterarRN0203($objProtocoloDTO); - - //Cria o Objeto que registrar a Atividade de cancelamento - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimento); - $objAtividadeDTO->setNumIdUnidade($objPenLoteProcedimentoDTO->getNumIdUnidade()); - $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO)); - - //Seta os atributos do tamplate de descrio dessa atividade - $objAtributoAndamentoDTOHora = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTOHora->setStrNome('DATA_HORA'); - $objAtributoAndamentoDTOHora->setStrIdOrigem(null); - $objAtributoAndamentoDTOHora->setStrValor(date('d/m/Y H:i')); - - $objUsuarioDTO = new UsuarioDTO(); - $objUsuarioDTO->setNumIdUsuario($objPenLoteProcedimentoDTO->getNumIdUsuario()); - $objUsuarioDTO->setBolExclusaoLogica(false); - $objUsuarioDTO->retStrNome(); - - $objUsuarioRN = new UsuarioRN(); - $objUsuario = $objUsuarioRN->consultarRN0489($objUsuarioDTO); - - $objAtributoAndamentoDTOUser = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTOUser->setStrNome('USUARIO'); - $objAtributoAndamentoDTOUser->setStrIdOrigem(null); - $objAtributoAndamentoDTOUser->setStrValor($objUsuario->getStrNome()); - - $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser)); - - $objAtividadeRN = new AtividadeRN(); - $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); - - } catch (\Exception $e) { - throw new InfraException('Falha em obter pendências de trâmite de processos em lote.', $e); - } - } - -} diff --git a/src/rn/PenMapTipoProcedimentoRN.php b/src/rn/PenMapTipoProcedimentoRN.php index f34d8cf6a..05f92271a 100644 --- a/src/rn/PenMapTipoProcedimentoRN.php +++ b/src/rn/PenMapTipoProcedimentoRN.php @@ -58,7 +58,7 @@ protected function consultarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoPr protected function alterarControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) { try { - $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); return $objPenMapTipoProcedimentoBD->alterar($objPenMapTipoProcedimentoDTO); } catch (Exception $e) { throw new InfraException('Erro alterando mapeamento de procedimento.', $e); @@ -74,7 +74,7 @@ protected function alterarControlado(PenMapTipoProcedimentoDTO $objPenMapTipoPro protected function cadastrarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) { try { - $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); return $objPenMapTipoProcedimentoBD->cadastrar($objPenMapTipoProcedimentoDTO); } catch (Exception $e) { throw new InfraException('Erro cadastrando mapeamento de procedimento.', $e); @@ -90,7 +90,7 @@ protected function cadastrarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoPr protected function excluirControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) { try { - $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); } catch (Exception $e) { throw new InfraException('Erro excluindo mapeamento de procedimento.', $e); @@ -106,7 +106,7 @@ protected function excluirControlado(PenMapTipoProcedimentoDTO $objPenMapTipoPro protected function contarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) { try { - $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); return $objPenMapTipoProcedimentoBD->contar($objPenMapTipoProcedimentoDTO); } catch (Exception $e) { throw new InfraException('Erro contando mapeamento de procedimento.', $e); diff --git a/src/rn/PenOrgaoExternoRN.php b/src/rn/PenOrgaoExternoRN.php index 43ec3be1f..60d023028 100644 --- a/src/rn/PenOrgaoExternoRN.php +++ b/src/rn/PenOrgaoExternoRN.php @@ -46,7 +46,7 @@ protected function consultarConectado(PenOrgaoExternoDTO $objDTO) try { //Valida Permissao SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_visualizar', __METHOD__, $objDTO); - $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance()); + $objBD = new PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); return $objBD->consultar($objDTO); } catch (Exception $e) { throw new InfraException('Erro consultando mapeamento de unidades.', $e); @@ -64,7 +64,7 @@ protected function alterarControlado(PenOrgaoExternoDTO $objDTO) try { //Valida Permissao SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO); - $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance()); + $objBD = new PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); return $objBD->alterar($objDTO); } catch (Exception $e) { throw new InfraException('Erro alterando mapeamento de unidades.', $e); @@ -82,7 +82,7 @@ protected function cadastrarConectado(PenOrgaoExternoDTO $objDTO) try { //Valida Permissao SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO); - $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance()); + $objBD = new PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); return $objBD->cadastrar($objDTO); } catch (Exception $e) { throw new InfraException('Erro cadastrando mapeamento de unidades.', $e); @@ -100,7 +100,7 @@ protected function excluirControlado(PenOrgaoExternoDTO $objDTO) try { //Valida Permissao SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_excluir', __METHOD__, $objDTO); - $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance()); + $objBD = new PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); return $objBD->excluir($objDTO); } catch (Exception $e) { throw new InfraException('Erro excluindo mapeamento de unidades.', $e); diff --git a/src/rn/PenRelHipoteseLegalEnvioRN.php b/src/rn/PenRelHipoteseLegalEnvioRN.php index 7cba2c82e..2f7e659d5 100755 --- a/src/rn/PenRelHipoteseLegalEnvioRN.php +++ b/src/rn/PenRelHipoteseLegalEnvioRN.php @@ -41,8 +41,7 @@ protected function excluirControlado(PenRelHipoteseLegalDTO $objDTO){ * @return integer */ protected function getIdHipoteseLegalPENConectado($numIdHipoteseSEI) { - $objBanco = BancoSEI::getInstance(); - $objGenericoBD = new GenericoBD($objBanco); + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); // Mapeamento da hipotese legal remota $objPenRelHipoteseLegalDTO = new PenRelHipoteseLegalDTO(); @@ -58,4 +57,21 @@ protected function getIdHipoteseLegalPENConectado($numIdHipoteseSEI) { return null; } } + + /** + * Contar HipoteseLegal + * + * @param PenRelHipoteseLegalDTO $objDTO + * @return int + * @throws InfraException + */ + protected function contarConectado(PenRelHipoteseLegalDTO $objDTO) { + try { + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); + return $objGenericoBD->contar($objDTO); + } + catch(Exception $e){ + throw new InfraException('Erro contando HipoteseLegal.', $e); + } + } } diff --git a/src/rn/PenRelTipoDocMapEnviadoRN.php b/src/rn/PenRelTipoDocMapEnviadoRN.php index 4d8fb998b..91c9dec84 100755 --- a/src/rn/PenRelTipoDocMapEnviadoRN.php +++ b/src/rn/PenRelTipoDocMapEnviadoRN.php @@ -49,7 +49,7 @@ protected function listarEmUsoConectado($dblIdSerie) $objPenRelTipoDocMapRecebidoDTO->setDistinct(true); $objPenRelTipoDocMapRecebidoDTO->setOrdNumIdSerie(InfraDTO::$TIPO_ORDENACAO_ASC); - $objPenRelTipoDocMapEnviadoBD = new PenRelTipoDocMapEnviadoBD(BancoSEI::getInstance()); + $objPenRelTipoDocMapEnviadoBD = new PenRelTipoDocMapEnviadoBD($this->inicializarObjInfraIBanco()); $arrObjPenRelTipoDocMapRecebidoDTO = $objPenRelTipoDocMapEnviadoBD->listar($objPenRelTipoDocMapRecebidoDTO); if (!empty($arrObjPenRelTipoDocMapRecebidoDTO)) { @@ -245,7 +245,7 @@ protected function consultarEspeciePadraoConectado() $objEspecieDocumentalDTO->retDblIdEspecie(); $objEspecieDocumentalDTO->setDblIdEspecie($strIdEspeciePadrao); - $objGenericoBD = new GenericoBD(BancoSEI::getInstance()); + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); $objEspecieDocumentalDTO = $objGenericoBD->consultar($objEspecieDocumentalDTO); } diff --git a/src/rn/PenRelTipoDocMapRecebidoRN.php b/src/rn/PenRelTipoDocMapRecebidoRN.php index 3566eebc2..a334c3e44 100755 --- a/src/rn/PenRelTipoDocMapRecebidoRN.php +++ b/src/rn/PenRelTipoDocMapRecebidoRN.php @@ -15,14 +15,13 @@ protected function inicializarObjInfraIBanco() { protected function listarEmUsoConectado($dblCodigoEspecie) { $arrNumCodigoEspecie = array(); - $objInfraIBanco = $this->inicializarObjInfraIBanco(); $objDTO = new PenRelTipoDocMapRecebidoDTO(); $objDTO->retNumCodigoEspecie(); $objDTO->setDistinct(true); $objDTO->setBolExclusaoLogica(false); - $objGenericoBD = new GenericoBD($objInfraIBanco); + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); $arrObjPenRelTipoDocMapRecebidoDTO = $objGenericoBD->listar($objDTO); if(!empty($arrObjPenRelTipoDocMapRecebidoDTO)) { diff --git a/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php index ad3bef474..ffb10a0a1 100644 --- a/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php +++ b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php @@ -54,7 +54,7 @@ protected function consultarControlado(PenRestricaoEnvioComponentesDigitaisDTO $ __METHOD__, $objDTO ); - $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); return $objBD->consultar($objDTO); } catch (Exception $e) { throw new InfraException('Erro consultar mapeamento de unidades.', $e); @@ -76,7 +76,7 @@ protected function alterarControlado(PenRestricaoEnvioComponentesDigitaisDTO $ob __METHOD__, $objDTO ); - $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); return $objBD->alterar($objDTO); } catch (Exception $e) { throw new InfraException('Erro alterando mapeamento de unidades.', $e); @@ -98,7 +98,7 @@ protected function cadastrarConectado(PenRestricaoEnvioComponentesDigitaisDTO $o __METHOD__, $objDTO ); - $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); return $objBD->cadastrar($objDTO); } catch (Exception $e) { throw new InfraException('Erro cadastrando mapeamento de unidades.', $e); @@ -120,7 +120,7 @@ protected function excluirControlado(PenRestricaoEnvioComponentesDigitaisDTO $ob __METHOD__, $objDTO ); - $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); return $objBD->excluir($objDTO); } catch (Exception $e) { throw new InfraException('Erro excluindo mapeamento de unidades.', $e); diff --git a/src/rn/PenUnidadeRN.php b/src/rn/PenUnidadeRN.php index dddea8bb7..aecebd6c0 100755 --- a/src/rn/PenUnidadeRN.php +++ b/src/rn/PenUnidadeRN.php @@ -66,7 +66,7 @@ protected function listarConectado(UnidadeDTO $objPenUnidadeDTO) { */ protected function alterarControlado(UnidadeDTO $objPenUnidadeDTO){ try { - $objPenUnidadeBD = new PenUnidadeBD(BancoSEI::getInstance()); + $objPenUnidadeBD = new PenUnidadeBD($this->inicializarObjInfraIBanco()); return $objPenUnidadeBD->alterar($objPenUnidadeDTO); } catch (Exception $e) { @@ -82,7 +82,7 @@ protected function alterarControlado(UnidadeDTO $objPenUnidadeDTO){ */ protected function cadastrarConectado(UnidadeDTO $objDTO){ try { - $objBD = new PenUnidadeBD(BancoSEI::getInstance()); + $objBD = new PenUnidadeBD($this->inicializarObjInfraIBanco()); return $objBD->cadastrar($objDTO); } catch (Exception $e) { @@ -98,7 +98,7 @@ protected function cadastrarConectado(UnidadeDTO $objDTO){ */ protected function excluirControlado(UnidadeDTO $objDTO){ try { - $objBD = new PenUnidadeBD(BancoSEI::getInstance()); + $objBD = new PenUnidadeBD($this->inicializarObjInfraIBanco()); return $objBD->excluir($objDTO); } catch (Exception $e) { @@ -131,7 +131,7 @@ protected function contarConectado(PenUnidadeDTO $objPenUnidadeDTO) { */ protected function consultarConectado(PenUnidadeDTO $objDTO){ try { - $objBD = new PenUnidadeBD(BancoSEI::getInstance()); + $objBD = new PenUnidadeBD($this->inicializarObjInfraIBanco()); return $objBD->consultar($objDTO); } catch (Exception $e) { diff --git a/src/rn/PenUnidadeRestricaoRN.php b/src/rn/PenUnidadeRestricaoRN.php new file mode 100644 index 000000000..30e5f9538 --- /dev/null +++ b/src/rn/PenUnidadeRestricaoRN.php @@ -0,0 +1,158 @@ +getObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->listar($objPenUnidadeRestricaoDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando Unidades.', $e); + } + } + + /** + * Método utilizado para preparar cadastro de dados. + * @param string $hdnRepoEstruturas + * @param string $IdUnidade + * @param string $IdUnidadeRH + * @return array + * @throws InfraException + */ + public function prepararRepoEstruturas($IdUnidade, $IdUnidadeRH, $hdnRepoEstruturas) + { + $arrUnidadesSelecionadas = array(); + $arrayObjPenUnidadeRestricaoDTO = array(); + $arrOpcoes = PaginaSEI::getInstance()->getArrOptionsSelect($hdnRepoEstruturas); + foreach ($arrOpcoes as $opcoes) { + $hdnRepoEstruturasUnidades = 'hdnRepoEstruturas' . $opcoes[0]; + if(array_key_exists($hdnRepoEstruturasUnidades, $_POST) && !empty($_POST[$hdnRepoEstruturasUnidades])) { + $arrOpcoesUnidades = PaginaSEI::getInstance()->getArrOptionsSelect($_POST[$hdnRepoEstruturasUnidades]); + foreach ($arrOpcoesUnidades as $opcoesUnidades) { + if (!in_array($opcoesUnidades[0], $arrUnidadesSelecionadas)) { + $arrUnidadesSelecionadas[] = $opcoesUnidades[0]; + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade($IdUnidade); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($IdUnidadeRH); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRestricao($opcoes[0]); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($opcoes[1]); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRHRestricao($opcoesUnidades[0]); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($opcoesUnidades[1]); + $arrayObjPenUnidadeRestricaoDTO[] = $objPenUnidadeRestricaoDTO; + } + } + } else { + if (!in_array($opcoes[0], $arrUnidadesSelecionadas)) { + $arrUnidadesSelecionadas[] = $opcoes[0]; + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade($IdUnidade); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($IdUnidadeRH); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRestricao($opcoes[0]); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($opcoes[1]); + $arrayObjPenUnidadeRestricaoDTO[] = $objPenUnidadeRestricaoDTO; + } + } + } + return $arrayObjPenUnidadeRestricaoDTO; + } + + /** + * Método utilizado para cadastro de lista de dados. + * @param array $arrayObjDTO + * @return array + * @throws InfraException + */ + protected function cadastrarConectado($arrayObjDTO) + { + try { + $retArrayObjDTO = array(); + $objBD = new PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + foreach ($arrayObjDTO as $objDTO) { + $retArrayObjDTO[] = $objBD->cadastrar($objDTO); + } + return $retArrayObjDTO; + } catch (Exception $e) { + throw new InfraException('Erro cadastrando restrição de tramite no mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param PenUnidadeRestricaoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function prepararExcluirControlado(PenUnidadeRestricaoDTO $objDTO) + { + try { + $arrayObjPenUnidadeRestricaoDTO = array(); + $objDTO->retTodos(); + $objPenUnidadeRestricaoDTO = $this->listar($objDTO); + if ($objPenUnidadeRestricaoDTO != null) { + foreach ($objPenUnidadeRestricaoDTO as $value) { + $arrayObjPenUnidadeRestricaoDTO[] = $this->excluir($value); + } + } + return $arrayObjPenUnidadeRestricaoDTO; + } catch (Exception $e) { + throw new InfraException('Erro excluindo mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param PenUnidadeRestricaoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(PenUnidadeRestricaoDTO $objDTO) + { + try { + $objBD = new PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + 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 UnidadeDTO $objUnidadeDTO + * @return array + * @throws InfraException + */ + protected function contarConectado(PenUnidadeRestricaoDTO $objPenUnidadeDTO) + { + try { + //Valida Permissao + $objPenUnidadeBD = new PenUnidadeRestricaoBD($this->getObjInfraIBanco()); + return $objPenUnidadeBD->contar($objPenUnidadeDTO); + } catch (Exception $e) { + throw new InfraException('Erro contando mapeamento de unidades.', $e); + } + } +} diff --git a/src/rn/PendenciasEnvioTramiteRN.php b/src/rn/PendenciasEnvioTramiteRN.php new file mode 100644 index 000000000..2f6f80d67 --- /dev/null +++ b/src/rn/PendenciasEnvioTramiteRN.php @@ -0,0 +1,254 @@ +strEnderecoServico) && empty($this->strEnderecoServicoPendencias)) { + throw new InfraException("Serviço de monitoramento de pendências não pode ser iniciado devido falta de configuração de endereços de WebServices"); + } + + ModPenUtilsRN::simularLoginUnidadeRecebimento(); + $mensagemInicioMonitoramento = 'Iniciando serviço de monitoramento de envio de pendências de trâmites de processos'; + $this->gravarLogDebug($mensagemInicioMonitoramento, 0); + + do { + try { + $this->gravarLogDebug('Recuperando lista de pendências de envio do Tramita GOV.BR', 1); + $arrObjPendenciasDTO = $this->obterPendenciasEnvioTramite($parBolMonitorarPendencias); + + + foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { + $numIdTramite = $objPendenciaDTO->getNumIdentificacaoTramite(); + $strStatusTramite = $objPendenciaDTO->getStrStatus(); + $mensagemLog = ">>> Enviando pendência $numIdTramite (status $strStatusTramite) para fila de processamento"; + $this->gravarLogDebug($mensagemLog, 3); + + try { + $this->expedirPendenciaProcessamento($objPendenciaDTO, $parBolSegundoPlano); + } catch (\Exception $e) { + $this->gravarAmostraErroLogSEI($e); + $this->gravarLogDebug(InfraException::inspecionar($e)); + } + } + } catch (ModuloIncompativelException $e) { + // Sai loop de eventos para finalizar o script e subir uma nova versão atualizada + throw $e; + } catch (Exception $e) { + //Apenas registra a falha no log do sistema e reinicia o ciclo de requisição + $this->gravarAmostraErroLogSEI($e); + $this->gravarLogDebug(InfraException::inspecionar($e)); + } + + if ($parBolMonitorarPendencias) { + $this->gravarLogDebug(sprintf("Reiniciando monitoramento de pendências em %s segundos", self::TEMPO_ESPERA_REINICIALIZACAO_MONITORAMENTO), 1); + sleep(self::TEMPO_ESPERA_REINICIALIZACAO_MONITORAMENTO); + $this->carregarParametrosIntegracao(); + } + } while ($parBolMonitorarPendencias); + } catch (Exception $e) { + $this->gravarLogDebug(InfraException::inspecionar($e)); + $this->gravarAmostraErroLogSEI($e); + return self::CODIGO_EXECUCAO_ERRO; + } + + // Caso não esteja sendo realizado o monitoramente de pendências, lança exceção diretamente na página para apresentação ao usuário + if (!$parBolMonitorarPendencias) { + $this->salvarLogDebug($parBolDebug); + } + + return self::CODIGO_EXECUCAO_SUCESSO; + } + + /** + * Função para recuperar as pendências de trâmite que já foram recebidas pelo serviço de long pulling e não foram processadas com sucesso + * @param num $parNumIdTramiteRecebido + * @return [type] [description] + */ + private function obterPendenciasEnvioTramite($parBolMonitorarPendencias) + { + //Obter todos os trâmites pendentes antes de iniciar o monitoramento + $arrPendenciasRetornadas = array(); + $arrObjPendenciasDTO = array(); + + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $objPenBlocoProcessoDTO->retNumIdAtividade(); + $objPenBlocoProcessoDTO->retNumIdRepositorioDestino(); + $objPenBlocoProcessoDTO->retStrRepositorioDestino(); + $objPenBlocoProcessoDTO->retNumIdRepositorioOrigem(); + $objPenBlocoProcessoDTO->retNumIdUnidadeDestino(); + $objPenBlocoProcessoDTO->retStrUnidadeDestino(); + $objPenBlocoProcessoDTO->retNumIdUnidadeOrigem(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $objPenBlocoProcessoDTO->retNumIdUsuario(); + $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->obterPendenciasBloco($objPenBlocoProcessoDTO); + + foreach ($arrObjPenBlocoProcessoDTO as $objPenBlocoProcessoDTO) { + $objPendenciaDTO = new PendenciaDTO(); + $objPendenciaDTO->setNumIdentificacaoTramite($objPenBlocoProcessoDTO->getDblIdProtocolo()); + $objPendenciaDTO->setStrStatus($objPenBlocoProcessoDTO->getNumIdAndamento()); + $arrObjPendenciasDTO[] = $objPendenciaDTO; + } + + $this->gravarLogDebug(count($arrObjPendenciasDTO) . " pendências de trâmites identificadas", 2); + + foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { + //Captura todas as pendências e status retornadas para impedir duplicidade + $arrPendenciasRetornadas[] = sprintf("%d-%s", $objPendenciaDTO->getNumIdentificacaoTramite(), $objPendenciaDTO->getStrStatus()); + yield $objPendenciaDTO; + } + } + + /** + * Envia a pendência de trâmite para a fila de processamento do tarefas de acordo com a estratégia definida + * + * @param stdClass $objPendencia + * @return void + */ + private function expedirPendenciaProcessamento($objPendencia, $parBolSegundoPlano) + { + if ($parBolSegundoPlano && $this->servicoGearmanAtivo()) { + $this->expedirPendenciaFilaProcessamento($objPendencia); + } else { + $this->expedirPendenciaProcessamentoDireto($objPendencia); + } + } + + /** + * Processa pendência de recebimento diretamente através da chamada das funções de processamento + * + * @param stclass $objPendencia + * @return void + */ + private function expedirPendenciaProcessamentoDireto($objPendencia) + { + if (isset($objPendencia)) { + $numIDT = strval($objPendencia->getNumIdentificacaoTramite()); + $numStatus = strval($objPendencia->getStrStatus()); + $objProcessarPendenciaRN = new ProcessarPendenciasRN(); + + if (!in_array( + $numStatus, + array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE + ) + )) { + $strStatus = $objPendencia->getStrStatus(); + $this->gravarLogDebug("Situação do trâmite ($strStatus) não pode ser tratada para expedir pendências."); + } + + $objProcessarPendenciaRN->expedirBloco($numIDT); + } + } + + /** + * Envia pendência de recebimento para fila de tarefas do Gearman para processamento futuro + * + * @param stdclass $objPendencia + * @return void + */ + private function expedirPendenciaFilaProcessamento($objPendencia) + { + if (isset($objPendencia)) { + $client = new GearmanClient(); + $client->addServer($this->strGearmanServidor, $this->strGearmanPorta); + + $numIDT = strval($objPendencia->getNumIdentificacaoTramite()); + $numStatus = strval($objPendencia->getStrStatus()); + + if ($numStatus != ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO) { + $strStatus = $objPendencia->getStrStatus(); + $this->gravarLogDebug("Situação do trâmite ($strStatus) não pode ser tratada para expedir pendências."); + } + + $client->addTaskBackground('expedirBloco', $numIDT, null, $numIDT); + $client->runTasks(); + } + } + + /** + * Inicia o envio de tarefas de Barramento do PEN em novo processo separado, + * evitando o bloqueio da thread da aplicação + * + * @param int $parNumQtdeWorkers Quantidade de processos paralelos que serão iniciados + * @param boolean $parBolMonitorar Indicação se o novo processo ficará monitorando o Barramento do PEN + * @param boolean $parBolSegundoPlano Indicação se será utilizado o processamento das tarefas em segundo plano com o Gearman + * @return bool Monitoramento iniciado com sucesso + */ + public static function inicializarMonitoramentoEnvioPendencias($parNumQtdeWorkers = null, $parBolMonitorar = false, $parBolSegundoPlano = false, $parBolDebugAtivo = false, $parStrUsuarioProcesso = null) + { + $bolInicializado = false; + $parNumQtdeWorkers = min($parNumQtdeWorkers ?: self::NUMERO_PROCESSOS_MONITORAMENTO, self::MAXIMO_PROCESSOS_MONITORAMENTO); + + try { + for ($worker = 0; $worker < $parNumQtdeWorkers; $worker++) { + $strComandoIdentificacaoWorker = sprintf(self::COMANDO_IDENTIFICACAO_WORKER_ID_ENVIO, $worker); + exec($strComandoIdentificacaoWorker, $strSaida, $numCodigoResposta); + + if ($numCodigoResposta != 0) { + $strLocalizacaoScript = realpath(self::LOCALIZACAO_SCRIPT_WORKER_ENVIO); + $strPhpExec = empty(PHP_BINARY) ? "php" : PHP_BINARY; + $strPhpIni = php_ini_loaded_file(); + $strPhpIni = $strPhpIni ? "-c $strPhpIni" : ""; + $strWsdlCacheDir = ini_get('soap.wsdl_cache_dir'); + $strParametroWsdlCache = "--wsdl-cache='$strWsdlCacheDir'"; + $strIdWorker = sprintf("--worker=%02d", $worker); + $strParametroMonitorar = $parBolMonitorar ? "--monitorar" : ''; + $strParametroSegundoPlano = $parBolSegundoPlano ? "--segundo-plano" : ""; + $strParametroDebugAtivo = $parBolDebugAtivo ? "--debug" : ""; + + $strComandoMonitoramentoTarefas = sprintf( + self::COMANDO_EXECUCAO_WORKER, + $strPhpExec, // Binário do PHP utilizado no contexto de execução do script atual (ex: /usr/bin/php) + $strPhpIni, // Arquivo de configucação o PHP utilizado no contexto de execução do script atual (ex: /etc/php.ini) + $strLocalizacaoScript, // Path absoluto do script de monitoramento de tarefas do Barramento + $strIdWorker, // Identificador sequencial do processo paralelo a ser iniciado + $strParametroMonitorar, // Parâmetro para executar processo em modo de monitoramente ativo + $strParametroSegundoPlano, // Parâmetro para executar processo em segundo plano com Gearman + $strParametroDebugAtivo, // Parâmetro para executar processo em modo de debug + $strParametroWsdlCache, // Diretório de cache de wsdl utilizado no contexto de execução do script atual (ex: /tmp/) + "/dev/null" // Localização de log adicinal para registros de falhas não salvas pelo SEI no BD + ); + + shell_exec($strComandoMonitoramentoTarefas); + + // Verifica se monitoramento de tarefas foi iniciado corretamente, finalizando o laço para não + // permitir que mais de um monitoramento esteja iniciado + exec($strComandoIdentificacaoWorker, $strSaida, $numCodigoResposta); + + if ($numCodigoResposta == 0) { + break; + } + } + } + + // Confirma se existe algum worker ativo + exec(self::COMANDO_IDENTIFICACAO_WORKER_ENVIO, $strSaida, $numCodigoRespostaAtivacao); + $bolInicializado = $numCodigoRespostaAtivacao == 0; + } catch (\Exception $e) { + $strMensagem = "Falha: Não foi possível iniciar o monitoramento de tarefas Barramento Tramita GOV.BR"; + $objInfraException = new InfraException($strMensagem, $e); + throw $objInfraException; + } + + return $bolInicializado; + } +} diff --git a/src/rn/PendenciasTramiteRN.php b/src/rn/PendenciasTramiteRN.php index 66fbef47c..033f7e5ee 100755 --- a/src/rn/PendenciasTramiteRN.php +++ b/src/rn/PendenciasTramiteRN.php @@ -14,16 +14,21 @@ class PendenciasTramiteRN extends InfraRN const NUMERO_PROCESSOS_MONITORAMENTO = 10; const MAXIMO_PROCESSOS_MONITORAMENTO = 20; const COMANDO_EXECUCAO_WORKER = '%s %s %s %s %s %s %s %s > %s 2>&1 &'; - const LOCALIZACAO_SCRIPT_WORKER = DIR_SEI_WEB . "/../scripts/mod-pen/MonitoramentoTarefasPEN.php"; - const COMANDO_IDENTIFICACAO_WORKER = "ps -c ax | grep 'MonitoramentoTarefasPEN\.php' | grep -o '^[ ]*[0-9]*'"; - const COMANDO_IDENTIFICACAO_WORKER_ID = "ps -c ax | grep 'MonitoramentoTarefasPEN\.php.*--worker=%02d' | grep -o '^[ ]*[0-9]*'"; - - private $objPenDebug = null; - private $strEnderecoServico = null; - private $strEnderecoServicoPendencias = null; - private $strLocalizacaoCertificadoDigital = null; - private $strSenhaCertificadoDigital = null; - private $arrStrUltimasMensagensErro = array(); + // Envio + const LOCALIZACAO_SCRIPT_WORKER_ENVIO = DIR_SEI_WEB . "/../scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php"; + const COMANDO_IDENTIFICACAO_WORKER_ENVIO = "ps -c ax | grep 'MonitoramentoEnvioTarefasPEN\.php' | grep -o '^[ ]*[0-9]*'"; + const COMANDO_IDENTIFICACAO_WORKER_ID_ENVIO = "ps -c ax | grep 'MonitoramentoEnvioTarefasPEN\.php.*--worker=%02d' | grep -o '^[ ]*[0-9]*'"; + // Recebimento + const LOCALIZACAO_SCRIPT_WORKER = DIR_SEI_WEB . "/../scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php"; + const COMANDO_IDENTIFICACAO_WORKER = "ps -c ax | grep 'MonitoramentoRecebimentoTarefasPEN\.php' | grep -o '^[ ]*[0-9]*'"; + const COMANDO_IDENTIFICACAO_WORKER_ID = "ps -c ax | grep 'MonitoramentoRecebimentoTarefasPEN\.php.*--worker=%02d' | grep -o '^[ ]*[0-9]*'"; + + protected $objPenDebug = null; + protected $strEnderecoServico = null; + protected $strEnderecoServicoPendencias = null; + protected $strLocalizacaoCertificadoDigital = null; + protected $strSenhaCertificadoDigital = null; + protected $arrStrUltimasMensagensErro = array(); public function __construct($parStrLogTag = null) { @@ -37,7 +42,7 @@ protected function inicializarObjInfraIBanco() return BancoSEI::getInstance(); } - private function carregarParametrosIntegracao() + protected function carregarParametrosIntegracao() { $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); $this->strLocalizacaoCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "LocalizacaoCertificado"); @@ -63,7 +68,7 @@ private function carregarParametrosIntegracao() * @param boolean $parBolMonitorarPendencias Indicador para ativar a esculta de eventos do Barramento * @return int Código de resultado do processamento, sendo 0 para sucesso e 1 em caso de erros */ - public function encaminharPendencias($parBolMonitorarPendencias = false, $parBolSegundoPlano = false, $parBolDebug = false) + public function receberPendencias($parBolMonitorarPendencias = false, $parBolSegundoPlano = false, $parBolDebug = false) { try{ ini_set('max_execution_time', '0'); @@ -78,14 +83,13 @@ public function encaminharPendencias($parBolMonitorarPendencias = false, $parBol } ModPenUtilsRN::simularLoginUnidadeRecebimento(); - $mensagemInicioMonitoramento = 'Iniciando serviço de monitoramento de pendências de trâmites de processos'; + $mensagemInicioMonitoramento = 'Iniciando serviço de monitoramento de pendências de recebimento de trâmites de processos'; $this->gravarLogDebug($mensagemInicioMonitoramento, 0); do{ try { - $this->gravarLogDebug('Recuperando lista de pendências do Tramita GOV.BR', 1); - $arrObjPendenciasDTO = $this->obterPendenciasTramite($parBolMonitorarPendencias); - + $this->gravarLogDebug('Recuperando lista de pendências de recebimento do Tramita GOV.BR', 1); + $arrObjPendenciasDTO = $this->obterPendenciasRecebimentoTramite($parBolMonitorarPendencias); foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { $numIdTramite = $objPendenciaDTO->getNumIdentificacaoTramite(); @@ -94,7 +98,7 @@ public function encaminharPendencias($parBolMonitorarPendencias = false, $parBol $this->gravarLogDebug($mensagemLog, 3); try { - $this->enviarPendenciaProcessamento($objPendenciaDTO, $parBolSegundoPlano); + $this->receberPendenciaProcessamento($objPendenciaDTO, $parBolSegundoPlano); } catch (\Exception $e) { $this->gravarAmostraErroLogSEI($e); $this->gravarLogDebug(InfraException::inspecionar($e)); @@ -124,6 +128,13 @@ public function encaminharPendencias($parBolMonitorarPendencias = false, $parBol return self::CODIGO_EXECUCAO_ERRO; } + try { + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcessoRN->validarBlocosEmAndamento(); + } catch(Exception $e) { + $this->gravarLogDebug(InfraException::inspecionar($e)); + } + // Caso não esteja sendo realizado o monitoramente de pendências, lança exceção diretamente na página para apresentação ao usuário if(!$parBolMonitorarPendencias){ $this->salvarLogDebug($parBolDebug); @@ -132,7 +143,6 @@ public function encaminharPendencias($parBolMonitorarPendencias = false, $parBol return self::CODIGO_EXECUCAO_SUCESSO; } - /** * Valida a correta parametrização do certificado digital * @@ -158,17 +168,17 @@ private function validarCertificado() * * @return void */ - private function salvarLogDebug($parBolDebugAtivado) + protected function salvarLogDebug($parBolDebugAtivado) { if($parBolDebugAtivado){ $strTextoDebug = InfraDebug::getInstance()->getStrDebug(); if(!InfraString::isBolVazia($strTextoDebug)){ - LogSEI::getInstance()->gravar(utf8_decode($strTextoDebug), LogSEI::$DEBUG); + LogSEI::getInstance()->gravar(mb_convert_encoding($strTextoDebug, 'ISO-8859-1', 'UTF-8'), LogSEI::$DEBUG); } } } - private function configurarRequisicao() + protected function configurarRequisicao() { $bolEmProducao = boolval(ConfiguracaoSEI::getInstance()->getValor('SEI', 'Producao')); $curl = curl_init($this->strEnderecoServicoPendencias); @@ -188,70 +198,44 @@ private function configurarRequisicao() } - /** - * Função para recuperar as pendências de trâmite que já foram recebidas pelo serviço de long pulling e não foram processadas com sucesso - * @param num $parNumIdTramiteRecebido - * @return [type] [description] - */ - private function obterPendenciasTramite($parBolMonitorarPendencias) - { - //Obter todos os trâmites pendentes antes de iniciar o monitoramento - $arrPendenciasRetornadas = array(); - $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $arrObjPendenciasDTO = $objProcessoEletronicoRN->listarPendencias(self::RECUPERAR_TODAS_PENDENCIAS) ?: array(); - shuffle($arrObjPendenciasDTO); - - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(); - $objPenLoteProcedimentoDTO->retNumIdLote(); - $objPenLoteProcedimentoDTO->retDblIdProcedimento(); - $objPenLoteProcedimentoDTO->retNumIdAndamento(); - $objPenLoteProcedimentoDTO->retNumIdAtividade(); - $objPenLoteProcedimentoDTO->retNumIdRepositorioDestino(); - $objPenLoteProcedimentoDTO->retStrRepositorioDestino(); - $objPenLoteProcedimentoDTO->retNumIdRepositorioOrigem(); - $objPenLoteProcedimentoDTO->retNumIdUnidadeDestino(); - $objPenLoteProcedimentoDTO->retStrUnidadeDestino(); - $objPenLoteProcedimentoDTO->retNumIdUnidadeOrigem(); - $objPenLoteProcedimentoDTO->retNumIdUsuario(); - $objPenLoteProcedimentoDTO->retStrProcedimentoFormatado(); - - $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); - - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $arrObjPenLoteProcedimentoDTO = $objPenLoteProcedimentoRN->obterPendenciasLote($objPenLoteProcedimentoDTO); - - if (isset($arrObjPendenciasDTO)){ - if (!is_array($arrObjPendenciasDTO)){ + /** + * Função para recuperar as pendências de trâmite que já foram recebidas pelo serviço de long pulling e não foram processadas com sucesso + * @param num $parNumIdTramiteRecebido + * @return [type] [description] + */ + private function obterPendenciasRecebimentoTramite($parBolMonitorarPendencias) + { + //Obter todos os trâmites pendentes antes de iniciar o monitoramento + $arrPendenciasRetornadas = array(); + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $arrObjPendenciasDTO = $objProcessoEletronicoRN->listarPendencias(self::RECUPERAR_TODAS_PENDENCIAS) ?: array(); + shuffle($arrObjPendenciasDTO); + + if (isset($arrObjPendenciasDTO)) { + if (!is_array($arrObjPendenciasDTO)) { $arrObjPendenciasDTO = array(); } - } - - foreach ($arrObjPenLoteProcedimentoDTO as $objPenLoteProcedimentoDTO) { - $objPendenciaDTO = new PendenciaDTO(); - $objPendenciaDTO->setNumIdentificacaoTramite($objPenLoteProcedimentoDTO->getDblIdProcedimento()); - $objPendenciaDTO->setStrStatus($objPenLoteProcedimentoDTO->getNumIdAndamento()); - $arrObjPendenciasDTO[] = $objPendenciaDTO; - } + } - $this->gravarLogDebug(count($arrObjPendenciasDTO) . " pendências de trâmites identificadas", 2); + $this->gravarLogDebug(count($arrObjPendenciasDTO) . " pendências de trâmites identificadas", 2); foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { - //Captura todas as pendências e status retornadas para impedir duplicidade - $arrPendenciasRetornadas[] = sprintf("%d-%s", $objPendenciaDTO->getNumIdentificacaoTramite(), $objPendenciaDTO->getStrStatus()); - yield $objPendenciaDTO; + //Captura todas as pendências e status retornadas para impedir duplicidade + $arrPendenciasRetornadas[] = sprintf("%d-%s", $objPendenciaDTO->getNumIdentificacaoTramite(), $objPendenciaDTO->getStrStatus()); + yield $objPendenciaDTO; } - if($parBolMonitorarPendencias && $this->servicoMonitoramentoPendenciasAtivo()){ - //Obtém demais pendências do serviço de long polling - $bolEncontrouPendencia = false; - $numUltimoIdTramiteRecebido = 0; + if ($parBolMonitorarPendencias && $this->servicoMonitoramentoPendenciasAtivo()) { + //Obtém demais pendências do serviço de long polling + $bolEncontrouPendencia = false; + $numUltimoIdTramiteRecebido = 0; - $arrObjPendenciasDTONovas = array(); - $this->gravarLogDebug("Iniciando monitoramento no serviço de pendências (long polling)", 2); + $arrObjPendenciasDTONovas = array(); + $this->gravarLogDebug("Iniciando monitoramento no serviço de pendências (long polling)", 2); do { - $curl = $this->configurarRequisicao(); - try{ + $curl = $this->configurarRequisicao(); + try { $arrObjPendenciasDTONovas = array_unique($arrObjPendenciasDTONovas); curl_setopt($curl, CURLOPT_URL, $this->strEnderecoServicoPendencias . "?idTramiteDaPendenciaRecebida=" . $numUltimoIdTramiteRecebido); @@ -259,64 +243,64 @@ private function obterPendenciasTramite($parBolMonitorarPendencias) // ou até o lançamento da exceção de timeout definido pela constante TIMEOUT_SERVICO_PENDENCIAS $this->gravarLogDebug(sprintf("Executando requisição de pendência com IDT %d como offset", $numUltimoIdTramiteRecebido), 2); $strResultadoJSON = curl_exec($curl); - if(curl_errno($curl)) { - if (curl_errno($curl) != 28){ + if (curl_errno($curl)) { + if (curl_errno($curl) != 28) { throw new InfraException("Erro na requisição do serviço de monitoramento de pendências. Curl: " . curl_error($curl)); } - $bolEncontrouPendencia = false; - $this->gravarLogDebug(sprintf("Timeout de monitoramento de %d segundos do serviço de pendências alcançado", self::TIMEOUT_SERVICO_PENDENCIAS), 2); + $bolEncontrouPendencia = false; + $this->gravarLogDebug(sprintf("Timeout de monitoramento de %d segundos do serviço de pendências alcançado", self::TIMEOUT_SERVICO_PENDENCIAS), 2); } - if(!InfraString::isBolVazia($strResultadoJSON)) { - $strResultadoJSON = json_decode($strResultadoJSON); - - if(isset($strResultadoJSON->encontrou) && $strResultadoJSON->encontrou) { - $bolEncontrouPendencia = true; - $numUltimoIdTramiteRecebido = $strResultadoJSON->IDT; - $strUltimoStatusRecebido = $strResultadoJSON->status; - $strChavePendencia = sprintf("%d-%s", $strResultadoJSON->IDT, $strResultadoJSON->status); - $objPendenciaDTO = new PendenciaDTO(); - $objPendenciaDTO->setNumIdentificacaoTramite($strResultadoJSON->IDT); - $objPendenciaDTO->setStrStatus($strResultadoJSON->status); - - //Não processo novamente as pendências já capturadas na consulta anterior ($objProcessoEletronicoRN->listarPendencias) - //Considera somente as novas identificadas pelo serviço de monitoramento - if(!in_array($strChavePendencia, $arrPendenciasRetornadas)){ + if (!InfraString::isBolVazia($strResultadoJSON)) { + $strResultadoJSON = json_decode($strResultadoJSON); + + if (isset($strResultadoJSON->encontrou) && $strResultadoJSON->encontrou) { + $bolEncontrouPendencia = true; + $numUltimoIdTramiteRecebido = $strResultadoJSON->IDT; + $strUltimoStatusRecebido = $strResultadoJSON->status; + $strChavePendencia = sprintf("%d-%s", $strResultadoJSON->IDT, $strResultadoJSON->status); + $objPendenciaDTO = new PendenciaDTO(); + $objPendenciaDTO->setNumIdentificacaoTramite($strResultadoJSON->IDT); + $objPendenciaDTO->setStrStatus($strResultadoJSON->status); + + //Não processo novamente as pendências já capturadas na consulta anterior ($objProcessoEletronicoRN->listarPendencias) + //Considera somente as novas identificadas pelo serviço de monitoramento + if (!in_array($strChavePendencia, $arrPendenciasRetornadas)) { $arrObjPendenciasDTONovas[] = $strChavePendencia; yield $objPendenciaDTO; - - } elseif(in_array($strChavePendencia, $arrObjPendenciasDTONovas)) { - // Sleep adicionado para minimizar problema do serviço de pendência que retorna o mesmo código e status - // inúmeras vezes por causa de erro ainda não tratado - $mensagemErro = sprintf("Pendência de trâmite (IDT: %d / status: %s) enviado em duplicidade pelo serviço de monitoramento de pendências do Tramita GOV.BR", - $numUltimoIdTramiteRecebido, $strUltimoStatusRecebido); + } elseif (in_array($strChavePendencia, $arrObjPendenciasDTONovas)) { + // Sleep adicionado para minimizar problema do serviço de pendência que retorna o mesmo código e status + // inúmeras vezes por causa de erro ainda não tratado + $mensagemErro = sprintf( + "Pendência de trâmite (IDT: %d / status: %s) enviado em duplicidade pelo serviço de monitoramento de pendências do Tramita GOV.BR", + $numUltimoIdTramiteRecebido, + $strUltimoStatusRecebido + ); $this->gravarLogDebug($mensagemErro, 2); throw new InfraException($mensagemErro); } else { - $arrObjPendenciasDTONovas[] = $strChavePendencia; - $this->gravarLogDebug(sprintf("IDT %d desconsiderado por já ter sido retornado na consulta inicial", $numUltimoIdTramiteRecebido), 2); + $arrObjPendenciasDTONovas[] = $strChavePendencia; + $this->gravarLogDebug(sprintf("IDT %d desconsiderado por já ter sido retornado na consulta inicial", $numUltimoIdTramiteRecebido), 2); } } } } catch (Exception $e) { - $bolEncontrouPendencia = false; - throw new InfraException("Erro processando monitoramento de pendências de trâmite de processos", $e); - }finally{ - curl_close($curl); + $bolEncontrouPendencia = false; + throw new InfraException("Erro processando monitoramento de pendências de trâmite de processos", $e); + } finally { + curl_close($curl); } - - } while($bolEncontrouPendencia); + } while ($bolEncontrouPendencia); } } - /** * Verifica se gearman se encontra configurado e ativo para receber tarefas na fila * * @return bool */ - private function servicoGearmanAtivo() + protected function servicoGearmanAtivo() { $bolAtivo = false; $strMensagemErro = "Não foi possível conectar ao servidor Gearman (%s, %s). Erro: %s"; @@ -351,7 +335,7 @@ private function servicoGearmanAtivo() * * @return bool */ - private function servicoMonitoramentoPendenciasAtivo() + protected function servicoMonitoramentoPendenciasAtivo() { $bolMonitoramentoAtivo = !empty($this->strEnderecoServicoPendencias); return $bolMonitoramentoAtivo; @@ -359,40 +343,34 @@ private function servicoMonitoramentoPendenciasAtivo() /** - * Envia a pendência de trâmite para a fila de processamento do tarefas de acordo com a estratégia definida + * Recebe a pendência de trâmite para a fila de processamento do tarefas de acordo com a estratégia definida * * @param stdClass $objPendencia * @return void */ - private function enviarPendenciaProcessamento($objPendencia, $parBolSegundoPlano) + private function receberPendenciaProcessamento($objPendencia, $parBolSegundoPlano) { if($parBolSegundoPlano && $this->servicoGearmanAtivo()){ - $this->enviarPendenciaFilaProcessamento($objPendencia); + $this->receberPendenciaFilaProcessamento($objPendencia); } else { - $this->enviarPendenciaProcessamentoDireto($objPendencia); + $this->receberPendenciaProcessamentoDireto($objPendencia); } } - /** * Processa pendência de recebimento diretamente através da chamada das funções de processamento * * @param stclass $objPendencia * @return void */ - private function enviarPendenciaProcessamentoDireto($objPendencia) + private function receberPendenciaProcessamentoDireto($objPendencia) { if(isset($objPendencia)) { $numIDT = strval($objPendencia->getNumIdentificacaoTramite()); $numStatus = strval($objPendencia->getStrStatus()); $objProcessarPendenciaRN = new ProcessarPendenciasRN(); - switch ($numStatus) { - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO: - $objProcessarPendenciaRN->expedirLote($numIDT); - $objProcessarPendenciaRN->enviarComponenteDigital($numIDT); - break; - + switch ($numStatus) { case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE: case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO: case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO: @@ -421,7 +399,7 @@ private function enviarPendenciaProcessamentoDireto($objPendencia) * @param stdclass $objPendencia * @return void */ - private function enviarPendenciaFilaProcessamento($objPendencia) + private function receberPendenciaFilaProcessamento($objPendencia) { if(isset($objPendencia)) { $client = new GearmanClient(); @@ -431,11 +409,6 @@ private function enviarPendenciaFilaProcessamento($objPendencia) $numStatus = strval($objPendencia->getStrStatus()); switch ($numStatus) { - - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO: - $client->addTaskBackground('expedirLote', $numIDT, null, $numIDT); - break; - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE: case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO: case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO: @@ -459,7 +432,7 @@ private function enviarPendenciaFilaProcessamento($objPendencia) } } - private function gravarLogDebug($parStrMensagem, $parNumIdentacao = 0, $parBolLogTempoProcessamento = false) + protected function gravarLogDebug($parStrMensagem, $parNumIdentacao = 0, $parBolLogTempoProcessamento = false) { $this->objPenDebug->gravar($parStrMensagem, $parNumIdentacao, $parBolLogTempoProcessamento); } @@ -471,7 +444,7 @@ private function gravarLogDebug($parStrMensagem, $parNumIdentacao = 0, $parBolLo * @param int $numTempoRegistroErro Tempo mínimo para novo registro de erro nos logs do sistema * @return void */ - private function gravarAmostraErroLogSEI($parObjException, $strTipoLog = "E") + protected function gravarAmostraErroLogSEI($parObjException, $strTipoLog = "E") { if(!is_null($parObjException)){ $strMensagemErro = InfraException::inspecionar($parObjException); @@ -503,7 +476,7 @@ private function gravarAmostraErroLogSEI($parObjException, $strTipoLog = "E") * @param boolean $parBolSegundoPlano Indicação se será utilizado o processamento das tarefas em segundo plano com o Gearman * @return bool Monitoramento iniciado com sucesso */ - public static function inicializarMonitoramentoPendencias($parNumQtdeWorkers = null, $parBolMonitorar = false, $parBolSegundoPlano = false, $parBolDebugAtivo = false, $parStrUsuarioProcesso = null) + public static function inicializarMonitoramentoRecebimentoPendencias($parNumQtdeWorkers = null, $parBolMonitorar = false, $parBolSegundoPlano = false, $parBolDebugAtivo = false, $parStrUsuarioProcesso = null) { $bolInicializado = false; $parNumQtdeWorkers = min($parNumQtdeWorkers ?: self::NUMERO_PROCESSOS_MONITORAMENTO, self::MAXIMO_PROCESSOS_MONITORAMENTO); diff --git a/src/rn/ProcessarPendenciasRN.php b/src/rn/ProcessarPendenciasRN.php index b58272e9f..79530de77 100755 --- a/src/rn/ProcessarPendenciasRN.php +++ b/src/rn/ProcessarPendenciasRN.php @@ -240,83 +240,84 @@ public function enviarReciboTramiteProcesso($idTramite) } /** - * Processa a mensagem de pendência de Envio de Processo - * - * @param object $idProcedimento Contexto com informações para processamento da tarefa - * @return void - */ - public function expedirLote($idProcedimento) - { + * Processa a mensagem de pendência de Envio de Processo + * + * @param object $idProcedimento Contexto com informações para processamento da tarefa + * @return void + */ + public function expedirBloco($idProcedimento) + { try { - - $this->gravarLogDebug("Processando envio de protocolo [expedirProcedimento] com IDProcedimento " . $idProcedimento, 0, true); - $numTempoInicialEnvio = microtime(true); - - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(); - $objPenLoteProcedimentoDTO->retNumIdRepositorioOrigem(); - $objPenLoteProcedimentoDTO->retNumIdUnidadeOrigem(); - $objPenLoteProcedimentoDTO->retNumIdRepositorioDestino(); - $objPenLoteProcedimentoDTO->retStrRepositorioDestino(); - $objPenLoteProcedimentoDTO->retNumIdUnidadeDestino(); - $objPenLoteProcedimentoDTO->retStrUnidadeDestino(); - $objPenLoteProcedimentoDTO->retDblIdProcedimento(); - $objPenLoteProcedimentoDTO->retNumIdLote(); - $objPenLoteProcedimentoDTO->retNumIdAtividade(); - $objPenLoteProcedimentoDTO->retNumIdUnidade(); - $objPenLoteProcedimentoDTO->retNumTentativas(); - $objPenLoteProcedimentoDTO->setDblIdProcedimento(intval($idProcedimento)); - $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); - - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - $objPenLoteProcedimentoDTO = $objPenLoteProcedimentoRN->consultarLoteProcedimento($objPenLoteProcedimentoDTO); - - if(!is_null($objPenLoteProcedimentoDTO)){ - - // Ajuste na variável global $_SERVER['HTTPS'] para considerar a mesma configuração definida para o SEI - // e evitar erros na rotina validaHttps quando em execução por linha de comando + $this->gravarLogDebug("Processando envio de protocolo [expedirProcedimento] com IDProcedimento " . $idProcedimento, 0, true); + $numTempoInicialEnvio = microtime(true); + + $objPenBlocoProcedimentoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcedimentoDTO->retNumIdRepositorioOrigem(); + $objPenBlocoProcedimentoDTO->retNumIdUnidadeOrigem(); + $objPenBlocoProcedimentoDTO->retNumIdRepositorioDestino(); + $objPenBlocoProcedimentoDTO->retStrRepositorioDestino(); + $objPenBlocoProcedimentoDTO->retNumIdUnidadeDestino(); + $objPenBlocoProcedimentoDTO->retStrUnidadeDestino(); + $objPenBlocoProcedimentoDTO->retDblIdProtocolo(); + $objPenBlocoProcedimentoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcedimentoDTO->retNumIdAtividade(); + $objPenBlocoProcedimentoDTO->retNumIdBloco(); + $objPenBlocoProcedimentoDTO->retNumIdUnidade(); + $objPenBlocoProcedimentoDTO->retNumTentativas(); + $objPenBlocoProcedimentoDTO->setDblIdProtocolo(intval($idProcedimento)); + $objPenBlocoProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); + $objPenBlocoProcedimentoDTO->setNumMaxRegistrosRetorno(1); + + $objPenBlocoProcedimentoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcedimentoDTO = $objPenBlocoProcedimentoRN->consultar($objPenBlocoProcedimentoDTO); + + if (!is_null($objPenBlocoProcedimentoDTO)) { + + // Ajuste na variável global $_SERVER['HTTPS'] para considerar a mesma configuração definida para o SEI + // e evitar erros na rotina validaHttps quando em execução por linha de comando if (!isset($_SERVER['HTTP_USER_AGENT'])) { - $bolHttps = ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'https'); - $_SERVER['HTTPS'] = $bolHttps ? "on" : null; + $bolHttps = ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'https'); + $_SERVER['HTTPS'] = $bolHttps ? "on" : null; } - //Registra tentativa de envio e cancela o trâmite caso ultrapasse os valores permitidos - $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); - $numTentativasErroMaximo = $objConfiguracaoModPEN->getValor("PEN", "NumeroTentativasErro", false, ProcessoEletronicoRN::WS_TENTATIVAS_ERRO); - $numTentativasErroMaximo = (is_numeric($numTentativasErroMaximo)) ? intval($numTentativasErroMaximo) : ProcessoEletronicoRN::WS_TENTATIVAS_ERRO; - $numTentativasProcesso = $objPenLoteProcedimentoDTO->getNumTentativas() ?: 0; - - if($numTentativasErroMaximo >= $numTentativasProcesso + 1){ - $objPenLoteProcedimentoRN->registrarTentativaEnvio($objPenLoteProcedimentoDTO); - - $objExpedirProcedimentoDTO = new ExpedirProcedimentoDTO(); - $objExpedirProcedimentoDTO->setNumIdRepositorioOrigem($objPenLoteProcedimentoDTO->getNumIdRepositorioOrigem()); - $objExpedirProcedimentoDTO->setNumIdUnidadeOrigem($objPenLoteProcedimentoDTO->getNumIdUnidadeOrigem()); - - $objExpedirProcedimentoDTO->setNumIdRepositorioDestino($objPenLoteProcedimentoDTO->getNumIdRepositorioDestino()); - $objExpedirProcedimentoDTO->setStrRepositorioDestino($objPenLoteProcedimentoDTO->getStrRepositorioDestino()); - $objExpedirProcedimentoDTO->setNumIdUnidadeDestino($objPenLoteProcedimentoDTO->getNumIdUnidadeDestino()); - $objExpedirProcedimentoDTO->setStrUnidadeDestino($objPenLoteProcedimentoDTO->getStrUnidadeDestino()); - $objExpedirProcedimentoDTO->setArrIdProcessoApensado(null); - $objExpedirProcedimentoDTO->setBolSinUrgente(false); - $objExpedirProcedimentoDTO->setDblIdProcedimento($objPenLoteProcedimentoDTO->getDblIdProcedimento()); - $objExpedirProcedimentoDTO->setNumIdMotivoUrgencia(null); - $objExpedirProcedimentoDTO->setBolSinProcessamentoEmLote(true); - $objExpedirProcedimentoDTO->setNumIdLote($objPenLoteProcedimentoDTO->getNumIdLote()); - $objExpedirProcedimentoDTO->setNumIdAtividade($objPenLoteProcedimentoDTO->getNumIdAtividade()); - $objExpedirProcedimentoDTO->setNumIdUnidade($objPenLoteProcedimentoDTO->getNumIdUnidade()); - - $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); - $objExpedirProcedimentoRN->expedirProcedimento($objExpedirProcedimentoDTO); - - $numTempoTotalEnvio = round(microtime(true) - $numTempoInicialEnvio, 2); - $this->gravarLogDebug("Finalizado o envio de protocolo com IDProcedimento $numIDT(Tempo total: {$numTempoTotalEnvio}s)", 0, true); - + //Registra tentativa de envio e cancela o trâmite caso ultrapasse os valores permitidos + $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); + $numTentativasErroMaximo = $objConfiguracaoModPEN->getValor("PEN", "NumeroTentativasErro", false, ProcessoEletronicoRN::WS_TENTATIVAS_ERRO); + $numTentativasErroMaximo = (is_numeric($numTentativasErroMaximo)) ? intval($numTentativasErroMaximo) : ProcessoEletronicoRN::WS_TENTATIVAS_ERRO; + $numTentativasProcesso = $objPenBlocoProcedimentoDTO->getNumTentativas() ?: 0; + + if ($numTentativasErroMaximo >= $numTentativasProcesso + 1) { + $objPenBlocoProcedimentoRN->registrarTentativaEnvio($objPenBlocoProcedimentoDTO); + + $objExpedirProcedimentoDTO = new ExpedirProcedimentoDTO(); + $objExpedirProcedimentoDTO->setNumIdRepositorioOrigem($objPenBlocoProcedimentoDTO->getNumIdRepositorioOrigem()); + $objExpedirProcedimentoDTO->setNumIdUnidadeOrigem($objPenBlocoProcedimentoDTO->getNumIdUnidadeOrigem()); + + $objExpedirProcedimentoDTO->setNumIdRepositorioDestino($objPenBlocoProcedimentoDTO->getNumIdRepositorioDestino()); + $objExpedirProcedimentoDTO->setStrRepositorioDestino($objPenBlocoProcedimentoDTO->getStrRepositorioDestino()); + $objExpedirProcedimentoDTO->setNumIdUnidadeDestino($objPenBlocoProcedimentoDTO->getNumIdUnidadeDestino()); + $objExpedirProcedimentoDTO->setStrUnidadeDestino($objPenBlocoProcedimentoDTO->getStrUnidadeDestino()); + $objExpedirProcedimentoDTO->setArrIdProcessoApensado(null); + $objExpedirProcedimentoDTO->setBolSinUrgente(false); + $objExpedirProcedimentoDTO->setDblIdProcedimento($objPenBlocoProcedimentoDTO->getDblIdProtocolo()); + $objExpedirProcedimentoDTO->setNumIdMotivoUrgencia(null); + $objExpedirProcedimentoDTO->setBolSinProcessamentoEmBloco(true); + $objExpedirProcedimentoDTO->setNumIdBloco($objPenBlocoProcedimentoDTO->getNumIdBlocoProcesso()); + $objExpedirProcedimentoDTO->setNumIdAtividade($objPenBlocoProcedimentoDTO->getNumIdAtividade()); + $objExpedirProcedimentoDTO->setNumIdUnidade($objPenBlocoProcedimentoDTO->getNumIdUnidade()); + + $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); + $objExpedirProcedimentoRN->expedirProcedimento($objExpedirProcedimentoDTO); + + $numIDT = $objPenBlocoProcedimentoDTO->getDblIdProtocolo(); + $numTempoTotalEnvio = round(microtime(true) - $numTempoInicialEnvio, 2); + $this->gravarLogDebug("Finalizado o envio de protocolo com IDProcedimento $numIDT(Tempo total: {$numTempoTotalEnvio}s)", 0, true); } else { - $objPenLoteProcedimentoRN->desbloquearProcessoLote($objPenLoteProcedimentoDTO->getDblIdProcedimento()); + $objPenBlocoProcedimentoRN->desbloquearProcessoBloco($objPenBlocoProcedimentoDTO->getDblIdProtocolo()); } } } catch (\Exception $e) { - throw new InfraException('Falha ao expedir processso em lote.', $e); + throw new InfraException('Falha ao expedir processso em bloco.', $e); } } @@ -350,8 +351,8 @@ private function configurarCallbacks() $this->enviarReciboTramiteProcesso($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("expedirLote", function($job) { - $this->expedirLote($job->workload()); + $this->objGearmanWorker->addFunction("expedirBloco", function($job) { + $this->expedirBloco($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); } diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index cc4d8586a..56a38442f 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -198,7 +198,7 @@ public function consultarRepositoriosDeEstruturas($numIdentificacaoDoRepositorio if($repositorio->id == $numIdentificacaoDoRepositorioDeEstruturas){ $objRepositorioDTO = new RepositorioDTO(); $objRepositorioDTO->setNumId($repositorio->id); - $objRepositorioDTO->setStrNome(utf8_decode($repositorio->nome)); + $objRepositorioDTO->setStrNome(mb_convert_encoding($repositorio->nome, 'ISO-8859-1', 'UTF-8')); $objRepositorioDTO->setBolAtivo($repositorio->ativo); } } @@ -238,7 +238,7 @@ public function listarRepositoriosDeEstruturas() foreach ($result->repositoriosEncontrados->repositorio as $repositorio) { $item = new RepositorioDTO(); $item->setNumId($repositorio->id); - $item->setStrNome(utf8_decode($repositorio->nome)); + $item->setStrNome(mb_convert_encoding($repositorio->nome, 'ISO-8859-1', 'UTF-8')); $item->setBolAtivo($repositorio->ativo); $arrObjRepositorioDTO[] = $item; } @@ -261,54 +261,51 @@ public function listarRepositoriosDeEstruturas() * @throws InfraException */ public function consultarEstrutura($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura, $bolRetornoRaw = false) - { + { try { + $parametros = new stdClass(); + $parametros->filtroDeEstruturas = new stdClass(); + $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; + $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = $numeroDeIdentificacaoDaEstrutura; + $parametros->filtroDeEstruturas->apenasAtivas = false; - $parametros = new stdClass(); - $parametros->filtroDeEstruturas = new stdClass(); - $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = $numeroDeIdentificacaoDaEstrutura; - $parametros->filtroDeEstruturas->apenasAtivas = false; - - $result = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarEstruturas($parametros); - }); + $result = $this->tentarNovamenteSobErroHTTP(function ($objPenWs) use ($parametros) { + return $objPenWs->consultarEstruturas($parametros); + }); if ($result->estruturasEncontradas->totalDeRegistros == 1) { $arrObjEstrutura = is_array($result->estruturasEncontradas->estrutura) ? $result->estruturasEncontradas->estrutura : array($result->estruturasEncontradas->estrutura); $objEstrutura = current($arrObjEstrutura); - $objEstrutura->nome = utf8_decode($objEstrutura->nome); - $objEstrutura->sigla = utf8_decode($objEstrutura->sigla); + $objEstrutura->nome = mb_convert_encoding($objEstrutura->nome, 'ISO-8859-1', 'UTF-8'); + $objEstrutura->sigla = mb_convert_encoding($objEstrutura->sigla, 'ISO-8859-1', 'UTF-8'); if ($bolRetornoRaw !== false) { if (isset($objEstrutura->hierarquia) && isset($objEstrutura->hierarquia->nivel)) { if (!is_array($objEstrutura->hierarquia->nivel)) { - $objEstrutura->hierarquia->nivel = array($objEstrutura->hierarquia->nivel); + $objEstrutura->hierarquia->nivel = array($objEstrutura->hierarquia->nivel); } foreach ($objEstrutura->hierarquia->nivel as &$objNivel) { - $objNivel->nome = utf8_decode($objNivel->nome); + $objNivel->nome = mb_convert_encoding($objNivel->nome, 'ISO-8859-1', 'UTF-8'); } } - return $objEstrutura; - } - else { - $objEstruturaDTO = new EstruturaDTO(); - $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($objEstrutura->numeroDeIdentificacaoDaEstrutura); - $objEstruturaDTO->setStrNome($objEstrutura->nome); - $objEstruturaDTO->setStrSigla($objEstrutura->sigla); - $objEstruturaDTO->setBolAtivo($objEstrutura->ativo); - $objEstruturaDTO->setBolAptoParaReceberTramites($objEstrutura->aptoParaReceberTramites); - $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($objEstrutura->codigoNoOrgaoEntidade); - return $objEstruturaDTO; + return $objEstrutura; + } else { + $objEstruturaDTO = new EstruturaDTO(); + $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($objEstrutura->numeroDeIdentificacaoDaEstrutura); + $objEstruturaDTO->setStrNome($objEstrutura->nome); + $objEstruturaDTO->setStrSigla($objEstrutura->sigla); + $objEstruturaDTO->setBolAtivo($objEstrutura->ativo); + $objEstruturaDTO->setBolAptoParaReceberTramites($objEstrutura->aptoParaReceberTramites); + $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($objEstrutura->codigoNoOrgaoEntidade); + return $objEstruturaDTO; } } - } - catch (Exception $e) { - $mensagem = "Falha na obtenção de unidades externas"; - $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - throw new InfraException($mensagem, $e, $detalhes); + } catch (Exception $e) { + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } } @@ -323,31 +320,25 @@ public function consultarEstrutura($idRepositorioEstrutura, $numeroDeIdentificac public function consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura = null, $bolRetornoRaw = false) { try { - $parametros = new stdClass(); - $parametros->filtroDeEstruturasPorEstruturaPai = new stdClass(); - $parametros->filtroDeEstruturasPorEstruturaPai->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; - - if(!is_null($numeroDeIdentificacaoDaEstrutura)){ - $parametros->filtroDeEstruturasPorEstruturaPai->numeroDeIdentificacaoDaEstrutura = $numeroDeIdentificacaoDaEstrutura; + $estruturasUnidades = null; + if (is_null($numeroDeIdentificacaoDaEstrutura)) { + $estruturasUnidades = $this->validarRestricaoUnidadesCadastradas($idRepositorioEstrutura); } - $parametros->filtroDeEstruturasPorEstruturaPai->apenasAtivas = true; - $result = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarEstruturasPorEstruturaPai($parametros); - }); - - $estruturasUnidades = is_array($result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura) ? $result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura : array($result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura); + if (is_null($estruturasUnidades)) { + $estruturasUnidades = $this->buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura); + } - //Cria um array com os nomes da unidades para realizar a ordenação das mesmas - $nomesUnidades = []; + //Cria um array com os nomes da unidades para realizar a ordenação das mesmas + $nomesUnidades = []; foreach ($estruturasUnidades as $estrutura) { $nomesUnidades[] = $estrutura->nome; } - //Ordena as unidades pelo nome - array_multisort($nomesUnidades, SORT_ASC, $estruturasUnidades); + //Ordena as unidades pelo nome + array_multisort($nomesUnidades, SORT_ASC, $estruturasUnidades); - return $estruturasUnidades; + return $estruturasUnidades; } catch (Exception $e) { $mensagem = "Falha na obtenção de unidades externas"; @@ -356,6 +347,98 @@ public function consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $num } } + /** + * Verifica se o repositório de estruturas possui limitação de repositórios/unidades mapeadas + * + * @param $idRepositorioEstrutura + * @return array|null + */ + private function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) + { + //Verificar limitação de repositórios/unidades mapeadas + $arrEstruturasCadastradas = null; + try { + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->retNumIdUnidadeRH(); + $objUnidadeDTO->retNumIdUnidade(); + $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); + $objPenUnidadeRestricaoDTO->setNumIdUnidade($objUnidadeDTO->getNumIdUnidade()); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($objUnidadeDTO->getNumIdUnidadeRH()); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRestricao($idRepositorioEstrutura); + $objPenUnidadeRestricaoDTO->setNumIdUnidadeRHRestricao(null, InfraDTO::$OPER_DIFERENTE); + $objPenUnidadeRestricaoDTO->retNumIdUnidadeRHRestricao(); + $objPenUnidadeRestricaoDTO->retStrNomeUnidadeRHRestricao(); + + $objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN(); + $restricaoCadastrada = $objPenUnidadeRestricaoRN->contar($objPenUnidadeRestricaoDTO); + $restricaoCadastrada = $restricaoCadastrada > 0; + + if ($restricaoCadastrada) { + $arrEstruturasCadastradas = array(); + $arrEstruturas = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); + $parametros = new stdClass(); + $parametros->filtroDeEstruturas = new stdClass(); + $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; + $parametros->filtroDeEstruturas->apenasAtivas = true; + foreach ($arrEstruturas as $unidade) { + if ($unidade->getNumIdUnidadeRHRestricao() != null) { + $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = $unidade->getNumIdUnidadeRHRestricao(); + $result = $this->tentarNovamenteSobErroHTTP(function ($objPenWs) use ($parametros) { + return $objPenWs->consultarEstruturas($parametros); + }); + + if ($result->estruturasEncontradas->totalDeRegistros == 0) { + continue; + } + + if ($result->estruturasEncontradas->totalDeRegistros > 1) { + foreach ($result->estruturasEncontradas->estrutura as $value) { + $arrEstruturasCadastradas[] = $value; + } + } else { + $arrEstruturasCadastradas[] = $result->estruturasEncontradas->estrutura; + } + } + } + } + } catch (Exception $e) { + } + + return $arrEstruturasCadastradas; + } + + /** + * Busca estruturas por estrutura pai + * + * @param $idRepositorioEstrutura + * @param null|string $numeroDeIdentificacaoDaEstrutura + * @return array + */ + private function buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura = null) + { + $parametros = new stdClass(); + $parametros->filtroDeEstruturasPorEstruturaPai = new stdClass(); + $parametros->filtroDeEstruturasPorEstruturaPai->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; + + if(!is_null($numeroDeIdentificacaoDaEstrutura)){ + $parametros->filtroDeEstruturasPorEstruturaPai->numeroDeIdentificacaoDaEstrutura = $numeroDeIdentificacaoDaEstrutura; + } + + $parametros->filtroDeEstruturasPorEstruturaPai->apenasAtivas = true; + $result = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { + return $objPenWs->consultarEstruturasPorEstruturaPai($parametros); + }); + + return is_array($result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura) + ? $result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura + : array($result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura); + } + public function listarEstruturas($idRepositorioEstrutura, $nome = '', $numeroDeIdentificacaoDaEstruturaRaizDaConsulta = null, $nomeUnidade = null, $siglaUnidade = null, $offset = null, $registrosPorPagina = null, $parBolPermiteRecebimento = null, $parBolPermiteEnvio = null) { @@ -379,7 +462,7 @@ public function listarEstruturas($idRepositorioEstrutura, $nome = '', $numeroDeI if(is_numeric($nome)) { $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = intval($nome); } else { - $parametros->filtroDeEstruturas->nome = utf8_encode($nome); + $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nome, 'UTF-8', 'ISO-8859-1'); } } @@ -388,7 +471,7 @@ public function listarEstruturas($idRepositorioEstrutura, $nome = '', $numeroDeI } if(!is_null($nomeUnidade)){ - $parametros->filtroDeEstruturas->nome = utf8_encode($nomeUnidade); + $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nomeUnidade, 'UTF-8', 'ISO-8859-1'); } if(!is_null($registrosPorPagina) && !is_null($offset)){ @@ -418,8 +501,8 @@ public function listarEstruturas($idRepositorioEstrutura, $nome = '', $numeroDeI foreach ($result->estruturasEncontradas->estrutura as $estrutura) { $item = new EstruturaDTO(); $item->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); - $item->setStrNome(utf8_decode($estrutura->nome)); - $item->setStrSigla(utf8_decode($estrutura->sigla)); + $item->setStrNome(mb_convert_encoding($estrutura->nome, 'ISO-8859-1', 'UTF-8')); + $item->setStrSigla(mb_convert_encoding($estrutura->sigla, 'ISO-8859-1', 'UTF-8')); $item->setBolAtivo($estrutura->ativo); $item->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); $item->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); @@ -428,7 +511,7 @@ public function listarEstruturas($idRepositorioEstrutura, $nome = '', $numeroDeI if(!empty($estrutura->hierarquia->nivel)) { $array = array(); foreach($estrutura->hierarquia->nivel as $nivel) { - $array[] = utf8_decode($nivel->sigla); + $array[] = mb_convert_encoding($nivel->sigla, 'ISO-8859-1', 'UTF-8'); } $item->setArrHierarquia($array); } @@ -446,6 +529,132 @@ public function listarEstruturas($idRepositorioEstrutura, $nome = '', $numeroDeI return $arrObjEstruturaDTO; } + public function listarEstruturasBuscaTextual( + $idRepositorioEstrutura, + $nome = '', + $numeroDeIdentificacaoDaEstruturaRaizDaConsulta = null, + $nomeUnidade = null, + $siglaUnidade = null, + $offset = null, + $registrosPorPagina = null, + $parBolPermiteRecebimento = null, + $parBolPermiteEnvio = null + ) { + $arrObjEstruturaDTO = array(); + + try { + $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); + if (!$idRepositorioEstrutura) { + throw new InfraException("Repositório de Estruturas inválido"); + } + + $totalDeRegistros = 0; + $estruturasUnidades = null; + if (is_null($numeroDeIdentificacaoDaEstruturaRaizDaConsulta) || empty($numeroDeIdentificacaoDaEstruturaRaizDaConsulta)) { + $estruturasUnidades = $this->validarRestricaoUnidadesCadastradas($idRepositorioEstrutura); + $totalDeRegistros = is_null($estruturasUnidades) ? 0 : count($estruturasUnidades); + } + + if (is_null($estruturasUnidades)) { + $result = $this->buscarListaEstruturas(array( + [ + 'idRepositorioEstrutura' => $idRepositorioEstrutura, + 'nome' => $nome, + 'numeroDeIdentificacaoDaEstruturaRaizDaConsulta' => $numeroDeIdentificacaoDaEstruturaRaizDaConsulta, + 'nomeUnidade' => $nomeUnidade, + 'siglaUnidade' => $siglaUnidade, + 'offset' => $offset, + 'registrosPorPagina' => $registrosPorPagina, + 'parBolPermiteRecebimento' => $parBolPermiteRecebimento, + 'parBolPermiteEnvio' => $parBolPermiteEnvio + ] + )); + + $totalDeRegistros = $result->estruturasEncontradas->totalDeRegistros; + if ($totalDeRegistros > 0 && !is_array($result->estruturasEncontradas->estrutura)) { + $result->estruturasEncontradas->estrutura = array($result->estruturasEncontradas->estrutura); + } + $estruturasUnidades = $result->estruturasEncontradas->estrutura; + } + + if ($totalDeRegistros > 0) { + foreach ($estruturasUnidades as $estrutura) { + $item = new EstruturaDTO(); + $item->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); + $item->setStrNome(mb_convert_encoding($estrutura->nome, 'ISO-8859-1', 'UTF-8')); + $item->setStrSigla(mb_convert_encoding($estrutura->sigla, 'ISO-8859-1', 'UTF-8')); + $item->setBolAtivo($estrutura->ativo); + $item->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); + $item->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); + $item->setNumTotalDeRegistros($totalDeRegistros); + + if (!empty($estrutura->hierarquia->nivel)) { + $array = array(); + foreach ($estrutura->hierarquia->nivel as $nivel) { + $array[] = mb_convert_encoding($nivel->sigla, 'ISO-8859-1', 'UTF-8'); + } + $item->setArrHierarquia($array); + } + + $arrObjEstruturaDTO[] = $item; + } + } + } catch (Exception $e) { + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); + } + + return $arrObjEstruturaDTO; + } + + private function buscarListaEstruturas( + $idRepositorioEstrutura, + $filtro = array() + ) { + $parametros = new stdClass(); + $parametros->filtroDeEstruturas = new stdClass(); + $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; + $parametros->filtroDeEstruturas->apenasAtivas = true; + + if (!is_null($filtro['numeroDeIdentificacaoDaEstruturaRaizDaConsulta'])) { + $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstruturaRaizDaConsulta = $filtro['numeroDeIdentificacaoDaEstruturaRaizDaConsulta']; + } else { + $nome = trim($filtro['nome']); + if (is_numeric($nome)) { + $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = intval($nome); + } else { + $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nome, 'UTF-8', 'ISO-8859-1'); + } + } + + if (!is_null($filtro['siglaUnidade'])) { + $parametros->filtroDeEstruturas->sigla = $filtro['siglaUnidade']; + } + + if (!is_null($filtro['nomeUnidade'])) { + $parametros->filtroDeEstruturas->nome = mb_convert_encoding($filtro['nomeUnidade'], 'UTF-8', 'ISO-8859-1'); + } + + if (!is_null($filtro['registrosPorPagina']) && !is_null($filtro['offset'])) { + $parametros->filtroDeEstruturas->paginacao = new stdClass(); + $parametros->filtroDeEstruturas->paginacao->registroInicial = $filtro['offset']; + $parametros->filtroDeEstruturas->paginacao->quantidadeDeRegistros = $filtro['registrosPorPagina']; + } + + if (!is_null($filtro['parBolPermiteRecebimento']) && $filtro['parBolPermiteRecebimento'] === true) { + $parametros->filtroDeEstruturas->permiteRecebimento = true; + } + + if (!is_null($filtro['parBolPermiteEnvio']) && $filtro['parBolPermiteEnvio'] === true) { + $parametros->filtroDeEstruturas->permiteEnvio = true; + } + + return $this->tentarNovamenteSobErroHTTP(function ($objPenWs) use ($parametros) { + return $objPenWs->consultarEstruturas($parametros); + }); + } + public function listarEstruturasAutoCompletar( $idRepositorioEstrutura, $nome = '', @@ -477,7 +686,7 @@ public function listarEstruturasAutoCompletar( if (is_numeric($nome)) { $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = intval($nome); } else { - $parametros->filtroDeEstruturas->nome = utf8_encode($nome); + $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nome, 'UTF-8', 'ISO-8859-1'); } } @@ -486,7 +695,7 @@ public function listarEstruturasAutoCompletar( } if (!is_null($nomeUnidade)) { - $parametros->filtroDeEstruturas->nome = utf8_encode($nomeUnidade); + $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nomeUnidade, 'UTF-8', 'ISO-8859-1'); } if (!is_null($registrosPorPagina) && !is_null($offset)) { @@ -516,8 +725,8 @@ public function listarEstruturasAutoCompletar( foreach ($result->estruturasEncontradas->estrutura as $estrutura) { $item = new EstruturaDTO(); $item->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); - $item->setStrNome(utf8_decode($estrutura->nome)); - $item->setStrSigla(utf8_decode($estrutura->sigla)); + $item->setStrNome(mb_convert_encoding($estrutura->nome, 'ISO-8859-1', 'UTF-8')); + $item->setStrSigla(mb_convert_encoding($estrutura->sigla, 'ISO-8859-1', 'UTF-8')); $item->setBolAtivo($estrutura->ativo); $item->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); $item->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); @@ -526,7 +735,7 @@ public function listarEstruturasAutoCompletar( if (!empty($estrutura->hierarquia->nivel)) { $array = array(); foreach ($estrutura->hierarquia->nivel as $nivel) { - $array[] = utf8_decode($nivel->sigla); + $array[] = mb_convert_encoding($nivel->sigla, 'ISO-8859-1', 'UTF-8'); } $item->setArrHierarquia($array); } @@ -580,7 +789,7 @@ public function consultarMotivosUrgencia() $valor = $entry->getAttribute('value'); $documentationNode = $xpath->query('x:annotation/x:documentation', $entry); $descricao = $documentationNode->item(0)->nodeValue; - $resultado[$valor] = utf8_decode($descricao); + $resultado[$valor] = mb_convert_encoding($descricao, 'ISO-8859-1', 'UTF-8'); } } finally{ curl_close($curl); @@ -634,7 +843,7 @@ public function consultarEspeciesDocumentais() $valor = $entry->getAttribute('value'); $documentationNode = $xpath->query('x:annotation/x:documentation', $entry); $descricao = $documentationNode->item(0)->nodeValue; - $resultado[$valor] = utf8_decode($descricao); + $resultado[$valor] = mb_convert_encoding($descricao, 'ISO-8859-1', 'UTF-8'); } } finally{ curl_close($curl); @@ -652,14 +861,10 @@ public function enviarProcesso($parametros) }); } catch (\SoapFault $e) { - $naoRespEstruturaOrg = 'Transação não autorizada, pois o sistema não é responsável pela estrutura organizacional remetente'; - if (InfraString::formatarJavaScript(utf8_decode($e->faultstring)) == $naoRespEstruturaOrg) { - $strMensagem = "Por favor, observe o seguinte procedimento para realizar o mapeamento adequado: Acesse a funcionalidade Administração, em seguida selecione Tramita GOV.BR e, por fim, proceda ao mapeamento utilizando somente as unidades pertinentes ao seu órgão/entidade na funcionalidade Mapeamento de Unidades. Certifique-se de seguir esse processo para garantir a correta execução do mapeamento."; - } else { - $strMensagem = str_replace(array("\n", "\r"), ' ', InfraString::formatarJavaScript(utf8_decode($e->faultstring))); - } + $strMensagem = str_replace(array("\n", "\r"), ' ', InfraString::formatarJavaScript(mb_convert_encoding($e->faultstring, 'ISO-8859-1', 'UTF-8'))); + if ($e instanceof \SoapFault && !empty($e->detail->interoperabilidadeException->codigoErro) && $e->detail->interoperabilidadeException->codigoErro == '0005') { - $$strMensagem .= 'O código mapeado para a unidade ' . utf8_decode($parametros->novoTramiteDeProcesso->processo->documento[0]->produtor->unidade->nome) . ' está incorreto.'; + $strMensagem .= 'O código mapeado para a unidade ' . mb_convert_encoding($parametros->novoTramiteDeProcesso->processo->documento[0]->produtor->unidade->nome, 'ISO-8859-1', 'UTF-8') . ' está incorreto.'; } $e->faultstring = $this->validarTramitaEmAndamento($parametros, $strMensagem); @@ -729,7 +934,7 @@ private function tratarFalhaWebService(Exception $fault) $mensagem = InfraException::inspecionar($fault); if($fault instanceof SoapFault && isset($fault->detail->interoperabilidadeException)) { $strWsException = $fault->detail->interoperabilidadeException; - $mensagem = utf8_decode($strWsException->mensagem); + $mensagem = mb_convert_encoding($strWsException->mensagem, 'ISO-8859-1', 'UTF-8'); // Fixação de mensagem de erro para quando já existe um trâmite em andamento if($strWsException->codigoErro == "0044"){ @@ -760,7 +965,6 @@ public function construirCabecalho($strNumeroRegistro, $idRepositorioOrigem, $id $cabecalho->urgente = $urgente; $cabecalho->motivoDaUrgencia = $motivoUrgencia; //Parâmetro abaixo foi descontinuado por falhas e substituido pelo enviarApenasComponentesDigitaisPendentes - //$cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = $enviarTodosDocumentos; $cabecalho->enviarApenasComponentesDigitaisPendentes = !$enviarTodosDocumentos; $this->atribuirInformacoesAssunto($cabecalho, $dblIdProcedimento); @@ -774,7 +978,7 @@ private function atribuirInformacoesModulo($objCabecalho) try{ - $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); + $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); $arrPropAdicionais=$objCabecalho->propriedadeAdicional; $arrPropAdicionais[] = new SoapVar("". $objInfraParametro->getValor('VERSAO_MODULO_PEN') . "", XSD_ANYXML); @@ -839,11 +1043,11 @@ private function atribuirInformacoesAssunto($objCabecalho, $dblIdProcedimento) } - $valorInput=$objRelProtocoloAssuntoDTO->getStrDescricaoAssunto()?utf8_encode($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($objRelProtocoloAssuntoDTO->getStrDescricaoAssunto()), 10000)):"NA"; + $valorInput=$objRelProtocoloAssuntoDTO->getStrDescricaoAssunto()?mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($objRelProtocoloAssuntoDTO->getStrDescricaoAssunto(), ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, 'ISO-8859-1'), 10000), 'UTF-8', 'ISO-8859-1'):"NA"; $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - $valorInput=$infoAssunto->getStrCodigoEstruturado()?utf8_encode($infoAssunto->getStrCodigoEstruturado()):"NA"; + $valorInput=$infoAssunto->getStrCodigoEstruturado()?mb_convert_encoding($infoAssunto->getStrCodigoEstruturado(), 'UTF-8', 'ISO-8859-1'):"NA"; $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); @@ -855,11 +1059,11 @@ private function atribuirInformacoesAssunto($objCabecalho, $dblIdProcedimento) $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - $valorInput=$destinacao?utf8_encode($destinacao):"NA"; + $valorInput=$destinacao?mb_convert_encoding($destinacao, 'UTF-8', 'ISO-8859-1'):"NA"; $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - $valorInput=$infoAssunto->getStrObservacao()?utf8_encode($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($infoAssunto->getStrObservacao()), 10000)):"NA"; + $valorInput=$infoAssunto->getStrObservacao()?mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($infoAssunto->getStrObservacao(), ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, 'ISO-8859-1'), 10000), 'UTF-8', 'ISO-8859-1'):"NA"; $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); @@ -983,7 +1187,7 @@ public static function obterIdTarefaModulo($strIdTarefaModulo) } public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parStrStaTipoTramite, $parDthRegistroTramite, $parNumIdRepositorioOrigem, - $parNumIdEstruturaOrigem, $parNumIdRepositorioDestino, $parNumIdEstruturaDestino, $parObjProtocolo, $parNumTicketComponentesDigitais = null, $parObjComponentesDigitaisSolicitados = null, $bolSinProcessamentoEmLote = false, $numIdUnidade = null) + $parNumIdEstruturaOrigem, $parNumIdRepositorioDestino, $parNumIdEstruturaDestino, $parObjProtocolo, $parNumTicketComponentesDigitais = null, $parObjComponentesDigitaisSolicitados = null, $bolSinProcessamentoEmBloco = false, $numIdUnidade = null) { if(!isset($parDblIdProcedimento) || $parDblIdProcedimento == 0) { @@ -1053,7 +1257,7 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR $objTramiteDTO->setNumIdTramite($parNumIdentificacaoTramite); $objTramiteDTO->setNumTicketEnvioComponentes($parNumTicketComponentesDigitais); $objTramiteDTO->setDthRegistro($this->converterDataSEI($parDthRegistroTramite)); - if($bolSinProcessamentoEmLote){ + if($bolSinProcessamentoEmBloco){ $objTramiteDTO->setNumIdUnidade($numIdUnidade); }else{ $objTramiteDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); @@ -1291,11 +1495,11 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden } $objComponenteDigital = is_array($objDocumento->componenteDigital) ? $objDocumento->componenteDigital[0] : $objDocumento->componenteDigital; - $objComponenteDigitalDTO->setStrNome(utf8_decode($objComponenteDigital->nome)); + $objComponenteDigitalDTO->setStrNome(mb_convert_encoding($objComponenteDigital->nome, 'ISO-8859-1', 'UTF-8')); if(isset($objDocumento->especie)){ $objComponenteDigitalDTO->setNumCodigoEspecie(intval($objDocumento->especie->codigo)); - $objComponenteDigitalDTO->setStrNomeEspecieProdutor(utf8_decode($objDocumento->especie->nomeNoProdutor)); + $objComponenteDigitalDTO->setStrNomeEspecieProdutor(mb_convert_encoding($objDocumento->especie->nomeNoProdutor, 'ISO-8859-1', 'UTF-8')); } $strHashConteudo = static::getHashFromMetaDados($objComponenteDigital->hash); @@ -1482,11 +1686,11 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR $objProtocoloDTO = $objBD->consultar($objProtocoloDTO); if (empty($objProtocoloDTO)) { - throw new InfraException(utf8_encode(sprintf('Nenhum procedimento foi encontrado com o id %s', $strProtocoloFormatado))); + throw new InfraException(mb_convert_encoding(sprintf('Nenhum procedimento foi encontrado com o id %s', $strProtocoloFormatado), 'UTF-8', 'ISO-8859-1')); } if ($objProtocoloDTO->getStrStaEstado() != ProtocoloRn::$TE_PROCEDIMENTO_BLOQUEADO) { - throw new InfraException(utf8_encode('O processo não esta com o estado com "Em Processamento" ou "Bloqueado"')); + throw new InfraException(mb_convert_encoding('O processo não esta com o estado com "Em Processamento" ou "Bloqueado"', 'UTF-8', 'ISO-8859-1')); } $objTramiteDTO = new TramiteDTO(); @@ -1515,7 +1719,7 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR $objTramitesEncontrados = $objResultado->tramitesEncontrados; if (empty($objTramitesEncontrados) || !isset($objTramitesEncontrados->tramite)) { - throw new InfraException(utf8_encode(sprintf('Nenhum tramite foi encontrado para o procedimento %s', $strProtocoloFormatado))); + throw new InfraException(mb_convert_encoding(sprintf('Nenhum tramite foi encontrado para o procedimento %s', $strProtocoloFormatado), 'UTF-8', 'ISO-8859-1')); } if(!is_array($objTramitesEncontrados->tramite)){ @@ -1538,7 +1742,7 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR $objPenUnidadeDTO = $objBD->consultar($objPenUnidadeDTO); if (empty($objPenUnidadeDTO)) { - throw new InfraException(utf8_encode('Número da Unidade RH não foi encontrado')); + throw new InfraException(mb_convert_encoding('Número da Unidade RH não foi encontrado', 'UTF-8', 'ISO-8859-1')); } $numIdEstrutura = $objPenUnidadeDTO->getNumIdUnidadeRH(); @@ -1546,7 +1750,7 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR if ($objTramite->remetente->numeroDeIdentificacaoDaEstrutura != $numIdEstrutura || $objTramite->remetente->identificacaoDoRepositorioDeEstruturas != $numIdRepositorio) { - throw new InfraException(utf8_encode('O último trâmite desse processo não pertence a esse órgão')); + throw new InfraException(mb_convert_encoding('O último trâmite desse processo não pertence a esse órgão', 'UTF-8', 'ISO-8859-1')); } switch ($objTramite->situacaoAtual) { @@ -1556,7 +1760,7 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR break; case static::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE: - throw new InfraException(utf8_encode('O trâmite externo deste processo já foi concluído')); + throw new InfraException(mb_convert_encoding('O trâmite externo deste processo já foi concluído', 'UTF-8', 'ISO-8859-1')); break; default: @@ -1666,15 +1870,15 @@ public function converterOperacaoDTO($objOperacaoPEN) } $objOperacaoDTO = new OperacaoDTO(); - $objOperacaoDTO->setStrCodigo(utf8_decode($objOperacaoPEN->codigo)); - $objOperacaoDTO->setStrComplemento(utf8_decode($objOperacaoPEN->complemento)); + $objOperacaoDTO->setStrCodigo(mb_convert_encoding($objOperacaoPEN->codigo, 'ISO-8859-1', 'UTF-8')); + $objOperacaoDTO->setStrComplemento(mb_convert_encoding($objOperacaoPEN->complemento, 'ISO-8859-1', 'UTF-8')); $objOperacaoDTO->setDthOperacao($this->converterDataSEI($objOperacaoPEN->dataHora)); $strIdPessoa = ($objOperacaoPEN->pessoa->numeroDeIdentificacao) ?: null; - $objOperacaoDTO->setStrIdentificacaoPessoaOrigem(utf8_decode($strIdPessoa)); + $objOperacaoDTO->setStrIdentificacaoPessoaOrigem(mb_convert_encoding($strIdPessoa, 'ISO-8859-1', 'UTF-8')); $strNomePessoa = ($objOperacaoPEN->pessoa->nome) ?: null; - $objOperacaoDTO->setStrNomePessoaOrigem(utf8_decode($strNomePessoa)); + $objOperacaoDTO->setStrNomePessoaOrigem(mb_convert_encoding($strNomePessoa, 'ISO-8859-1', 'UTF-8')); switch ($objOperacaoPEN->codigo) { case "01": @@ -1747,7 +1951,7 @@ public function obterCodigoOperacaoPENMapeado($numIdTarefa) $objRelTarefaOperacaoDTO->retStrCodigoOperacao(); $objRelTarefaOperacaoDTO->setNumIdTarefa($numIdTarefa); - $objRelTarefaOperacaoBD = new RelTarefaOperacaoBD(BancoSEI::getInstance()); + $objRelTarefaOperacaoBD = new RelTarefaOperacaoBD($this->inicializarObjInfraIBanco()); $objRelTarefaOperacaoDTO = $objRelTarefaOperacaoBD->consultar($objRelTarefaOperacaoDTO); if($objRelTarefaOperacaoDTO != null) { @@ -1806,7 +2010,7 @@ public function recusarTramite($idTramite, $justificativa, $motivo) $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $idTramite; - $parametros->recusaDeTramite->justificativa = utf8_encode($objProcessoEletronicoRN->reduzirCampoTexto($justificativa, 1000)); + $parametros->recusaDeTramite->justificativa = mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto($justificativa, 1000), 'UTF-8', 'ISO-8859-1'); $parametros->recusaDeTramite->motivo = $motivo; $resultado = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { @@ -1908,10 +2112,14 @@ public function isDisponivelCancelarTramite($strProtocolo = '') } } - public function consultarHipotesesLegais() { + public function consultarHipotesesLegais($ativos = true) { try{ - $hipoteses = $this->tentarNovamenteSobErroHTTP(function($objPenWs) { - return $objPenWs->consultarHipotesesLegais(); + $parametros = new stdClass(); + $parametros->filtroDeHipotesesLegais = new stdClass(); + $parametros->filtroDeHipotesesLegais->ativos = $ativos; + + $hipoteses = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { + return $objPenWs->consultarHipotesesLegais($parametros); }); if (empty($hipoteses)) { diff --git a/src/rn/ReceberComponenteDigitalRN.php b/src/rn/ReceberComponenteDigitalRN.php index 8d8cab1e5..def90b2c0 100755 --- a/src/rn/ReceberComponenteDigitalRN.php +++ b/src/rn/ReceberComponenteDigitalRN.php @@ -243,7 +243,6 @@ private function atualizarAnexoDoComponenteDigital($parObjComponenteDigitalDTO, $objComponenteDigitalDTO->setStrNumeroRegistro($parObjComponenteDigitalDTO->getStrNumeroRegistro()); $objComponenteDigitalDTO->setDblIdDocumento($parObjComponenteDigitalDTO->getDblIdDocumento()); $objComponenteDigitalDTO->setDblIdProcedimento($parObjComponenteDigitalDTO->getDblIdProcedimento()); - //$objComponenteDigitalDTO->setNumOrdem($parObjComponenteDigitalDTO->getNumOrdem()); $objComponenteDigitalDTO->setNumIdAnexo($parObjAnexoDTO->getNumIdAnexo()); $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); $objComponenteDigitalDTO = $objComponenteDigitalBD->alterar($objComponenteDigitalDTO); @@ -282,7 +281,6 @@ public function validarIntegridadeDoComponenteDigital(AnexoDTO $objAnexoDTO, $st $strHashInformado = $strHashConteudo; $strHashInformado = base64_decode($strHashInformado); - //$objAnexoRN = new AnexoRN(); $strCaminhoAnexo = DIR_SEI_TEMP.'/'.$objAnexoDTO->getNumIdAnexo(); $strHashDoArquivo = hash_file("sha256", $strCaminhoAnexo, true); diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 6b58321d4..effb562f4 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -412,7 +412,7 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) $objTramiteDTO->setNumIdTramite($numIdTramite); $objTramiteDTO->retNumIdUnidade(); - $objTramiteBD = new TramiteBD(BancoSEI::getInstance()); + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); if(isset($objTramiteDTO)){ @@ -462,7 +462,7 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) $objReceberTramiteRecusadoDTO->setNumIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); $objReceberTramiteRecusadoDTO->setNumIdUnidadeOrigem(null); $objReceberTramiteRecusadoDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO)); - $objReceberTramiteRecusadoDTO->setStrMotivoRecusa(utf8_decode($this->objProcessoEletronicoRN->reduzirCampoTexto($tramite->justificativaDaRecusa, 500))); + $objReceberTramiteRecusadoDTO->setStrMotivoRecusa(mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($tramite->justificativaDaRecusa, 500), 'ISO-8859-1', 'UTF-8')); $objReceberTramiteRecusadoDTO->setStrNomeUnidadeDestino($objAtributoAndamentoDTO->getStrValor()); //Faz o tratamento do processo e do trâmite recusado @@ -527,17 +527,35 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) $objPenProtocoloBD->alterar($objPenProtocolo); // Atualizar Bloco para concluido parcialmente - $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); - $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); + $objPenBlocoProcessoDTO->setNumIdAndamento( + array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO + ), + InfraDTO::$OPER_NOT_IN + ); + $objPenBlocoProcessoDTO->setOrdNumIdBlocoProcesso(InfraDTO::$TIPO_ORDENACAO_DESC); + $objPenBlocoProcessoDTO->retTodos(); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrObjPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + + if ($arrObjPenBlocoProcesso != null) { + $blocos = array(); + foreach ($arrObjPenBlocoProcesso as $objBlocoProcesso) { + $objBlocoProcesso->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA); + $objPenBlocoProcessoRN->alterar($objBlocoProcesso); - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $tramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); + $blocos[] = $objBlocoProcesso->getNumIdBloco(); + } - if ($tramiteEmBlocoProtocolo != null) { - $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBlocoConcluidoParcialmente($tramiteEmBlocoProtocolo); + foreach ($blocos as $idBloco) { + $objPenBlocoProcessoRN->atualizarEstadoDoBloco($idBloco); + } } } @@ -704,12 +722,12 @@ private function validarComponentesDigitais($parObjProtocolo, $parNumIdentificac $objPenRelTipoDocMapEnviadoDTO->retTodos(); $objPenRelTipoDocMapEnviadoDTO->setNumCodigoEspecie($objDocument->especie->codigo); - $objProcessoEletronicoDB = new PenRelTipoDocMapRecebidoBD(BancoSEI::getInstance()); + $objProcessoEletronicoDB = new PenRelTipoDocMapRecebidoBD($this->getObjInfraIBanco()); $numContador = (int)$objProcessoEletronicoDB->contar($objPenRelTipoDocMapEnviadoDTO); // Não achou, ou seja, não esta cadastrado na tabela, então não é aceito nesta unidade como válido if($numContador <= 0) { - $this->objProcessoEletronicoRN->recusarTramite($parNumIdentificacaoTramite, sprintf('O Documento do tipo %s não está mapeado para recebimento no sistema de destino. OBS: A recusa é uma das três formas de conclusão de trâmite. Portanto, não é um erro.', utf8_decode($objDocument->especie->nomeNoProdutor)), ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_ESPECIE_NAO_MAPEADA); + $this->objProcessoEletronicoRN->recusarTramite($parNumIdentificacaoTramite, sprintf('O Documento do tipo %s não está mapeado para recebimento no sistema de destino. OBS: A recusa é uma das três formas de conclusão de trâmite. Portanto, não é um erro.', mb_convert_encoding($objDocument->especie->nomeNoProdutor, 'ISO-8859-1', 'UTF-8')), ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_ESPECIE_NAO_MAPEADA); throw new InfraException(sprintf('Documento do tipo %s não está mapeado. Motivo da Recusa no Barramento: %s', $objDocument->especie->nomeNoProdutor, ProcessoEletronicoRN::$MOTIVOS_RECUSA[ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_ESPECIE_NAO_MAPEADA])); } } @@ -827,7 +845,7 @@ private function consultarProcedimentoExistente($parStrNumeroRegistro, $parStrPr $objTramiteDTOPesquisa->retStrNumeroRegistro(); $objTramiteDTOPesquisa->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteBD = new TramiteBD(BancoSEI::getInstance()); + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTOPesquisa); if(isset($objTramiteDTO)){ $dblIdProcedimento = $objTramiteDTO->getNumIdProcedimento(); @@ -928,12 +946,10 @@ private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProce $this->gravarLogDebug("Processo $parDblIdProcedimento não pode ser desbloqueado", 2); } - //$numUnidadeReceptora = $this->objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO'); $numUnidadeReceptora = ModPenUtilsRN::obterUnidadeRecebimento(); $this->enviarProcedimentoUnidade($objProcedimentoDTO, $numUnidadeReceptora); } finally { - //$numUnidadeReceptora = $this->objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO'); $numUnidadeReceptora = ModPenUtilsRN::obterUnidadeRecebimento(); SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora); } @@ -1010,7 +1026,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) //TODO: Validar cada uma das informações de entrada do webservice $objProtocoloDTO = new ProtocoloDTO(); $objProtocoloDTO->setDblIdProtocolo(null); - $objProtocoloDTO->setStrDescricao(utf8_decode($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjProtocolo->descricao, 100))); + $objProtocoloDTO->setStrDescricao(mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjProtocolo->descricao, 100), 'ISO-8859-1', 'UTF-8')); $objProtocoloDTO->setStrStaNivelAcessoLocal($this->obterNivelSigiloSEI($parObjProtocolo->nivelDeSigilo)); if($this->obterNivelSigiloSEI($parObjProtocolo->nivelDeSigilo) == ProtocoloRN::$NA_RESTRITO){ @@ -1033,7 +1049,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) // trâmites de processos. No caso de recebimento de documentos avulsos, o número do novo processo sempre deverá ser // gerado pelo destinatário, conforme regras definidas em legislação vigente $strProtocoloFormatado = ($parObjProtocolo->staTipoProtocolo == ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO) ? $parObjProtocolo->protocolo : null; - $objProtocoloDTO->setStrProtocoloFormatado(utf8_decode($strProtocoloFormatado)); + $objProtocoloDTO->setStrProtocoloFormatado(mb_convert_encoding($strProtocoloFormatado, 'ISO-8859-1', 'UTF-8')); $objProtocoloDTO->setDtaGeracao($this->objProcessoEletronicoRN->converterDataSEI($parObjProtocolo->dataHoraDeProducao)); $objProtocoloDTO->setArrObjAnexoDTO(array()); $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array()); @@ -1042,7 +1058,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $strDescricao = ""; if(isset($parObjProtocolo->processoDeNegocio)){ - $strDescricao = sprintf('Tipo de processo no órgão de origem: %s', utf8_decode($parObjProtocolo->processoDeNegocio)).PHP_EOL; + $strDescricao = sprintf('Tipo de processo no órgão de origem: %s', mb_convert_encoding($parObjProtocolo->processoDeNegocio, 'ISO-8859-1', 'UTF-8')).PHP_EOL; $strDescricao .= $parObjProtocolo->observacao; } @@ -1065,20 +1081,20 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO)); //Atribuição de dados do procedimento - $strProcessoNegocio = utf8_decode($parObjProtocolo->processoDeNegocio); + $strProcessoNegocio = mb_convert_encoding($parObjProtocolo->processoDeNegocio, 'ISO-8859-1', 'UTF-8'); $objProcedimentoDTO = new ProcedimentoDTO(); $objProcedimentoDTO->setDblIdProcedimento(null); $objProcedimentoDTO->setObjProtocoloDTO($objProtocoloDTO); $objProcedimentoDTO->setStrNomeTipoProcedimento($strProcessoNegocio); $objProcedimentoDTO->setDtaGeracaoProtocolo($this->objProcessoEletronicoRN->converterDataSEI($parObjProtocolo->dataHoraDeProducao)); - $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado(utf8_decode($parObjProtocolo->protocolo)); + $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado(mb_convert_encoding($parObjProtocolo->protocolo, 'ISO-8859-1', 'UTF-8')); $objProcedimentoDTO->setStrSinGerarPendencia('S'); $objProcedimentoDTO->setArrObjDocumentoDTO(array()); $numIdTipoProcedimento = $this->objPenParametroRN->getParametro('PEN_TIPO_PROCESSO_EXTERNO'); $remetente = $objMetadadosProcedimento->metadados->remetente; $destinatario = $objMetadadosProcedimento->metadados->destinatario; - $this->atribuirTipoProcedimento( + $alterouTipoProcesso = $this->atribuirTipoProcedimento( $objProcedimentoDTO, $remetente, $destinatario, @@ -1113,6 +1129,10 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objInfraParametro->setValor('SEI_FEDERACAO_NUMERO_PROCESSO', 0); $objProcedimentoDTOGerado = $objProcedimentoRN->gerarRN0156($objProcedimentoDTO); + if ($alterouTipoProcesso) { + $this->atribuirTipoProcedimentoRelacinado($objProcedimentoDTO->getNumIdTipoProcedimento(), $objProcedimentoDTOGerado->getDblIdProcedimento(), $strProcessoNegocio); + } + $objProcedimentoDTO->setDblIdProcedimento($objProcedimentoDTOGerado->getDblIdProcedimento()); $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($objProcedimentoDTO->getObjProtocoloDTO()->getStrProtocoloFormatado()); @@ -1151,7 +1171,7 @@ public function consultarProtocoloExistente($parObjProtocolo) $strDescricao = sprintf( 'Um processo com o número de protocolo %s já existe no sistema de destino. ' . 'OBS: A recusa é uma das três formas de conclusão de trâmite. Portanto, não é um erro.', - utf8_decode($parObjProtocolo->protocolo) + mb_convert_encoding($parObjProtocolo->protocolo, 'ISO-8859-1', 'UTF-8') ).PHP_EOL; throw new InfraException($strDescricao); } @@ -1368,7 +1388,7 @@ private function atribuirParticipantes(ProtocoloDTO $objProtocoloDTO, $arrObjInt $objInteressado = $arrObjInteressados[$i]; $objParticipanteDTO = new ParticipanteDTO(); $objParticipanteDTO->setStrSiglaContato($objInteressado->numeroDeIdentificacao); - $objParticipanteDTO->setStrNomeContato(utf8_decode($objInteressado->nome)); + $objParticipanteDTO->setStrNomeContato(mb_convert_encoding($objInteressado->nome, 'ISO-8859-1', 'UTF-8')); $objParticipanteDTO->setStrStaParticipacao(ParticipanteRN::$TP_INTERESSADO); $objParticipanteDTO->setNumSequencia($i); $arrObjParticipantesDTO[] = $objParticipanteDTO; @@ -1462,11 +1482,13 @@ private function obterTipoProcessoPeloNomeOrgaoUnidade($strNomeTipoProcesso, $nu * @param \stdClass $destinatario * @param string|int $numIdTipoProcedimento * @param string|int $strProcessoNegocio - * @return ProcedimentoDTO + * @return bool * @throws InfraException */ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $remetente, $destinatario, $numIdTipoProcedimento, $strProcessoNegocio) { + + $dblAlterouTipoProcesso = false; if(!empty(trim($strProcessoNegocio))){ // Verifica se existe relacionamento entre orgãos $objTipoProcedimentoDTO = $this->obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio); @@ -1478,11 +1500,14 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $ SessaoSEI::getInstance()->getNumIdOrgaoUnidadeAtual(), SessaoSEI::getInstance()->getNumIdUnidadeAtual() ); + } else { + $dblAlterouTipoProcesso = true; } } if(is_null($objTipoProcedimentoDTO)){ // Verifica tipo de processo padrão cadastrado + $dblAlterouTipoProcesso = true; $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento); } @@ -1511,6 +1536,8 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $ } $objProcedimentoDTO->getObjProtocoloDTO()->setArrObjRelProtocoloAssuntoDTO($arrObjAssuntoDTO); + + return $dblAlterouTipoProcesso; } /** @@ -1717,7 +1744,6 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o $objDocumentoDTO->setDblIdDocumentoEdoc(null); $objDocumentoDTO->setDblIdDocumentoEdocBase(null); - //$objDocumentoDTO->setNumIdUnidadeResponsavel($objUnidadeDTO->getNumIdUnidade()); $objDocumentoDTO->setNumIdUnidadeResponsavel(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objDocumentoDTO->setNumIdTipoConferencia(null); $objDocumentoDTO->setStrConteudo(null); @@ -1729,8 +1755,8 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o $objProtocoloDTO->setStrStaProtocolo(ProtocoloRN::$TP_DOCUMENTO_RECEBIDO); if($objDocumento->descricao != '***'){ - $objProtocoloDTO->setStrDescricao(utf8_decode($this->objProcessoEletronicoRN->reduzirCampoTexto($objDocumento->descricao, 100))); - $objDocumentoDTO->setStrNumero(utf8_decode($this->objProcessoEletronicoRN->reduzirCampoTexto($objDocumento->descricao, 50))); + $objProtocoloDTO->setStrDescricao(mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objDocumento->descricao, 100), 'ISO-8859-1', 'UTF-8')); + $objDocumentoDTO->setStrNumero(mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objDocumento->descricao, 50), 'ISO-8859-1', 'UTF-8')); }else{ $objProtocoloDTO->setStrDescricao(""); $objDocumentoDTO->setStrNumero(""); @@ -1906,7 +1932,6 @@ private function atribuirComponentesJaExistentesNoProcesso($objDocumentoDTO, $ob } } return $arrObjAnexoDTO; - // $objDocumentoDTO->getObjProtocoloDTO()->setArrObjAnexoDTO($arrObjAnexoDTO); } @@ -2421,7 +2446,6 @@ private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDT $objProcedimentoRN->reabrirRN0966($objReabrirProcessoDTO); } - //$objPenAtividadeRN = new PenAtividadeRN(); $arrObjProcedimentoDTO = $objAtividadeRN->listarPendenciasRN0754($objPesquisaPendenciaDTO); $objInfraException->lancarValidacoes(); @@ -2892,4 +2916,38 @@ private static function validaTamanhoMaximoAnexo($nomeArquivo, $nrTamanhMegaByte } } } + + + private function atribuirTipoProcedimentoRelacinado($numIdTipoProcedimento, $numIdProcedimento, $strProcessoNegocio) { + + $objAtributoAndamentoDTOAnterior = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTOAnterior->setStrNome('TIPO_PROCESSO_ANTERIOR'); + $objAtributoAndamentoDTOAnterior->setStrValor($strProcessoNegocio); + $objAtributoAndamentoDTOAnterior->setStrIdOrigem($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTOAnterior; + + $objTipoProcedimentoRN = new TipoProcedimentoRN(); + $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objTipoProcedimentoDTO->setBolExclusaoLogica(false); + $objTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objTipoProcedimentoDTO->retStrNome(); + $objTipoProcedimentoDTO->setNumIdTipoProcedimento($numIdTipoProcedimento); + $objTipoProcedimentoDTO = $objTipoProcedimentoRN->consultarRN0267($objTipoProcedimentoDTO); + + $objAtributoAndamentoDTOAtual = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTOAtual->setStrNome('TIPO_PROCESSO_ATUAL'); + $objAtributoAndamentoDTOAtual->setStrValor($objTipoProcedimentoDTO->getStrNome()); + $objAtributoAndamentoDTOAtual->setStrIdOrigem($objTipoProcedimentoDTO->getNumIdTipoProcedimento()); + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTOAtual; + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($numIdProcedimento); + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ALTERACAO_TIPO_PROCESSO); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); + + // Gerar a atividade + $objAtividadeRN = new AtividadeRN(); + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); + } } diff --git a/src/rn/ReceberReciboTramiteRN.php b/src/rn/ReceberReciboTramiteRN.php index 05814da38..2d12b8d9d 100755 --- a/src/rn/ReceberReciboTramiteRN.php +++ b/src/rn/ReceberReciboTramiteRN.php @@ -88,7 +88,7 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $objTramiteDTO = new TramiteDTO(); $objTramiteDTO->setNumIdTramite($numIdTramite); $objTramiteDTO->retNumIdUnidade(); - $objTramiteBD = new TramiteBD(BancoSEI::getInstance()); + $objTramiteBD = new TramiteBD($this->inicializarObjInfraIBanco()); if ($objTramiteBD->contar($objTramiteDTO) > 0) { $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); @@ -98,7 +98,7 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $objReciboTramiteDTOExistente->setNumIdTramite($numIdTramite); $objReciboTramiteDTOExistente->retNumIdTramite(); - $objReciboTramiteBD = new ReciboTramiteBD(BancoSEI::getInstance()); + $objReciboTramiteBD = new ReciboTramiteBD($this->inicializarObjInfraIBanco()); if ($objReciboTramiteBD->contar($objReciboTramiteDTOExistente) == 0) { //Armazenar dados do recibo de conclusão do trãmite $objReciboTramiteBD->cadastrar($objReciboTramiteDTO); @@ -121,15 +121,15 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $objTramiteDTO->setNumIdTramite($numIdTramite); $objTramiteDTO->retStrNumeroRegistro(); - $objTramiteBD = new TramiteBD(BancoSEI::getInstance()); + $objTramiteBD = new TramiteBD($this->inicializarObjInfraIBanco()); $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); // Consulta o número do registro - $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(BancoSEI::getInstance()); + $objProcessoEletronicoDTO = new ProcessoEletronicoDTO($this->inicializarObjInfraIBanco()); $objProcessoEletronicoDTO->setStrNumeroRegistro($objTramiteDTO->getStrNumeroRegistro()); $objProcessoEletronicoDTO->retDblIdProcedimento(); - $objProcessoEletronicoBD = new ProcessoEletronicoBD(BancoSEI::getInstance()); + $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->inicializarObjInfraIBanco()); $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO); // Consulta pelo número do procedimento @@ -137,22 +137,39 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $objProtocoloDTO->retTodos(); $objProtocoloDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); - $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); + $objProtocoloBD = new ProtocoloBD($this->inicializarObjInfraIBanco()); $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO); - // atualizar bloco de tramite externo - $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($objProtocoloDTO->getDblIdProtocolo()); - $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteEmBlocoProtocoloDTO->setNumMaxRegistrosRetorno(1); - $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - - $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $tramiteEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloRN->consultar($objTramiteEmBlocoProtocoloDTO); - - if ($tramiteEmBlocoProtocoloDTO != null) { - $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($tramiteEmBlocoProtocoloDTO, TramiteEmBlocoRN::$TE_CONCLUIDO); + // Atualizar Bloco para concluido + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->setDblIdProtocolo($objProtocoloDTO->getDblIdProtocolo()); + $objPenBlocoProcessoDTO->setNumIdAndamento( + array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO + ), + InfraDTO::$OPER_NOT_IN + ); + $objPenBlocoProcessoDTO->setOrdNumIdBlocoProcesso(InfraDTO::$TIPO_ORDENACAO_DESC); + $objPenBlocoProcessoDTO->retTodos(); + + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); + + if ($arrPenBlocoProcesso != null) { + $blocos = array(); + foreach ($arrPenBlocoProcesso as $PenBlocoProcesso) { + $PenBlocoProcesso->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE); + $objPenBlocoProcessoRN->alterar($PenBlocoProcesso); + + $blocos[] = $PenBlocoProcesso->getNumIdBloco(); + } + + foreach ($blocos as $idBloco) { + $objPenBlocoProcessoRN->atualizarEstadoDoBloco($idBloco); + } } $this->objProcedimentoAndamentoRN->setOpts($objTramiteDTO->getStrNumeroRegistro(), $numIdTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), $objProcessoEletronicoDTO->getDblIdProcedimento()); diff --git a/src/rn/TramitaEmBlocoProtocoloRN.php b/src/rn/TramitaEmBlocoProtocoloRN.php deleted file mode 100644 index 815fe1b89..000000000 --- a/src/rn/TramitaEmBlocoProtocoloRN.php +++ /dev/null @@ -1,462 +0,0 @@ -validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $parObjTramitaEmBlocoProtocoloDTO); - - $parObjRelBlocoProtocoloDTO = InfraString::prepararPesquisaDTO($parObjTramitaEmBlocoProtocoloDTO, "PalavrasPesquisa", "IdxRelBlocoProtocolo"); - $parObjRelBlocoProtocoloDTO->setStrStaNivelAcessoGlobalProtocolo(ProtocoloRN::$NA_SIGILOSO, InfraDTO::$OPER_DIFERENTE); - $arrObjRelProtocoloBlocoDTO = $this->listar($parObjRelBlocoProtocoloDTO); - - foreach ($arrObjRelProtocoloBlocoDTO as $dto) { - - $objPenProtocoloDTO = new PenProtocoloDTO(); - $objPenProtocoloDTO->setDblIdProtocolo($dto->getDblIdProtocolo()); - $objPenProtocoloDTO->retStrSinObteveRecusa(); - $objPenProtocoloDTO->setNumMaxRegistrosRetorno(1); - - $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); - - if (!empty($objPenProtocoloDTO)) { - $dto->setStrSinObteveRecusa($objPenProtocoloDTO->getStrSinObteveRecusa()); - } else { - $dto->setStrSinObteveRecusa('N'); - } - - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($parObjTramitaEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); - $objTramiteEmBlocoDTO->retNumId(); - $objTramiteEmBlocoDTO->retStrStaEstado(); - - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); - - if (!empty($blocoResultado)) { - $dto->setStrStaEstadoBloco($blocoResultado->getStrStaEstado()); - } else { - $dto->setStrStaEstadoBloco('A'); - } - - $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(true); - $objPenLoteProcedimentoDTO->setDblIdProcedimento($dto->getDblIdProtocolo()); - // $objPenLoteProcedimentoDTO->setNumMaxRegistrosRetorno(1); - - $objPenLoteProcedimentoDTO->retNumIdLote(); - $objPenLoteProcedimentoDTO->retDblIdProcedimento(); - $objPenLoteProcedimentoDTO->retStrProcedimentoFormatado(); - $objPenLoteProcedimentoDTO->retNumIdAndamento(); - $objPenLoteProcedimentoDTO->retStrUnidadeDestino(); - $objPenLoteProcedimentoDTO->retStrNomeUsuario(); - $objPenLoteProcedimentoDTO->retDthRegistro(); - $objPenLoteProcedimentoDTO->setOrdNumIdLote(InfraDTO::$TIPO_ORDENACAO_DESC); - - $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); - // $objPenLoteProcedimentoRN = $objPenLoteProcedimentoRN->consultarLoteProcedimento($objPenLoteProcedimentoDTO); - $objPenLoteProcedimentoRN = $objPenLoteProcedimentoRN->listarLoteProcedimento($objPenLoteProcedimentoDTO); - - $dto->setObjPenLoteProcedimentoDTO($objPenLoteProcedimentoRN); - - // $objTramiteDTO = new TramiteDTO(); - // $objTramiteDTO->setNumIdProcedimento($dto->getDblIdProtocolo()); - // $objTramiteDTO->setOrd('IdTramite', InfraDTO::$TIPO_ORDENACAO_DESC); - // $objTramiteDTO->setNumMaxRegistrosRetorno(1); - // $objTramiteDTO->retNumIdTramite(); - // $objTramiteDTO->retDthRegistro(); - // $objTramiteDTO->retNumIdEstruturaDestino(); - // $objTramiteDTO->retStrNomeUsuario(); - - // $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); - // $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); - - // $dto->setObjTramiteDTO($arrObjPenLoteProcedimentoRN); - - - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($dto->getDblIdProtocolo()); - $objAtividadeDTO->setNumIdTarefa([ - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO) - ], InfraDTO::$OPER_IN); - $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); - $objAtividadeDTO->setNumMaxRegistrosRetorno(1); - $objAtividadeDTO->retNumIdAtividade(); - $objAtividadeDTO->retNumIdTarefa(); - $objAtividadeDTO->retDblIdProcedimentoProtocolo(); - $objAtividadeRN = new AtividadeRN(); - $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO); - - if (!empty($arrObjAtividadeDTO) && $arrObjAtividadeDTO[0]->getNumIdTarefa() != null) { - $dto->setNumStaIdTarefa($arrObjAtividadeDTO[0]->getNumIdTarefa()); - } else { - $dto->setNumStaIdTarefa(0); - } - - $ret[] = $dto; - } - - return $ret; - } catch (Exception $e) { - throw new InfraException('Erro listando protocolos do bloco.', $e); - } - } - - protected function consultarProtocolosBlocoConectado(TramitaEmBlocoProtocoloDTO $objTramitaEmBlocoProtocoloDTO) - { - $ret = array(); - - $parObjTramitaEmBlocoProtocoloDTO = $this->listar($objTramitaEmBlocoProtocoloDTO); - - foreach ($parObjTramitaEmBlocoProtocoloDTO as $objTramitaEmBlocoProtocoloDTO) { - - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($objTramitaEmBlocoProtocoloDTO->getDblIdProtocolo()); - $objAtividadeDTO->setNumIdTarefa([ - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO) - ], InfraDTO::$OPER_IN); - $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); - $objAtividadeDTO->setNumMaxRegistrosRetorno(1); - $objAtividadeDTO->retNumIdAtividade(); - $objAtividadeDTO->retNumIdTarefa(); - $objAtividadeDTO->retDblIdProcedimentoProtocolo(); - $objAtividadeRN = new AtividadeRN(); - $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO); - - if (!empty($arrObjAtividadeDTO) && $arrObjAtividadeDTO[0]->getNumIdTarefa() != null) { - $objTramitaEmBlocoProtocoloDTO->setNumStaIdTarefa($arrObjAtividadeDTO[0]->getNumIdTarefa()); - } else { - $objTramitaEmBlocoProtocoloDTO->setNumStaIdTarefa(0); - } - - return $objTramitaEmBlocoProtocoloDTO; - } - } - - - - protected function consultarConectado(TramitaEmBlocoProtocoloDTO $objDTO) - { - try { - $objTramitaEmBlocoProtocoloBD = new TramitaEmBlocoProtocoloBD($this->getObjInfraIBanco()); - return $objTramitaEmBlocoProtocoloBD->consultar($objDTO); - } catch (Exception $e) { - throw new InfraException('Erro consutando blocos.', $e); - } - } - - /** - * Método utilizado para exclusão de dados. - * @param TramitaEmBlocoProtocoloDTO $objDTO - * @return array - * @throws InfraException - */ - protected function listarControlado(TramitaEmBlocoProtocoloDTO $objDTO) - { - try { - //Valida Permissão - SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $objDTO); - - $objTramitaEmBlocoProtocoloBD = new TramitaEmBlocoProtocoloBD($this->getObjInfraIBanco()); - $arrTramitaEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloBD->listar($objDTO); - - return $arrTramitaEmBlocoProtocoloDTO; - } catch (\Exception $e) { - throw new InfraException('Falha na listagem de pendências de trâmite de processos em lote.', $e); - } - } - - /** - * Método utilizado para exclusão de dados. - * @param array $arrayObjDTO - * @return array - * @throws InfraException - */ - protected function excluirControlado(array $arrayObjDTO) - { - try { - //Valida Permissão - SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_excluir', __METHOD__, $arrayObjDTO); - - $arrayExcluido = array(); - - foreach ($arrayObjDTO as $objDTO) { - $objBD = new TramitaEmBlocoProtocoloBD(BancoSEI::getInstance()); - - $objPenProtocoloDTO = new PenProtocoloDTO(); - $objPenProtocoloDTO->setDblIdProtocolo($objDTO->getDblIdProtocolo()); - $objPenProtocoloDTO->retStrSinObteveRecusa(); - // $objPenProtocoloDTO->setNumMaxRegistrosRetorno(1); - - $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); - - $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $tramiteEmBlocoDTO->setNumId($objDTO->getNumIdTramitaEmBloco()); - $tramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); - $tramiteEmBlocoDTO->retStrStaEstado(); - $tramiteEmBlocoDTO->retNumId(); - - $tramiteEmBlocoRN = new TramiteEmBlocoRN(); - $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); - - if ($tramiteEmBloco != null) { - $arrayExcluido[] = $objBD->excluir($objDTO); - continue; - } - - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($objDTO->getDblIdProtocolo()); - $objAtividadeDTO->setNumIdTarefa([ - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO) - ], InfraDTO::$OPER_IN); - $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); - $objAtividadeDTO->setNumMaxRegistrosRetorno(1); - $objAtividadeDTO->retNumIdAtividade(); - $objAtividadeDTO->retNumIdTarefa(); - $objAtividadeDTO->retDblIdProcedimentoProtocolo(); - $objAtividadeRN = new AtividadeRN(); - $objAtividadeDTO = $objAtividadeRN->consultarRN0033($objAtividadeDTO); - - if ($objAtividadeDTO != null) { - $arrayExcluido[] = $objBD->excluir($objDTO); - } - - } - return $arrayExcluido; - } catch (Exception $e) { - throw new InfraException('Erro excluindo Bloco.', $e); - } - } - - protected function montarIndexacaoControlado(TramitaEmBlocoProtocoloDTO $objTramitaEmBlocoProtocoloDTO) - { - try { - - $dto = new TramitaEmBlocoProtocoloDTO(); - $dto->retNumId(); - - if (is_array($objTramitaEmBlocoProtocoloDTO->getNumId())) { - $dto->setNumId($objTramitaEmBlocoProtocoloDTO->getNumId(), InfraDTO::$OPER_IN); - } else { - $dto->setNumId($objTramitaEmBlocoProtocoloDTO->getNumId()); - } - - $objTramitaEmBlocoProtocoloDTOIdx = new TramitaEmBlocoProtocoloDTO(); - - $arrObjTramitaEmBlocoProtocoloDTO = $this->listar($dto); - - foreach ($arrObjTramitaEmBlocoProtocoloDTO as $dto) { - - $objTramitaEmBlocoProtocoloDTOIdx->setNumId($dto->getNumId()); - $objTramitaEmBlocoProtocoloDTOIdx->setStrIdxRelBlocoProtocolo(InfraString::prepararIndexacao($dto->getNumId())); - } - } catch (Exception $e) { - throw new InfraException('Erro montando indexação de processos em bloco.', $e); - } - } - - protected function cadastrarControlado(TramitaEmBlocoProtocoloDTO $objTramitaEmBlocoProtocoloDTO) - { - try { - - //Valida Permissao - SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramite_em_bloco_cadastrar', __METHOD__, $objTramitaEmBlocoProtocoloDTO); - - //Regras de Negocio - $objInfraException = new InfraException(); - - $objTramiteEmBlocoBD = new TramitaEmBlocoProtocoloBD($this->getObjInfraIBanco()); - $ret = $objTramiteEmBlocoBD->cadastrar($objTramitaEmBlocoProtocoloDTO); - - $this->montarIndexacao($ret); - - return $ret; - } catch (Exception $e) { - throw new InfraException('Erro cadastrando Processo em Bloco.', $e); - } - } - - protected function validarBlocoDeTramiteControlado($idProtocolo) - { - $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $tramitaEmBlocoProtocoloDTO->retNumId(); - $tramitaEmBlocoProtocoloDTO->setDblIdProtocolo($idProtocolo); - $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - $tramitaEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); - - $arrTramitaEmBloco = $this->listar($tramitaEmBlocoProtocoloDTO); - - foreach ($arrTramitaEmBloco as $tramitaEmBloco) { - $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $tramiteEmBlocoDTO->setNumId($tramitaEmBloco->getNumIdTramitaEmBloco()); - $tramiteEmBlocoDTO->setStrStaEstado([ - TramiteEmBlocoRN::$TE_ABERTO, - TramiteEmBlocoRN::$TE_DISPONIBILIZADO, - ], InfraDTO::$OPER_IN); - $tramiteEmBlocoDTO->retStrDescricao(); - $tramiteEmBlocoDTO->retStrStaEstado(); - $tramiteEmBlocoDTO->retNumId(); - - $tramiteEmBlocoRN = new TramiteEmBlocoRN(); - $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); - - if (!empty($tramiteEmBloco)) { - return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrIdxRelBlocoProtocolo()} encontra-se inserido no bloco {$tramiteEmBloco->getNumId()} - {$tramiteEmBloco->getStrDescricao()}. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; - } - - $processoRecusadoNoBlocoParcial = $this->validarBlocoEstadoConcluidoParcial($tramitaEmBloco->getNumIdTramitaEmBloco(), $idProtocolo); - if ($processoRecusadoNoBlocoParcial !== false) { - return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrIdxRelBlocoProtocolo()} encontra-se inserido no bloco {$processoRecusadoNoBlocoParcial->getNumId()} - {$processoRecusadoNoBlocoParcial->getStrDescricao()}. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; - } - } - - return false; - } - - public function validarBlocoEstadoConcluidoParcial($dblIdbloco, $idProtocolo) - { - $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $tramiteEmBlocoDTO->setNumId($dblIdbloco); - $tramiteEmBlocoDTO->setStrStaEstado([ - TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE, - ], InfraDTO::$OPER_IN); - $tramiteEmBlocoDTO->retStrDescricao(); - $tramiteEmBlocoDTO->retStrStaEstado(); - $tramiteEmBlocoDTO->retNumId(); - - $tramiteEmBlocoRN = new TramiteEmBlocoRN(); - $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); - - if (!empty($tramiteEmBloco)) { - $objPenProtocolo = new PenProtocoloDTO(); - $objPenProtocolo->setDblIdProtocolo($idProtocolo); - $objPenProtocolo->setStrSinObteveRecusa('S'); - $objPenProtocolo->setNumMaxRegistrosRetorno(1); - $objPenProtocolo->retDblIdProtocolo(); - - $objPenProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $ObjPenProtocoloDTO = $objPenProtocoloBD->consultar($objPenProtocolo); - - if ($ObjPenProtocoloDTO != null) { - return $tramiteEmBloco; - } - } - - return false; - } - - public function validarQuantidadeDeItensNoBloco($dblIdbloco, $arrProtocolosOrigem) - { - $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); - $tramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($dblIdbloco); - $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); - $tramitaEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); - - $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); - $arrTramitaEmBlocoProtocolo = $tramitaEmBlocoProtocoloRN->listar($tramitaEmBlocoProtocoloDTO); - $numRegistroBloco = count($arrTramitaEmBlocoProtocolo); - $numRegistroItens = count($arrProtocolosOrigem); - - $numMaximoDeProcessos = 100; - if (!empty($numRegistroBloco) && $numRegistroBloco >= $numMaximoDeProcessos) { - return "Não é possível incluir mais que {$numMaximoDeProcessos} processos em um único bloco. O bloco selecionado já atingiu sua capacidade máxima."; - } - - if ($numRegistroBloco+$numRegistroItens > $numMaximoDeProcessos) { - return "Não é possível incluir mais que {$numMaximoDeProcessos} processos em um único bloco. Por favor, selecione outro bloco ou selecione uma quantidade menor de processos."; - } - - return false; - } - - /** - * Atualizar Bloco de tramite externo para concluído - */ - public function atualizarEstadoDoBloco(TramitaEmBlocoProtocoloDTO $tramiteEmBlocoProtocoloDTO, $novoEstadoDoBloco) - { - // Verificar se tem existe processo recusado dentro de um bloco - $objTramiteEmBlocoProtocoloDTO2 = new TramitaEmBlocoProtocoloDTO(); - $objTramiteEmBlocoProtocoloDTO2->setNumIdTramitaEmBloco($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); - $objTramiteEmBlocoProtocoloDTO2->retNumIdTramitaEmBloco(); - $objTramiteEmBlocoProtocoloDTO2->retDblIdProtocolo(); - - $objTramiteEmBlocoProtocoloDTORN = new TramitaEmBlocoProtocoloRN($objTramiteEmBlocoProtocoloDTO2); - - $arrTramiteEmBlocoProtocolo = $objTramiteEmBlocoProtocoloDTORN->listar($objTramiteEmBlocoProtocoloDTO2); - - $objPenProtocolo = new PenProtocoloDTO(); - $objPenProtocolo->setDblIdProtocolo(InfraArray::converterArrInfraDTO($arrTramiteEmBlocoProtocolo, 'IdProtocolo'), InfraDTO::$OPER_IN); - $objPenProtocolo->setStrSinObteveRecusa('S'); - $objPenProtocolo->setNumMaxRegistrosRetorno(1); - $objPenProtocolo->retDblIdProtocolo(); - - $objPenProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $ObjPenProtocoloDTO = $objPenProtocoloBD->consultar($objPenProtocolo); - - if ($ObjPenProtocoloDTO != null) { - return null; - } - // não atualizar para concluido quando o bloco estiver em concluido parcialmente - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); - $objTramiteEmBlocoDTO->setStrStaEstado([ - TramiteEmBlocoRN::$TE_ABERTO, - TramiteEmBlocoRN::$TE_DISPONIBILIZADO, - ], InfraDTO::$OPER_IN); - $objTramiteEmBlocoDTO->retNumId(); - $objTramiteEmBlocoDTO->retStrStaEstado(); - - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $objTramiteEmBlocoDTO = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); - - if ($objTramiteEmBlocoDTO != null) { - $objTramiteEmBlocoDTO->setStrStaEstado($novoEstadoDoBloco); - $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); - } - } - - /** - * Atualizar Bloco de tramite externo para concluído parcialmente - */ - public function atualizarEstadoDoBlocoConcluidoParcialmente($arrTramiteEmBlocoProtocoloDTO) - { - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($arrTramiteEmBlocoProtocoloDTO[0]->getNumIdTramitaEmBloco()); - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); - - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); - } -} \ No newline at end of file diff --git a/src/rn/TramiteEmBlocoRN.php b/src/rn/TramiteEmBlocoRN.php index 3063cc6c5..55a98ac7f 100644 --- a/src/rn/TramiteEmBlocoRN.php +++ b/src/rn/TramiteEmBlocoRN.php @@ -140,6 +140,21 @@ public function retornarEstadoDescricao($estado = null) } } + /** + * Metodo responsável por verificar se existe uma unidade mapeada para a unidade logada + * + * @return bool + */ + public function existeUnidadeMapeadaParaUnidadeLogada() + { + $objPenUnidadeDTO = new PenUnidadeDTO(); + $objPenUnidadeDTO->retNumIdUnidade(); + $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objPenUnidadeRN = new PenUnidadeRN(); + + return $objPenUnidadeRN->contar($objPenUnidadeDTO) > 0; + } + protected function listarConectado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO) { try { @@ -218,7 +233,6 @@ protected function cadastrarControlado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO) $this->validarStrStaTipo($objTramiteEmBlocoDTO, $objInfraException); - $this->validarNumIdUsuario($objTramiteEmBlocoDTO, $objInfraException); $this->validarStrDescricao($objTramiteEmBlocoDTO, $objInfraException); $this->validarStrIdxBloco($objTramiteEmBlocoDTO, $objInfraException); $this->validarStrStaEstado($objTramiteEmBlocoDTO, $objInfraException); @@ -348,12 +362,12 @@ protected function excluirControlado(array $arrayObjDTO) protected function cancelarControlado(array $blocoIds) { try { - $objBloco = new TramitaEmBlocoProtocoloDTO(); + $objBloco = new PenBlocoProcessoDTO(); foreach ($blocoIds as $blocoId) { - $objBloco->setNumIdTramitaEmBloco($blocoId); + $objBloco->setNumIdBloco($blocoId); $objBloco->retDblIdProtocolo(); - $tramiteEmBlocoProtocoloRn = new TramitaEmBlocoProtocoloRN(); - $protocoloIds = $tramiteEmBlocoProtocoloRn->listar($objBloco); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $protocoloIds = $objPenBlocoProcessoRN->listar($objBloco); $protocoloRn = new ExpedirProcedimentoRN(); foreach ($protocoloIds as $protocoloId) { $protocoloRn->cancelarTramite($protocoloId->getDblIdProtocolo()); diff --git a/src/rn/VerificadorInstalacaoRN.php b/src/rn/VerificadorInstalacaoRN.php index 62e0564da..092088184 100755 --- a/src/rn/VerificadorInstalacaoRN.php +++ b/src/rn/VerificadorInstalacaoRN.php @@ -34,7 +34,7 @@ class VerificadorInstalacaoRN extends InfraRN // Versões SEI '3.1.0', '3.1.1', '3.1.2', '3.1.3', '3.1.4', '3.1.5', '3.1.6', '3.1.7', '4.0.0', '4.0.1' , '4.0.2' , '4.0.3', '4.0.4', '4.0.5', '4.0.6', '4.0.7', - '4.0.8', '4.0.9', '4.0.10', '4.0.11', '4.0.12', '4.1.1', '4.1.2', + '4.0.8', '4.0.9', '4.0.10', '4.0.11', '4.0.12', '4.1.1', '4.1.2', '4.1.3', // Versões SUPER '4.0.3.1', '4.0.3.2', '4.0.3.3', '4.0.3.4', '4.0.3.5', '4.0.4.6', '4.0.5.7', '4.0.6.8', '4.0.7.9', '4.0.8.10', '4.0.9.11', '4.0.9.12', '4.0.9.13', '4.0.9.14', '4.0.12.15' @@ -57,7 +57,8 @@ public function verificarPosicionamentoScripts() { $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../scripts/mod-pen/sei_atualizar_versao_modulo_pen.php'); $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../scripts/mod-pen/verifica_instalacao_modulo_pen.php'); - $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../scripts/mod-pen/MonitoramentoTarefasPEN.php'); + $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php'); + $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php'); $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../scripts/mod-pen/ProcessamentoTarefasPEN.php'); $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../config/mod-pen/ConfiguracaoModPEN.php'); $this->verificarExistenciaArquivo(DIR_SEI_WEB . '/../bin/mod-pen/verificar-reboot-fila.sh'); diff --git a/src/scripts/MonitoramentoEnvioTarefasPEN.php b/src/scripts/MonitoramentoEnvioTarefasPEN.php new file mode 100644 index 000000000..04efe10ad --- /dev/null +++ b/src/scripts/MonitoramentoEnvioTarefasPEN.php @@ -0,0 +1,38 @@ +setBolLigado(true); + InfraDebug::getInstance()->setBolDebugInfra(false); + InfraDebug::getInstance()->setBolEcho(true); + InfraDebug::getInstance()->limpar(); + + try { + SessaoSEI::getInstance(false); + $arrParametros = getopt("fd", array("monitorar", "segundo-plano", "debug", "wsdl-cache:")); + $bolMonitorar = array_key_exists("f", $arrParametros) || array_key_exists("monitorar", $arrParametros); + $parBolSegundoPlano = array_key_exists("d", $arrParametros) || array_key_exists("segundo-plano", $arrParametros); + $parBoldebug = array_key_exists("debug", $arrParametros); + $parStrWsdlCacheDir = array_key_exists("wsdl-cache", $arrParametros) ? $arrParametros["wsdl-cache"] : null; + + if(is_dir($parStrWsdlCacheDir)){ + ini_set('soap.wsdl_cache_dir', $parStrWsdlCacheDir); + } + + $objPendenciasTramiteRN = new PendenciasEnvioTramiteRN("MONITORAMENTO"); + $resultado = $objPendenciasTramiteRN->expedirPendencias($bolMonitorar, $parBolSegundoPlano, $parBoldebug); + exit($resultado); + + } finally { + InfraDebug::getInstance()->setBolLigado(false); + InfraDebug::getInstance()->setBolDebugInfra(false); + InfraDebug::getInstance()->setBolEcho(false); + } +} diff --git a/src/scripts/MonitoramentoTarefasPEN.php b/src/scripts/MonitoramentoRecebimentoTarefasPEN.php similarity index 92% rename from src/scripts/MonitoramentoTarefasPEN.php rename to src/scripts/MonitoramentoRecebimentoTarefasPEN.php index ec10f5928..c3119805c 100755 --- a/src/scripts/MonitoramentoTarefasPEN.php +++ b/src/scripts/MonitoramentoRecebimentoTarefasPEN.php @@ -27,7 +27,7 @@ } $objPendenciasTramiteRN = new PendenciasTramiteRN("MONITORAMENTO"); - $resultado = $objPendenciasTramiteRN->encaminharPendencias($bolMonitorar, $parBolSegundoPlano, $parBoldebug); + $resultado = $objPendenciasTramiteRN->receberPendencias($bolMonitorar, $parBolSegundoPlano, $parBoldebug); exit($resultado); } finally { diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index 0c8e6a858..bab41c2a9 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -281,6 +281,8 @@ protected function atualizarVersaoConectado() $this->instalarV3061(); case '3.6.1': $this->instalarV3062(); + case '3.6.2': + $this->instalarV3070(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -1477,7 +1479,6 @@ protected function instalarV117() if ($objEspecieDocumentalBD->contar($objEspecieDocumentalDTO) == 0) { $objEspecieDocumentalDTO->setStrNomeEspecie($strNomeEspecie); // Descrição da espécie documental não mais necessária a partir da versão 2.0.0 - //$objEspecieDocumentalDTO->setStrDescricao($strDescricao); $objEspecieDocumentalBD->cadastrar($objEspecieDocumentalDTO); } }; @@ -2104,7 +2105,6 @@ protected function instalarV2000_beta1() $objInfraAgendamentoTarefaBD->cadastrar($objReceberProcessosPEN); } - // Remoção de agendamento de tarefas do verificação dos serviços do Barramento por não ser mais necessário $objInfraAgendamentoTarefaBD = new InfraAgendamentoTarefaBD(BancoSEI::getInstance()); $objInfraAgendamentoTarefaDTO = new InfraAgendamentoTarefaDTO(); @@ -2728,8 +2728,8 @@ protected function instalarV3060() 'id_comp_digitais' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), 'id_estrutura' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'str_estrutura' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO), - 'id_unidade_pen' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'str_unidade_pen' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO), + 'id_unidade_pen' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'str_unidade_pen' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO), ), 'pk' => array('cols' => array('id_comp_digitais')), 'uk' => array('id_estrutura', 'id_unidade_pen'), @@ -2751,7 +2751,7 @@ protected function instalarV3060() $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); //Inserir Componentes Digitais no Banco de acordo com os parâmetros do ConfiguracaoModPEN.php - $arrObjEnviarDocumentosPendentes = ConfiguracaoModPEN::getInstance()->getValor("PEN", "EnviarApenasComponentesDigitaisPendentes"); + $arrObjEnviarDocumentosPendentes = ConfiguracaoModPEN::getInstance()->getValor("PEN", "EnviarApenasComponentesDigitaisPendentes", false); $objParamEnviarDocumentosPendentes = !is_null($arrObjEnviarDocumentosPendentes) ? $arrObjEnviarDocumentosPendentes : false; $objSessaoSEI = SessaoSEI::getInstance(); $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN(); @@ -2796,6 +2796,279 @@ protected function instalarV3061(){ protected function instalarV3062(){ $this->atualizarNumeroVersao("3.6.2"); } + + protected function instalarV3070() + { + // Criação da tabela restrição + $objMetaRestricaoBD = $this->objMeta; + $SNULLO = BancoSEI::getInstance() instanceof InfraPostgreSql ? 'null' : PenMetaBD::SNULLO; + + // Remoção de coluna sin_padrao da tabela md_pen_rel_doc_map_enviado + $this->logar("CRIANDO TABELA DE CONFIGURACAO PARA RESTRICAO "); + $objMetaRestricaoBD->criarTabela(array( + 'tabela' => 'md_pen_uni_restr', + 'cols' => array( + 'id' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'id_unidade' => array($objMetaRestricaoBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_unidade_rh' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'id_unidade_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'nome_unidade_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), $SNULLO), + 'id_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'nome_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), $SNULLO), + ), + 'pk' => array('cols' => array('id')), + 'fks' => array( + 'unidade' => array('id_unidade', 'id_unidade') + ) + )); + + // Criando nova sequência + $objInfraSequenciaRestricaoRN = new InfraSequenciaRN(); + $objInfraSequenciaRestricaoDTO = new InfraSequenciaDTO(); + + //Sequência: md_pen_seq_hipotese_legal + $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_uni_restr'); + $numMaxId = $rs[0]['total']; + if ($numMaxId == null) { + $numMaxId = 0; + } + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_uni_restr', $numMaxId + 1); + $objInfraSequenciaRestricaoDTO->setStrNome('md_pen_uni_restr'); + $objInfraSequenciaRestricaoDTO->retStrNome(); + $arrObjInfraSequenciaRestricaoDTO = $objInfraSequenciaRestricaoRN->listar($objInfraSequenciaRestricaoDTO); + $objInfraSequenciaRestricaoRN->excluir($arrObjInfraSequenciaRestricaoDTO); + + // FIM da Criação da tabela restrição + + $objMetaBD = $this->objMeta; + $objInfraBanco = BancoSEI::getInstance(); + + $objInfraAgendamentoTarefaBD = new InfraAgendamentoTarefaBD(BancoSEI::getInstance()); + $objReceberProcessosPEN = new InfraAgendamentoTarefaDTO(); + $objReceberProcessosPEN->setStrComando("PENAgendamentoRN::processarTarefasPEN"); + $objReceberProcessosPEN->setBolExclusaoLogica(false); + $objReceberProcessosPEN->retTodos(); + if ($objInfraAgendamentoTarefaBD->contar($objReceberProcessosPEN) > 0) { + $objReceberProcessosPEN->retTodos(); + $objReceberProcessosPEN = $objInfraAgendamentoTarefaBD->consultar($objReceberProcessosPEN); + $objInfraAgendamentoTarefaBD->excluir($objReceberProcessosPEN); + } + + // Alterar colunas em md_pen_expedir_lote + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_repositorio_destino', $objMetaBD->tipoNumero(), $SNULLO); + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'str_repositorio_destino', $objMetaBD->tipoTextoVariavel(250), $SNULLO); + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_repositorio_origem', $objMetaBD->tipoNumero(), $SNULLO); + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_unidade_origem', $objMetaBD->tipoNumero(), $SNULLO); + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_unidade_destino', $objMetaBD->tipoNumero(), $SNULLO); + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'str_unidade_destino', $objMetaBD->tipoTextoVariavel(250), $SNULLO); + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_usuario', $objMetaBD->tipoNumero(), $SNULLO); + $objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_unidade', $objMetaBD->tipoNumero(), $SNULLO); + + // Alterar id da tabela + $this->excluirChaveEstrangeira("md_pen_rel_expedir_lote", "fk_md_pen_rel_expedir_lote", true); + try { + $objMetaBD->renomearColuna("md_pen_expedir_lote", "id_lote", "id_bloco_processo", $objMetaBD->tipoNumero()); + } catch (Exception $e) { + if (strpos($e->__toString(), 'Caution: Changing any part of an object name could break scripts and stored procedures.') === false) { + throw $e; + } + } + + $this->excluirChaveEstrangeira("md_pen_expedir_lote", "fk_bloco_protocolo", true); + $this->excluirChaveEstrangeira("md_pen_rel_expedir_lote", "fk_md_pen_rel_expedir_lote", true); + $this->excluirChaveEstrangeira("md_pen_bloco_protocolo", "fk_bloco_protocolo", true); + try { + $objMetaBD->novoRenomearTabela("md_pen_expedir_lote", "md_pen_bloco_processo"); + } catch (Exception $e) { + if (strpos($e->__toString(), 'Caution: Changing any part of an object name could break scripts and stored procedures.') === false) { + throw $e; + } + } + + $objInfraSequenciaRN = new InfraSequenciaRN(); + $objInfraSequenciaDTO = new InfraSequenciaDTO(); + + //Sequência: md_pen_seq_lote + $rs = BancoSEI::getInstance()->consultarSql('select max(id_bloco_processo) as total from md_pen_bloco_processo'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + $objInfraBanco->criarSequencialNativa('md_pen_seq_bloco_processo', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_seq_bloco_processo'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + // Atualizar md_pen_bloco_processo->ordem para 1 + $objInfraBanco->executarSql('delete from md_pen_bloco_processo'); + + // Excluir bloco legados + $this->limparBlocos(); + + // Adicionar coluna de atualização do registro + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'dth_atualizado', $objMetaBD->tipoDataHora(), $SNULLO); + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'dth_envio', $objMetaBD->tipoDataHora(), $SNULLO); + + // Adicionar campos extrar para a tabela md_pen_bloco_processo + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'id_protocolo', $objMetaBD->tipoNumeroGrande(10), PenMetaBD::NNULLO); + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'id_bloco', $objMetaBD->tipoNumero(10), PenMetaBD::NNULLO); + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'sequencia', $objMetaBD->tipoNumero(10), $SNULLO); + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'id_andamento', $objMetaBD->tipoNumero(11), $SNULLO); + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'id_atividade_expedicao', $objMetaBD->tipoTextoVariavel(4000), $SNULLO); + $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'tentativas', $objMetaBD->tipoNumero(), $SNULLO); + + $objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_proc_procedi", "md_pen_bloco_processo", array('id_protocolo'), "protocolo", array('id_protocolo'), false); + $objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_processo_bl", "md_pen_bloco_processo", array('id_bloco'), "md_pen_bloco", array('id'), false); + + //Adicionar coluna para ordenar blocos por unidade + $objMetaBD->adicionarColuna('md_pen_bloco', 'ordem', $objMetaBD->tipoNumero(10), PenMetaBD::NNULLO); + + $tabelas = ['md_pen_bloco_protocolo', + 'md_pen_seq_bloco_protocolo', + 'md_pen_rel_expedir_lote', + 'md_pen_seq_expedir_lote']; + + $this->removerTabelas($tabelas); + + // Adicionar agendamento de atualização de informações de envio + $objInfraAgendamentoTarefaBD = new InfraAgendamentoTarefaBD(BancoSEI::getInstance()); + $objReceberProcessosPEN = new InfraAgendamentoTarefaDTO(); + $objReceberProcessosPEN->setStrComando("PENAgendamentoRN::processarTarefasEnvioPEN"); + if ($objInfraAgendamentoTarefaBD->contar($objReceberProcessosPEN) == 0) { + $strDesc = "Recebe as notificações de novos trâmites de processos/documentos, notificações de conclusão de trâmites ou recusas de recebimento de processos por outras instituições. \n\n"; + $strDesc .= "Este agendamento considera os seguintes parâmetros durante sua execução:\n"; + $strDesc .= " - debug: Indica se o log de debug gerado no processamento será registrado nos logs do sistema (valores: true,false | padrão: false)\n"; + $strDesc .= " - workers: Quantidade de processos paralelos que serão abertos para processamento de tarefas (valores: 0-9 | padrão: 4)\n"; + $objReceberProcessosPEN->setStrDescricao($strDesc); + $objReceberProcessosPEN->setStrStaPeriodicidadeExecucao("N"); + $objReceberProcessosPEN->setStrPeriodicidadeComplemento("0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58"); + $objReceberProcessosPEN->setStrSinAtivo("S"); + $objReceberProcessosPEN->setStrSinSucesso("S"); + $objInfraAgendamentoTarefaBD->cadastrar($objReceberProcessosPEN); + } + + $objReceberProcessosPEN = new InfraAgendamentoTarefaDTO(); + $objReceberProcessosPEN->setStrComando("PENAgendamentoRN::processarTarefasRecebimentoPEN"); + if ($objInfraAgendamentoTarefaBD->contar($objReceberProcessosPEN) == 0) { + $objReceberProcessosPEN->setStrComando("PENAgendamentoRN::processarTarefasRecebimentoPEN"); + $strDesc = "Recebe as notificações de novos trâmites de processos/documentos, notificações de conclusão de trâmites ou recusas de recebimento de processos por outras instituições. \n\n"; + $strDesc .= "Este agendamento considera os seguintes parâmetros durante sua execução:\n"; + $strDesc .= " - debug: Indica se o log de debug gerado no processamento será registrado nos logs do sistema (valores: true,false | padrão: false)\n"; + $strDesc .= " - workers: Quantidade de processos paralelos que serão abertos para processamento de tarefas (valores: 0-9 | padrão: 4)\n"; + $objReceberProcessosPEN->setStrDescricao($strDesc); + $objReceberProcessosPEN->setStrStaPeriodicidadeExecucao("N"); + $objReceberProcessosPEN->setStrPeriodicidadeComplemento("0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58"); + $objReceberProcessosPEN->setStrSinAtivo("S"); + $objReceberProcessosPEN->setStrSinSucesso("S"); + $objInfraAgendamentoTarefaBD->cadastrar($objReceberProcessosPEN); + } + + $this->atualizarHipotesesLegais(); + + $objMetaBD->adicionarColuna('md_pen_envio_comp_digitais', 'str_estrutura_novo', $objMetaBD->tipoTextoVariavel(255), 'null'); + BancoSEI::getInstance()->executarSql("update md_pen_envio_comp_digitais set str_estrutura_novo = str_estrutura"); + $objMetaBD->excluirColuna('md_pen_envio_comp_digitais', 'str_estrutura'); + try { + $objMetaBD->renomearColuna('md_pen_envio_comp_digitais', 'str_estrutura_novo', 'str_estrutura', $objMetaBD->tipoTextoVariavel(255)); + } catch (Exception $e) { + if (strpos($e->__toString(), 'Caution: Changing any part of an object name could break scripts and stored procedures.') === false) { + throw $e; + } + } + + $objMetaBD->adicionarColuna('md_pen_envio_comp_digitais', 'str_unidade_pen_novo', $objMetaBD->tipoTextoVariavel(255), 'null'); + BancoSEI::getInstance()->executarSql("update md_pen_envio_comp_digitais set str_unidade_pen_novo = str_unidade_pen"); + $objMetaBD->excluirColuna('md_pen_envio_comp_digitais', 'str_unidade_pen'); + try { + $objMetaBD->renomearColuna('md_pen_envio_comp_digitais', 'str_unidade_pen_novo', 'str_unidade_pen', $objMetaBD->tipoTextoVariavel(255)); + } catch (Exception $e) { + if (strpos($e->__toString(), 'Caution: Changing any part of an object name could break scripts and stored procedures.') === false) { + throw $e; + } + } + + $this->atualizarNumeroVersao("3.7.0"); + } + + /** + * Remover blocos legados + * + * @return void + */ + public function limparBlocos() + { + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retNumIdUnidade(); + $objTramiteEmBlocoDTO->retStrStaEstado(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $arrObjTramiteEmBlocoDTO = $objTramiteEmBlocoRN->listar($objTramiteEmBlocoDTO); + + if (!is_null($arrObjTramiteEmBlocoDTO) && count($arrObjTramiteEmBlocoDTO) > 0) { + $objTramiteEmBlocoRN->excluir($arrObjTramiteEmBlocoDTO); + } + } + + public function atualizarHipotesesLegais() + { + $penRelHipoteseLegal = new PenRelHipoteseLegalDTO(); + $penRelHipoteseLegal->retDblIdMap(); + $penRelHipoteseLegalRN = new PenRelHipoteseLegalEnvioRN(); + + if ($penRelHipoteseLegalRN->contar($penRelHipoteseLegal) == 0) { + $hipoteseLegalDTO = new HipoteseLegalDTO(); + $hipoteseLegalDTO->setStrSinAtivo('S'); + $hipoteseLegalDTO->retStrNome(); + $hipoteseLegalDTO->retNumIdHipoteseLegal(); + + $hipoteseLegalRN = new HipoteseLegalRN(); + $arrHipoteseLegal = $hipoteseLegalRN->listar($hipoteseLegalDTO); + + $penHipoteseLegalRN = new PenHipoteseLegalRN(); + + foreach ($arrHipoteseLegal as $hipoteseLegal) { + $penHipoteseLegal = new PenHipoteseLegalDTO(); + $penHipoteseLegal->setStrNome($hipoteseLegal->getStrNome()); + $penHipoteseLegal->setStrAtivo('S'); + $penHipoteseLegal->retStrNome(); + $penHipoteseLegal->retNumIdHipoteseLegal(); + + $penHipoteseLegal = $penHipoteseLegalRN->consultar($penHipoteseLegal); + + if ($penHipoteseLegal) { + $penRelHipoteseLegal = new PenRelHipoteseLegalDTO(); + $penRelHipoteseLegal->setNumIdHipoteseLegal($hipoteseLegal->getNumIdHipoteseLegal()); + $penRelHipoteseLegal->setNumIdBarramento($penHipoteseLegal->getNumIdHipoteseLegal()); + $penRelHipoteseLegal->retDblIdMap(); + $penRelHipoteseLegalEnvioRN = new PenRelHipoteseLegalEnvioRN(); + $penRelHipoteseLegalRecebimentoRN = new PenRelHipoteseLegalEnvioRN(); + + $penRelHipoteseLegal->setStrTipo('R'); + if (!$penRelHipoteseLegalRecebimentoRN->consultar($penRelHipoteseLegal)) { + $penRelHipoteseLegalRecebimentoRN->cadastrar($penRelHipoteseLegal); + } + + $penRelHipoteseLegal->setStrTipo('E'); + if (!$penRelHipoteseLegalEnvioRN->consultar($penRelHipoteseLegal)) { + $penRelHipoteseLegalEnvioRN->cadastrar($penRelHipoteseLegal); + } + } + } + } + } + + /** + * Remover tabelas verificando se existe + * @param array $tabelas + * @return void + */ + private function removerTabelas($tabelas) + { + foreach($tabelas as $tabela) { + if ($this->objMeta->isTabelaExiste($tabela)) { + $this->objMeta->removerTabela($tabela); + } + } + } } try { @@ -2859,4 +3132,4 @@ protected function instalarV3062(){ } exit(1); -} +} \ No newline at end of file diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index d9143c054..dc2692ba4 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -1,7 +1,7 @@ instalarV3061(); case '3.6.1': - $this->instalarV3062(); + $this->instalarV3062(); + case '3.6.2': + $this->instalarV3070(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -1932,15 +1934,15 @@ protected function instalarV3050() // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Listar $numIdItemMenuRecuso = $this->criarMenu('Relacionamento entre Unidades', 20, $numIdItemMenu, $numIdMenu, $numIdRecursoListar, $numIdSistema); - $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoListar, $numIdMenu, $numIdItemMenuRecuso); + $this->cadastrarRelPerfilItemMenu($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); + $this->cadastrarRelPerfilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoExportar, $numIdMenu, $numIdItemMenuRecuso); // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Reativar Tipo de Processo $numIdItemMenuRecuso = $this->criarMenu('Reativar Mapeamento de Tipos de Processo', 22, $numIdItemMenu, $numIdMenu, $numIdRecursoReativar, $numIdSistema); - $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoReativar, $numIdMenu, $numIdItemMenuRecuso); + $this->cadastrarRelPerfilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoReativar, $numIdMenu, $numIdItemMenuRecuso); // Nova versão $this->atualizarNumeroVersao("3.5.0"); @@ -2014,17 +2016,14 @@ protected function instalarV3060() ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_incluir_processo_em_bloco_tramite'); $idMenuTramita = $this->criarMenu('Tramita GOV.BR', 55, null, $numIdMenu, $numIdRecurso1, $numIdSistema); - $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso1, $numIdMenu, $idMenuTramita); + $this->cadastrarRelPerfilItemMenu($idPerfilAdm, $numIdRecurso1, $numIdMenu, $idMenuTramita); $idMenuBlocoTramiteExterno = $this->criarMenu('Blocos de Trâmite Externo', 56, $idMenuTramita, $numIdMenu, $numIdRecurso2, $numIdSistema); - $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso2, $numIdMenu, $idMenuBlocoTramiteExterno); + $this->cadastrarRelPerfilItemMenu($idPerfilAdm, $numIdRecurso2, $numIdMenu, $idMenuBlocoTramiteExterno); $idMenuProcessoTramitadosExterno = $this->criarMenu('Processos Tramitados Externamente', 57, $idMenuTramita, $numIdMenu, $numIdRecurso3, $numIdSistema); - $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso3, $numIdMenu, $idMenuProcessoTramitadosExterno); + $this->cadastrarRelPerfilItemMenu($idPerfilAdm, $numIdRecurso3, $numIdMenu, $idMenuProcessoTramitadosExterno); - // $idMenuProcessoTramitadosLote = $this->criarMenu('Processos Tramitados em Bloco', 58, $idMenuTramita, $numIdMenu, $numIdRecurso4, $numIdSistema); - // $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso4, $numIdMenu, $idMenuProcessoTramitadosLote); - if (InfraUtil::compararVersoes(SIP_VERSAO, ">=", "3.0.0")) { $objItemMenuDTO = new ItemMenuDTO(); $objItemMenuDTO->setNumIdItemMenu($idMenuTramita); @@ -2105,13 +2104,79 @@ protected function instalarV3062() ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $idPerfilBasico, 'pen_map_envio_parcial_listar'); $this->atualizarNumeroVersao("3.6.2"); } + + protected function instalarV3070() + { + $numIdSistema = $this->getNumIdSistema('SEI'); + $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); + + $idPerfilAdm = ScriptSip::obterIdPerfil($numIdSistema, "Administrador"); + $idPerfilBasico = ScriptSip::obterIdPerfil($numIdSistema, "Básico"); + + try { + // Remove item de menu anterior e seus submenus configurados de forma errada + $numIdItemMenu = ScriptSip::obterIdItemMenu($numIdSistema, $numIdMenu, 'Processos Tramitados Externamente'); + ScriptSip::removerItemMenu($numIdSistema, $numIdMenu, $numIdItemMenu); + + $numIdItemMenu = ScriptSip::obterIdItemMenu($numIdSistema, $numIdMenu, 'Processos Tramitados em Bloco'); + ScriptSip::removerItemMenu($numIdSistema, $numIdMenu, $numIdItemMenu); + } catch (\Exception $e) { + $this->logar("Item de menu 'Processos Tramitados em Bloco' e/ou 'Processos Tramitados Externamente' não localizado(s)"); + } + + /* Corrige nome de menu de trâmite de documentos */ + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance()); + + $objItemMenuDTO = new ItemMenuDTO(); + $objItemMenuDTO->setNumIdSistema($numIdSistema); + $objItemMenuDTO->setNumIdMenu($numIdMenu); + $objItemMenuDTO->setNumIdItemMenuPai(null); + $objItemMenuDTO->setStrRotulo('Tramita GOV.BR'); + $objItemMenuDTO->setNumMaxRegistrosRetorno(1); + $objItemMenuDTO->retNumIdItemMenu(); + $objItemMenuDTO->retNumIdMenu(); + + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + if (empty($objItemMenuDTO)) { + throw new InfraException('Menu "Tramita GOV.BR" não foi localizado'); + } + + $idMenuTramita = $objItemMenuDTO->getNumIdItemMenu(); + $numIdRecurso = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos em Tramitação Externa', $numIdSistema); + + $idMenuProcessoTramitadosExterno = $this->criarMenu('Processos em Tramitação Externa', 57, $idMenuTramita, $numIdMenu, $numIdRecurso, $numIdSistema); + $this->cadastrarRelPerfilItemMenu($idPerfilBasico, $numIdRecurso, $numIdMenu, $idMenuProcessoTramitadosExterno); + $this->excluirRelPerfilItemMenu($idPerfilAdm, $numIdRecurso, $numIdMenu, $idMenuProcessoTramitadosExterno); + + $this->renomearRecurso($numIdSistema, 'pen_expedir_lote', 'pen_expedir_bloco'); + + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_map_envio_parcial_visualizar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_procedimento_expedido_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'md_pen_tramita_em_bloco'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_expedir_bloco'); + ScriptSip::removerRecursoPerfil($numIdSistema, 'pen_expedir_bloco', $idPerfilAdm); + + $numIdRecurso1 = $this->criarRecurso('pen_procedimento_expedido_listar', 'Tramita GOV.BR', $numIdSistema); + $idMenuTramita = $this->criarMenu('Tramita GOV.BR', 55, null, $numIdMenu, $numIdRecurso1, $numIdSistema); + $this->cadastrarRelPerfilItemMenu($idPerfilBasico, $numIdRecurso1, $numIdMenu, $idMenuTramita); + $this->excluirRelPerfilItemMenu($idPerfilAdm, $numIdRecurso1, $numIdMenu, $idMenuTramita); + + $numIdRecurso2 = $this->criarRecurso('md_pen_tramita_em_bloco', 'Blocos de Trâmite Externo', $numIdSistema); + $idMenuBlocoTramiteExterno = $this->criarMenu('Blocos de Trâmite Externo', 56, $idMenuTramita, $numIdMenu, $numIdRecurso2, $numIdSistema); + $this->cadastrarRelPerfilItemMenu($idPerfilBasico, $numIdRecurso2, $numIdMenu, $idMenuBlocoTramiteExterno); + $this->excluirRelPerfilItemMenu($idPerfilAdm, $numIdRecurso2, $numIdMenu, $idMenuBlocoTramiteExterno); + + + $this->atualizarNumeroVersao("3.7.0"); + } /** * Cadastrar item do menu em um perfil expecifico * * @return void */ - private function cadastrarRelPergilItemMenu($numIdPerfil, $numIdRecurso, $numIdMenu, $numIdItemMenuRecuso) + private function cadastrarRelPerfilItemMenu($numIdPerfil, $numIdRecurso, $numIdMenu, $numIdItemMenuRecuso) { $numIdSistema = $this->getNumIdSistema('SEI'); @@ -2128,8 +2193,32 @@ private function cadastrarRelPergilItemMenu($numIdPerfil, $numIdRecurso, $numIdM $objBD->cadastrar($objDTO); } } -} + /** + * Excluir item do menu em um perfil expecifico + * + * @return void + */ + private function excluirRelPerfilItemMenu($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) == 1) { + $objBD->excluir($objDTO); + } + } + + +} try { session_start(); diff --git a/tests_sei4/funcional/assets/config/supervisor.ini b/tests_sei4/funcional/assets/config/supervisor.ini index 354114e69..5515e0aa6 100755 --- a/tests_sei4/funcional/assets/config/supervisor.ini +++ b/tests_sei4/funcional/assets/config/supervisor.ini @@ -19,7 +19,25 @@ stderr_logfile=/var/log/supervisor/sei_processar_pendencias.log-err stderr_events_enabled=true [program:monitoramento_tarefas_pen] -command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoTarefasPEN.php --monitorar --segundo-plano +command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php --monitorar --segundo-plano +directory=/opt/sei/web +numprocs=1 +user=apache +autostart=true +autorestart=true +startsecs=5 +startretries=1000 +log_stdout=true +log_stderr=true +logfile_maxbytes=10MB +logfile_backups=50 +logfile=/var/log/supervisor/sei_monitorar_pendencias.log +stdout_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-out +stderr_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-err +stderr_events_enabled=true + +[program:monitoramento_tarefas_pen] +command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php --monitorar --segundo-plano directory=/opt/sei/web numprocs=1 user=apache diff --git a/tests_sei4/funcional/bootstrap.php b/tests_sei4/funcional/bootstrap.php index 7e81e46e9..2d202ecd5 100755 --- a/tests_sei4/funcional/bootstrap.php +++ b/tests_sei4/funcional/bootstrap.php @@ -39,3 +39,4 @@ require_once __DIR__ . '/src/paginas/PaginaEnvioParcialListar.php'; require_once __DIR__ . '/tests/CenarioBaseTestCase.php'; +require_once __DIR__ . '/tests/FixtureCenarioBaseTestCase.php'; diff --git a/tests_sei4/funcional/src/fixtures/AnexoProcessoFixture.php b/tests_sei4/funcional/src/fixtures/AnexoProcessoFixture.php deleted file mode 100644 index a7ebfb91d..000000000 --- a/tests_sei4/funcional/src/fixtures/AnexoProcessoFixture.php +++ /dev/null @@ -1,49 +0,0 @@ -cadastrar( - [ - 'IdProtocolo' => $dados['IdProtocolo'], - 'IdTarefa' => \TarefaRN::$TI_ANEXADO_PROCESSO,//101 - ] - ); - $objAtividadeFixture->cadastrar( - [ - 'IdProtocolo' => $dados['IdDocumento'], - 'IdTarefa' => \TarefaRN::$TI_ANEXADO_AO_PROCESSO,//102 - 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, - 'Conclusao' => InfraData::getStrDataHoraAtual(), - - ] - ); - $objAtividadeFixture->cadastrar( - [ - 'IdProtocolo' => $dados['IdDocumento'], - 'IdTarefa' => \TarefaRN::$TI_CONCLUSAO_AUTOMATICA_UNIDADE,//41 - 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, - 'Conclusao' => InfraData::getStrDataHoraAtual(), - ] - ); - - $parametros = [ - 'IdProtocolo' => $dados['IdProtocolo'], // idprotocolo1 - 'IdDocumento' => $dados['IdDocumento'], // idprotocolo2 - 'Associacao' => 2, - ]; - $objRelProtocoloProtocoloFixture = new RelProtocoloProtocoloFixture(); - $objRelProtocoloProtocoloFixtureDTO = $objRelProtocoloProtocoloFixture->carregar($parametros); - return $objRelProtocoloProtocoloFixtureDTO; - - } -} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/Anexofixture.php b/tests_sei4/funcional/src/fixtures/Anexofixture.php deleted file mode 100644 index 746d98dc6..000000000 --- a/tests_sei4/funcional/src/fixtures/Anexofixture.php +++ /dev/null @@ -1,74 +0,0 @@ -setNumIdUnidade($dados['IdUnidade'] ?: '110000001'); - $objAnexoDTO->setDblIdProtocolo($dados['IdProtocolo']); - $objAnexoDTO->setNumTamanho($dados['Tamanho'] ?: 16); - $objAnexoDTO->setNumIdBaseConhecimento($dados['IdBaseConhecimento'] ?: null); - $objAnexoDTO->setStrNome($dados['Nome']); - $objAnexoDTO->setDthInclusao($dados['Inclusao'] ?: \InfraData::getStrDataHoraAtual()); - $objAnexoDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); - $objAnexoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); - $objAnexoDTO->setStrHash($dados['Hash'] ?: 'e307098a01b40de6183583f3163ac6ed'); - - $objAnexoBD = new \AnexoBD(\BancoSEI::getInstance()); - $objAnexoDTO = $objAnexoBD->cadastrar($objAnexoDTO); - $this->realizarUpload($dados['Nome'],$objAnexoDTO->getNumIdAnexo()); - - return $objAnexoDTO; - } - - public function realizarUpload($caminhoOrigem, $nomeDestino) - { - - // Obtém a orgão atual - $org = getenv('DATABASE_HOST'); - - // Obtém a data atual - $dataAtual = date('Y/m/d'); - - // Define os caminhos de destino baseado na data atual e no orgão que será feito o upload - $caminhoDestinoBase = "/var/sei/arquivos/{$org}/{$dataAtual}/"; - $caminhoOrigemBase = '/tmp/'; - - // Cria o diretório de destino se não existir - if (!file_exists($caminhoDestinoBase)) { - mkdir($caminhoDestinoBase, 0777, true); // Cria diretórios recursivamente com permissão 0777 - } - - // Cria o caminho completo de destino - $caminhoDestinoCompleto = $caminhoDestinoBase.$nomeDestino; - - // Cria o caminho completo de origem - $caminhoOrigemCompleto = $caminhoOrigemBase.$caminhoOrigem; - - try { - // Verifica se o arquivo de origem existe - if (!file_exists($caminhoOrigemCompleto)) { - throw new \Exception("O arquivo de origem não existe.\nArquivo=".$caminhoOrigemCompleto); - } - - // Copia o arquivo para o destino - if (!copy($caminhoOrigemCompleto, $caminhoDestinoCompleto)) { - throw new \Exception("Falha ao copiar o arquivo para o destino.\nArquivo=".$caminhoOrigemCompleto."\nDestino=".$caminhoDestinoCompleto); - } - - } catch (\Exception $e) { - echo "\nErro: " . $e->getMessage(); - } - } - -} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/AtividadeFixture.php b/tests_sei4/funcional/src/fixtures/AtividadeFixture.php deleted file mode 100644 index ff8b553a5..000000000 --- a/tests_sei4/funcional/src/fixtures/AtividadeFixture.php +++ /dev/null @@ -1,42 +0,0 @@ -objAtividadeDTO = new \AtividadeDTO(); - } - - protected function inicializarObjInfraIBanco() - { - return \BancoSEI::getInstance(); - } - - protected function cadastrar($dados = []) - { - // $this->objAtividadeDTO->setNumIdAtividade($dados['setNumIdAtividade'] ?: null); - $this->objAtividadeDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); - $this->objAtividadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $this->objAtividadeDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: 110000001); - $this->objAtividadeDTO->setNumIdUsuario($dados['IdUsuario'] ?: null); - $this->objAtividadeDTO->setNumIdUsuarioOrigem($dados['IdUsuarioOrigem'] ?: 100000001); - $this->objAtividadeDTO->setDthAbertura($dados['Abertura'] ?: InfraData::getStrDataHoraAtual()); - $this->objAtividadeDTO->setDthConclusao($dados['Conclusao'] ?: null); - $this->objAtividadeDTO->setNumIdTarefa($dados['IdTarefa'] ?: null); - $this->objAtividadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); - $this->objAtividadeDTO->setNumIdUsuarioConclusao($dados['IdUsuarioConclusao'] ?: null); - $this->objAtividadeDTO->setStrSinInicial($dados['SinInicial'] ?: 'S'); - $this->objAtividadeDTO->setNumIdUsuarioVisualizacao($dados['IdUsuarioVisualizacao'] ?: null); - $this->objAtividadeDTO->setNumTipoVisualizacao($dados['TipoVisualizacao'] ?: 0); - $this->objAtividadeDTO->setDtaPrazo($dados['Prazo'] ?: null); - - $objProtocoloDB = new \AtividadeBD(\BancoSEI::getInstance()); - $objProtocoloDB->cadastrar($this->objAtividadeDTO); - - return $this->objAtividadeDTO; - } -} diff --git a/tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php index 1ee8e3ae6..4b37d6633 100644 --- a/tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php +++ b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php @@ -6,38 +6,74 @@ class BlocoDeTramiteFixture extends \FixtureBase { protected $objBlocoDeTramiteDTO; - CONST TRATAMENTO = 'Presidente, Substituto'; - CONST ID_TARJA_ASSINATURA = 2; + const TRATAMENTO = 'Presidente, Substituto'; + const ID_TARJA_ASSINATURA = 2; - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - protected function cadastrar($dados = []) + protected function cadastrar($dados = []) { - $objBlocoDeTramiteDTO = new \TramiteEmBlocoDTO(); + $objBlocoDeTramiteDTO = new \TramiteEmBlocoDTO(); - $objBlocoDeTramiteDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $objBlocoDeTramiteDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); - $objBlocoDeTramiteDTO->setStrDescricao($dados['Descricao'] ?: 'Bloco para envio'); - $objBlocoDeTramiteDTO->setStrIdxBloco($dados['IdxBloco'] ?: 'Bloco para envio'); - $objBlocoDeTramiteDTO->setStrStaTipo($dados['IdxBloco'] ?: 'I'); - $objBlocoDeTramiteDTO->setStrStaEstado($dados['IdxBloco'] ?: 'A'); + $ordem = $this->pegarProximaOrdem($dados['IdUnidade'] ?: 110000001); - $objBlocoDeTramiteDB = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); - $objBlocoDeTramiteDB->cadastrar($objBlocoDeTramiteDTO); + $objBlocoDeTramiteDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objBlocoDeTramiteDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objBlocoDeTramiteDTO->setStrDescricao($dados['Descricao'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrIdxBloco($dados['IdxBloco'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrStaTipo($dados['IdxBloco'] ?: 'I'); + $objBlocoDeTramiteDTO->setStrStaEstado($dados['IdxBloco'] ?: 'A'); + $objBlocoDeTramiteDTO->setNumOrdem($ordem); - return $objBlocoDeTramiteDTO; - } + $objBlocoDeTramiteDB = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteDB->cadastrar($objBlocoDeTramiteDTO); + + $objUnidadeDTO = $this->consultarUnidadeRelacionada($objBlocoDeTramiteDTO); + $objBlocoDeTramiteDTO->setStrSiglaUnidade($objUnidadeDTO->getStrSigla()); + + return $objBlocoDeTramiteDTO; + } + + protected function consultarUnidadeRelacionada(TramiteEmBlocoDTO $objBlocoDeTramiteDB) + { + $objUnidadeDTO = new \UnidadeDTO(); + $objUnidadeDTO->setNumIdUnidade($objBlocoDeTramiteDB->getNumIdUnidade()); + $objUnidadeDTO->retTodos(); + + $objUnidadeBD = new \UnidadeBD($this->inicializarObjInfraIBanco()); + return $objUnidadeBD->consultar($objUnidadeDTO); + } - public function excluir($id) + public function excluir($id) { - $dto = new \TramiteEmBlocoDTO(); - $dto->setNumId($id); - $dto->retNumId(); + $dto = new \TramiteEmBlocoDTO(); + $dto->setNumId($id); + $dto->retNumId(); - $objBD = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); - $objBD->excluir($dto); + $objBD = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $objBD->excluir($dto); + } + + private function pegarProximaOrdem($unidade) + { + $tramiteEmBlocoDTO = new \TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumIdUnidade($unidade); + $tramiteEmBlocoDTO->setOrdNumOrdem(\InfraDTO::$TIPO_ORDENACAO_DESC); + $tramiteEmBlocoDTO->retNumOrdem(); + $tramiteEmBlocoDTO->setNumMaxRegistrosRetorno(1); + + $objBD = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $tramiteEmBlocoDTO = $objBD->consultar($tramiteEmBlocoDTO); + + if ($tramiteEmBlocoDTO == null) { + $ordem = 1; + } else { + $ordem = $tramiteEmBlocoDTO->getNumOrdem() + 1; } + + return $ordem; + } } diff --git a/tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php index 42ca5c465..5c2e2faa1 100644 --- a/tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php +++ b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php @@ -4,28 +4,81 @@ class BlocoDeTramiteProtocoloFixture extends \FixtureBase { protected $objBlocoDeTramiteProtocoloDTO; - public function __construct() + public function __construct() { - $this->objBlocoDeTramiteProtocoloDTO = new \TramitaEmBlocoProtocoloDTO(); - } + $this->objBlocoDeTramiteProtocoloDTO = new \PenBlocoProcessoDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - protected function cadastrar($dados = []) + protected function cadastrar($dados = []) { + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: '100000001'); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: '110000001'); + $dthRegistro = date('d/m/Y H:i:s'); + $this->objBlocoDeTramiteProtocoloDTO->setDthRegistro($dados['DthRegistro'] ?: $dthRegistro); + $this->objBlocoDeTramiteProtocoloDTO->setDthAtualizado($dados['DthAtualizado'] ?: $dthRegistro); - $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); - $this->objBlocoDeTramiteProtocoloDTO->setNumIdTramitaEmBloco($dados['IdTramitaEmBloco'] ?: null); - $this->objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: null); - $this->objBlocoDeTramiteProtocoloDTO->setStrIdxRelBlocoProtocolo($dados['IdxRelBlocoProtocolo'] ?: null); + // atualização 3.7.0 + $this->objBlocoDeTramiteProtocoloDTO->setNumIdAndamento($dados['IdAndamento'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setStrUnidadeDestino($dados['UnidadeDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeDestino($dados['IdUnidadeDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdAtividade($dados['IdAtividade'] ?: null); - - $objBlocoDeTramiteProtocoloBD = new \TramitaEmBlocoProtocoloBD(\BancoSEI::getInstance()); - $objBlocoDeTramiteProtocoloBD->cadastrar($this->objBlocoDeTramiteProtocoloDTO); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioOrigem($dados['IdRepositorioOrigem'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioDestino($dados['IdRepositorioDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setDthEnvio($dados['Envio'] ?: $dthRegistro); - return $this->objBlocoDeTramiteProtocoloDTO; - } + $this->objBlocoDeTramiteProtocoloDTO->setStrRepositorioDestino($dados['RepositorioDestino'] ?: null); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + $objBlocoDeTramiteProtocoloBD->cadastrar($this->objBlocoDeTramiteProtocoloDTO); + + return $this->objBlocoDeTramiteProtocoloDTO; + } + + protected function listar($dados = []) + { + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo']); + $this->objBlocoDeTramiteProtocoloDTO->retTodos(); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + return $objBlocoDeTramiteProtocoloBD->listar($this->objBlocoDeTramiteProtocoloDTO); + } + + protected function alterar($dados = []) + { + + $objBlocoDeTramiteProtocoloDTO = $this->listar($dados)[0]; + + $objBlocoDeTramiteProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdBloco()); + $objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: $objBlocoDeTramiteProtocoloDTO->getNumSequencia()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUsuario()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidade()); + $dthRegistro = date('d/m/Y H:i:s'); + $objBlocoDeTramiteProtocoloDTO->setDthRegistro($dados['DthRegistro'] ?: $objBlocoDeTramiteProtocoloDTO->getDthRegistro()); + $objBlocoDeTramiteProtocoloDTO->setDthAtualizado($dados['DthAtualizado'] ?: $dthRegistro); + + $objBlocoDeTramiteProtocoloDTO->setNumIdAndamento($dados['IdAndamento'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdAndamento()); + $objBlocoDeTramiteProtocoloDTO->setStrUnidadeDestino($dados['UnidadeDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getStrUnidadeDestino()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidadeOrigem()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeDestino($dados['IdUnidadeDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidadeDestino()); + $objBlocoDeTramiteProtocoloDTO->setNumIdAtividade($dados['IdAtividade'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdAtividade()); + + $objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioOrigem($dados['IdRepositorioOrigem'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdRepositorioOrigem()); + $objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioDestino($dados['IdRepositorioDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdRepositorioDestino()); + $objBlocoDeTramiteProtocoloDTO->setDthEnvio($dados['Envio'] ?: $objBlocoDeTramiteProtocoloDTO->getDthEnvio()); + + $objBlocoDeTramiteProtocoloDTO->setStrRepositorioDestino($dados['RepositorioDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getStrRepositorioDestino()); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + return $objBlocoDeTramiteProtocoloBD->alterar($objBlocoDeTramiteProtocoloDTO); + } } diff --git a/tests_sei4/funcional/src/fixtures/ContatoFixture.php b/tests_sei4/funcional/src/fixtures/ContatoFixture.php deleted file mode 100644 index f80e6d891..000000000 --- a/tests_sei4/funcional/src/fixtures/ContatoFixture.php +++ /dev/null @@ -1,44 +0,0 @@ -objContatoDTO = new \ContatoDTO(); - } - - protected function inicializarObjInfraIBanco() - { - return \BancoSEI::getInstance(); - } - - protected function cadastrar($dados = []) - { - - $dados['IdContato'] = $this->getObjInfraIBanco()->getValorSequencia('seq_contato'); - $dados['Nome'] = $dados['Nome'] ?: 'teste'; - - $this->objContatoDTO->setNumIdContato($dados['IdContato']); - $this->objContatoDTO->setNumIdContatoAssociado($dados['IdContatoAssociado'] ?: $dados['IdContato']); - $this->objContatoDTO->setStrNome($dados['Nome']); - $this->objContatoDTO->setStrNomeRegistroCivil($dados['NomeRegistroCivil'] ?: $dados['Nome']); - // $this->objContatoDTO->setNumIdCargo($dados['IdCargo'] ?: 0); - // $this->objContatoDTO->setNumIdCategoria($dados['IdCategoria'] ?: 110000001); - $this->objContatoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); - $this->objContatoDTO->setStrIdxContato($dados['IdxContato'] ?: strtolower($dados['Nome'])); - $this->objContatoDTO->setNumIdUnidadeCadastro($dados['IdUnidadeCadastro'] ?: 110000001); - $this->objContatoDTO->setNumIdUsuarioCadastro($dados['IdUsuarioCadastro'] ?: 100000001); - $this->objContatoDTO->setDthCadastro($dados['Cadastro'] ?: \InfraData::getStrDataHoraAtual()); - $this->objContatoDTO->setNumIdTipoContato($dados['IdTipoContato'] ?: 4); - $this->objContatoDTO->setStrStaNatureza($dados['StaNatureza'] ?: 'F'); - $this->objContatoDTO->setStrSinEnderecoAssociado($dados['SinEnderecoAssociado'] ?: 'N'); - - $objContatoBD = new \ContatoBD(\BancoSEI::getInstance()); - $objContatoBD->cadastrar($this->objContatoDTO); - - return $this->objContatoDTO; - } - -} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/FixtureBase.php b/tests_sei4/funcional/src/fixtures/FixtureBase.php index 103c93b23..7a0811c2b 100644 --- a/tests_sei4/funcional/src/fixtures/FixtureBase.php +++ b/tests_sei4/funcional/src/fixtures/FixtureBase.php @@ -2,77 +2,95 @@ abstract class FixtureBase extends \InfraRN { - abstract protected function cadastrar($dados); + abstract protected function cadastrar($dados); - protected function cadastrarInternoControlado($parametros){ - $dto = $this->cadastrar($parametros["dados"]); + protected function cadastrarInternoControlado($parametros){ + $dto = $this->cadastrar($parametros["dados"]); - if (isset($parametros["callback"])) { - $parametros["callback"]($dto); - } - - return $dto; + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } - public function carregar($dados = null, $callback = null){ - $dados = $dados ?: []; - return $this->cadastrarInterno([ - 'dados' => $dados, - 'callback' => $callback - ]); + return $dto; + } + + public function carregar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->cadastrarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + public function carregarVarios($dados = null, $quantidade = 1){ + $resultado = []; + for ($i=0; $i < $quantidade; $i++) { + $resultado[] = $this->carregar($dados); } - - public function carregarVarios($dados = null, $quantidade = 1){ - $resultado = []; - for ($i=0; $i < $quantidade; $i++) { - $resultado[] = $this->carregar($dados); - } - return $resultado; - } + return $resultado; + } + + public function carregarVariados($dados){ + $resultado = []; + foreach ($dados as $dado) { + $resultado[] = $this->carregar($dado); + } + + return $resultado; + } - public function carregarVariados($dados){ - $resultado = []; - foreach ($dados as $dado) { - $resultado[] = $this->carregar($dado); - } + protected function listarInternoControlado($parametros){ + $dto = $this->listar($parametros["dados"]); - return $resultado; + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } - protected function listarInternoControlado($parametros){ - $dto = $this->listar($parametros["dados"]); + return $dto; + } - if (isset($parametros["callback"])) { - $parametros["callback"]($dto); - } + public function buscar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->listarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } - return $dto; - } + protected function removerInternoControlado($parametros){ + $dto = $this->excluir($parametros["dados"]); - public function buscar($dados = null, $callback = null){ - $dados = $dados ?: []; - return $this->listarInterno([ - 'dados' => $dados, - 'callback' => $callback - ]); + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } - protected function removerInternoControlado($parametros){ - $dto = $this->excluir($parametros["dados"]); + return $dto; + } - if (isset($parametros["callback"])) { - $parametros["callback"]($dto); - } + public function remover($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->removerInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } - return $dto; - } + public function atualizarInternoControlado($parametros){ + $dto = $this->alterar($parametros["dados"]); - public function remover($dados = null, $callback = null){ - $dados = $dados ?: []; - return $this->removerInterno([ - 'dados' => $dados, - 'callback' => $callback - ]); + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } + + return $dto; + } + + public function atualizar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->atualizarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } } diff --git a/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php index 8f3dd04b5..0eb1436c5 100644 --- a/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php +++ b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -5,74 +5,74 @@ class ImportacaoTiposProcessoFixture extends \FixtureBase protected $objPenMapTipoProcedimentoDTO; protected $dthRegistro; - public function __construct() + public function __construct() { - $this->objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $this->dthRegistro = \InfraData::getStrDataAtual(); - } + $this->objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $this->dthRegistro = \InfraData::getStrDataAtual(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $objPenMapTipoProcedimentoDTO = $this->consultar($dados); - if ($objPenMapTipoProcedimentoDTO) { - return $objPenMapTipoProcedimentoDTO; - } + $objPenMapTipoProcedimentoDTO = $this->consultar($dados); + if ($objPenMapTipoProcedimentoDTO) { + return $objPenMapTipoProcedimentoDTO; + } - $this->objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); - $this->objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); - $this->objPenMapTipoProcedimentoDTO->setStrNomeTipoProcesso($dados['NomeProcedimento']); - $this->objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); - $this->objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); - $this->objPenMapTipoProcedimentoDTO->setDthRegistro(\InfraData::getStrDataAtual()); + $this->objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setStrNomeTipoProcesso($dados['NomeProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?: 110000001)); + $this->objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SinAtivo'] ?: 'S')); + $this->objPenMapTipoProcedimentoDTO->setDthRegistro(\InfraData::getStrDataAtual()); - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->cadastrar($this->objPenMapTipoProcedimentoDTO); - } + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->cadastrar($this->objPenMapTipoProcedimentoDTO); + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); - $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); - $objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); - $objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); - $objPenMapTipoProcedimentoDTO->retTodos(); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?: 110000001)); + $objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SinAtivo'] ?: 'S')); + $objPenMapTipoProcedimentoDTO->retTodos(); - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); - } + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); + } - public function listar($dados = [] ) + public function listar($dados = []) { - $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); - if ($dados['IdProcedimento']) { - $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); - } - if ($dados['IdUnidade']) { - $objPenMapTipoProcedimentoDTO->setNumIdUnidade($dados['IdUnidade']); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + if ($dados['IdProcedimento']) { + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + } + if ($dados['IdUnidade']) { + $objPenMapTipoProcedimentoDTO->setNumIdUnidade($dados['IdUnidade']); - } - if ($dados['SimAtivo']) { - $objPenMapTipoProcedimentoDTO->setStrAtivo($dados['SimAtivo']); - } - $objPenMapTipoProcedimentoDTO->retTodos(); - - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); } + if ($dados['SinAtivo']) { + $objPenMapTipoProcedimentoDTO->setStrAtivo($dados['SinAtivo']); + } + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); + } - public function excluir($dados = []) + public function excluir($dados = []) { - $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $objPenMapTipoProcedimentoDTO->setDblId($dados['Id']); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($dados['Id']); - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); - } + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); + } } \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenMapEnvioParcialFixture.php b/tests_sei4/funcional/src/fixtures/PenMapEnvioParcialFixture.php index e5d6c1562..0e6172cf3 100644 --- a/tests_sei4/funcional/src/fixtures/PenMapEnvioParcialFixture.php +++ b/tests_sei4/funcional/src/fixtures/PenMapEnvioParcialFixture.php @@ -6,53 +6,53 @@ class PenMapEnvioParcialFixture extends \FixtureBase { protected $objMapEnvioParcialDTO; - public function __construct() + public function __construct() { - $this->objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); - } + $this->objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - protected function cadastrar($dados = []) + protected function cadastrar($dados = []) { - $objMapEnvioParcialDTO = $this->consultar($dados); - if ($objMapEnvioParcialDTO) { - return $objMapEnvioParcialDTO; - } - - $this->objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); - $this->objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); - $this->objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); - $this->objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); + $objMapEnvioParcialDTO = $this->consultar($dados); + if ($objMapEnvioParcialDTO) { + return $objMapEnvioParcialDTO; + } + + $this->objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); + $this->objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); + $this->objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); + $this->objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); - $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD(\BancoSEI::getInstance()); - $objMapEnvioParcialDB->cadastrar($this->objMapEnvioParcialDTO); + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + $objMapEnvioParcialDB->cadastrar($this->objMapEnvioParcialDTO); - return $this->objMapEnvioParcialDTO; - } + return $this->objMapEnvioParcialDTO; + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); - $objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); - $objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); - $objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); - $objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); - $objMapEnvioParcialDTO->retTodos(); - - $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD(\BancoSEI::getInstance()); - return $objMapEnvioParcialDB->consultar($objMapEnvioParcialDTO); - } - - public function excluir($dados = []) + $objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + $objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); + $objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); + $objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); + $objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); + $objMapEnvioParcialDTO->retTodos(); + + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + return $objMapEnvioParcialDB->consultar($objMapEnvioParcialDTO); + } + + public function excluir($dados = []) { - $this->$objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); - $this->$objMapEnvioParcialDTO->setDblId($dados['Id']); + $this->$objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + $this->$objMapEnvioParcialDTO->setDblId($dados['Id']); - $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD(\BancoSEI::getInstance()); - $objMapEnvioParcialDB->excluir($this->$objMapEnvioParcialDTO); - } + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + $objMapEnvioParcialDB->excluir($this->$objMapEnvioParcialDTO); + } } diff --git a/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php index 308a8f525..ea698cb2d 100644 --- a/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php +++ b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -7,42 +7,42 @@ class PenMapUnidadesFixture extends \FixtureBase { protected $objPenUnidadeDTO; - public function __construct() + public function __construct() { - $this->objPenUnidadeDTO = new \PenUnidadeDTO(); - } + $this->objPenUnidadeDTO = new \PenUnidadeDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $objPenUnidadeDTO = $this->consultar($dados); - if ($objPenUnidadeDTO) { - return $objPenUnidadeDTO; - } + $objPenUnidadeDTO = $this->consultar($dados); + if ($objPenUnidadeDTO) { + return $objPenUnidadeDTO; + } - $this->objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); - $this->objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); - $this->objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); - $this->objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); + $this->objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $this->objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $this->objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); - $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); - return $objPenUnidadeBD->cadastrar($this->objPenUnidadeDTO); - } + $objPenUnidadeBD = new \PenUnidadeBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeBD->cadastrar($this->objPenUnidadeDTO); + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objPenUnidadeDTO = new \PenUnidadeDTO(); - $objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); - $objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); - $objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); - $objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); - $objPenUnidadeDTO->retTodos(); + $objPenUnidadeDTO = new \PenUnidadeDTO(); + $objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); + $objPenUnidadeDTO->retTodos(); - $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); - return $objPenUnidadeBD->consultar($objPenUnidadeDTO); - } + $objPenUnidadeBD = new \PenUnidadeBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeBD->consultar($objPenUnidadeDTO); + } } \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php b/tests_sei4/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php new file mode 100644 index 000000000..087328f64 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php @@ -0,0 +1,61 @@ +objPenUnidadeRestricaoDTO = new \PenUnidadeRestricaoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + public function cadastrar($dados = []) + { + $objPenUnidadeRestricaoDTO = $this->consultar($dados); + if ($objPenUnidadeRestricaoDTO) { + return $objPenUnidadeRestricaoDTO; + } + + $this->objPenUnidadeRestricaoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($dados['IdUnidadeRH']); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRestricao($dados['IdUnidadeRestricao']); + $this->objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRHRestricao($dados['IdUnidadeRHRestricao']); + $this->objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->cadastrar($this->objPenUnidadeRestricaoDTO); + } + + public function consultar($dados = []) + { + $objPenUnidadeRestricaoDTO = new \PenUnidadeRestricaoDTO(); + + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + $objPenUnidadeRestricaoDTO->retTodos(); + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->consultar($objPenUnidadeRestricaoDTO); + } + + public function excluir($dados = []) + { + + $objPenUnidadeRestricaoDTO = $this->consultar($dados); + if (!$objPenUnidadeRestricaoDTO) { + return false; + } + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->excluir($objPenUnidadeRestricaoDTO); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php index 38a8395f0..474b0b83f 100644 --- a/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php +++ b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -4,60 +4,60 @@ class PenOrgaoExternoFixture extends \FixtureBase { protected $objPenOrgaoExternoDTO; - public function __construct() + public function __construct() { - $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - } + $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $this->objPenOrgaoExternoDTO = $this->consultar($dados); - if ($this->objPenOrgaoExternoDTO) { - return $this->objPenOrgaoExternoDTO; - } + $this->objPenOrgaoExternoDTO = $this->consultar($dados); + if ($this->objPenOrgaoExternoDTO) { + return $this->objPenOrgaoExternoDTO; + } - $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - $this->objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); - $this->objPenOrgaoExternoDTO->setStrOrgaoOrigem($dados['NomeOrigem']); - $this->objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($dados['IdRepositorio']); - $this->objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($dados['RepositorioEstruturas']); + $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $this->objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $this->objPenOrgaoExternoDTO->setStrOrgaoOrigem($dados['NomeOrigem']); + $this->objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($dados['IdRepositorio']); + $this->objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($dados['RepositorioEstruturas']); - $this->objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); - $this->objPenOrgaoExternoDTO->setStrOrgaoDestino($dados['Nome']); + $this->objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $this->objPenOrgaoExternoDTO->setStrOrgaoDestino($dados['Nome']); - $this->objPenOrgaoExternoDTO->setDthRegistro($dados['DataRegistro'] ?? \InfraData::getStrDataAtual()); - $this->objPenOrgaoExternoDTO->setStrAtivo($dados['SinAtivo'] ?? 'S'); - $this->objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $this->objPenOrgaoExternoDTO->setDthRegistro($dados['DataRegistro'] ?: \InfraData::getStrDataAtual()); + $this->objPenOrgaoExternoDTO->setStrAtivo($dados['SinAtivo'] ?: 'S'); + $this->objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); - $this->objPenOrgaoExternoDTO = $objPenOrgaoExternoBD->cadastrar($this->objPenOrgaoExternoDTO); + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + $this->objPenOrgaoExternoDTO = $objPenOrgaoExternoBD->cadastrar($this->objPenOrgaoExternoDTO); - return $this->objPenOrgaoExternoDTO; - } + return $this->objPenOrgaoExternoDTO; + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); - $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); - $objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); - $objPenOrgaoExternoDTO->retTodos(); - - $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); - return $objPenOrgaoExternoBD->consultar($objPenOrgaoExternoDTO); - } + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objPenOrgaoExternoDTO->retTodos(); - public function excluir($dados = []) + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + return $objPenOrgaoExternoBD->consultar($objPenOrgaoExternoDTO); + } + + public function excluir($dados = []) { - $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - $objPenOrgaoExternoDTO->setDblId($dados['Id']); + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($dados['Id']); - $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); - return $objPenOrgaoExternoBD->excluir($objPenOrgaoExternoDTO); - } + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + return $objPenOrgaoExternoBD->excluir($objPenOrgaoExternoDTO); + } } \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php b/tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php deleted file mode 100644 index 3fb417727..000000000 --- a/tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php +++ /dev/null @@ -1,30 +0,0 @@ -getObjInfraIBanco()->getValorSequencia('seq_protocolo'); - // $dados['IdDocumento'] = $this->getObjInfraIBanco()->getValorSequencia('seq_documento'); - - $objRelBlocoProtocoloDTO = new \RelBlocoProtocoloDTO(); - // $objBlocoDTO->setNumIdBloco(); - $objRelBlocoProtocoloDTO->setDblIdProtocolo($IdProtocolo ?: null); - $objRelBlocoProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: null); - $objRelBlocoProtocoloDTO->setStrAnotacao($dados['Anotacao'] ?: null); - $objRelBlocoProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: 1); - $objRelBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($IdProtocolo); - - $objRelBlocoProtocoloDB = new \RelBlocoProtocoloBD(\BancoSEI::getInstance()); - $objRelBlocoProtocoloDB->cadastrar($objRelBlocoProtocoloDTO); - - return $objRelBlocoProtocoloDTO; - } -} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php b/tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php deleted file mode 100644 index a6bf9719f..000000000 --- a/tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php +++ /dev/null @@ -1,38 +0,0 @@ -setNumIdBloco(); - $objRelBlocoUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $objRelBlocoUnidadeDTO->setNumIdBloco($dados['IdBloco'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdGrupoBloco($dados['IdGrupoBloco'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioRevisao($dados['IdUsuarioRevisao'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioPrioridade($dados['IdUsuarioPrioridade'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioComentario($dados['IdUsuarioComentario'] ?: null); - $objRelBlocoUnidadeDTO->setStrSinRetornado($dados['SinRetornado'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrSinRevisao($dados['SinRevisao'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrSinPrioridade($dados['SinPrioridade'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrSinComentario($dados['SinComentario'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrTextoComentario($dados['TextoComentario'] ?: null); - $objRelBlocoUnidadeDTO->setDthRevisao($dados['Revisao'] ?: null); - $objRelBlocoUnidadeDTO->setDthPrioridade($dados['Prioridade'] ?: null); - $objRelBlocoUnidadeDTO->setDthComentario($dados['Comentario'] ?: null); - - $objBlocoUnidadeDB = new \RelBlocoUnidadeBD(\BancoSEI::getInstance()); - $objBlocoUnidadeDB->cadastrar($objRelBlocoUnidadeDTO); - - return $objRelBlocoUnidadeDTO; - } -} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/TipoProcessoPadraoFixture.php b/tests_sei4/funcional/src/fixtures/TipoProcessoPadraoFixture.php new file mode 100644 index 000000000..dad75f16f --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/TipoProcessoPadraoFixture.php @@ -0,0 +1,30 @@ +objPenParametroDTO = new \PenParametroDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + public function cadastrar($dados = []) + { + $objPenParametroDTO = new \PenParametroDTO(); + $objPenParametroDTO->setStrNome($dados['Nome']); + + $objPenParametroBD = new \PenParametroBD($this->inicializarObjInfraIBanco()); + if($objPenParametroBD->contar($objPenParametroDTO) > 0) { + $objPenParametroDTO->setStrValor($dados['Valor']); + $objPenParametroBD->alterar($objPenParametroDTO); + } + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaAnexarProcesso.php b/tests_sei4/funcional/src/paginas/PaginaAnexarProcesso.php index 7e1516bfa..183a933d7 100755 --- a/tests_sei4/funcional/src/paginas/PaginaAnexarProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaAnexarProcesso.php @@ -1,35 +1,35 @@ -test->byId('txtProtocolo'); - - if(isset($protocolo)){ - $protocoloInput->value($protocolo); - $this->test->byId('btnPesquisar')->click(); - } - - return $protocoloInput->value(); - } - - public function anexar() - { - $anexarButton = $this->test->byId('sbmAnexar'); - $anexarButton->click(); - $this->alertTextAndClose(); - } - - - public function anexarProcesso($protocolo) - { - $this->protocolo($protocolo); - $this->anexar(); - } -} +test->byId('txtProtocolo'); + + if(isset($protocolo)){ + $protocoloInput->value($protocolo); + $this->test->byId('btnPesquisar')->click(); + } + + return $protocoloInput->value(); + } + + public function anexar() + { + $anexarButton = $this->test->byId('sbmAnexar'); + $anexarButton->click(); + $this->alertTextAndClose(); + } + + + public function anexarProcesso($protocolo) + { + $this->protocolo($protocolo); + $this->anexar(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaAssinaturaDocumento.php b/tests_sei4/funcional/src/paginas/PaginaAssinaturaDocumento.php index 2a2facffd..cd3de4a1d 100755 --- a/tests_sei4/funcional/src/paginas/PaginaAssinaturaDocumento.php +++ b/tests_sei4/funcional/src/paginas/PaginaAssinaturaDocumento.php @@ -1,67 +1,67 @@ -test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("txtUsuario"); - - if(isset($strAssinante)){ - $input->value($strAssinante); - $this->test->waitUntil(function($testCase) { - $nomeAssinante = $testCase->byId("txtUsuario")->value(); - $testCase->byLinkText($nomeAssinante)->click(); - return true; - }, 8000); - } - - return $input->value(); - } - - public function senha($value) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("pwdSenha"); - return $input->value($value); - } - - public function selecionarOrgaoAssinante($strOrgaoAssinante) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("selOrgao"); - $this->test->select($input)->selectOptionByLabel($strOrgaoAssinante); - return $this->test->select($input)->selectedLabel(); - } - - public function selecionarCargoAssinante($strCargoAssinante) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("selCargoFuncao"); - $this->test->select($input)->selectOptionByLabel($strCargoAssinante); - return $this->test->select($input)->selectedLabel(); - } - - public function assinarComLoginSenha($pwdSenha) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("pwdSenha"); - $input->value($pwdSenha); - $this->test->keys(Keys::ENTER); - } - -} +test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("txtUsuario"); + + if(isset($strAssinante)){ + $input->value($strAssinante); + $this->test->waitUntil(function($testCase) { + $nomeAssinante = $testCase->byId("txtUsuario")->value(); + $testCase->byLinkText($nomeAssinante)->click(); + return true; + }, 8000); + } + + return $input->value(); + } + + public function senha($value) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("pwdSenha"); + return $input->value($value); + } + + public function selecionarOrgaoAssinante($strOrgaoAssinante) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("selOrgao"); + $this->test->select($input)->selectOptionByLabel($strOrgaoAssinante); + return $this->test->select($input)->selectedLabel(); + } + + public function selecionarCargoAssinante($strCargoAssinante) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("selCargoFuncao"); + $this->test->select($input)->selectOptionByLabel($strCargoAssinante); + return $this->test->select($input)->selectedLabel(); + } + + public function assinarComLoginSenha($pwdSenha) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("pwdSenha"); + $input->value($pwdSenha); + $this->test->keys(Keys::ENTER); + } + +} diff --git a/tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php index 370651c83..2fe3b850b 100644 --- a/tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php +++ b/tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -9,27 +9,27 @@ class PaginaCadastrarProcessoEmBloco extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarListagemBlocoDeTramite() + public function navegarListagemBlocoDeTramite() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Blocos de Trâmite Externo')); - $this->test->byXPath("//a[@link='md_pen_tramita_em_bloco']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Blocos de Trâmite Externo', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='md_pen_tramita_em_bloco']")->click(); + } /** * Setar parametro para novo mapeamento de orgãos externos * * @return void */ - public function setarParametros($estrutura, $origem) + public function setarParametros($estrutura, $origem) { - $this->selectRepositorio($estrutura); - $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem - } + $this->selectRepositorio($estrutura); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + } /** * Seleciona repositório por sigla @@ -37,17 +37,17 @@ public function setarParametros($estrutura, $origem) * @param string $siglaRepositorio * @return string */ - private function selectRepositorio($siglaRepositorio) + private function selectRepositorio($siglaRepositorio) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - return $this->test->byId('selRepositorioEstruturas')->value(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas')->value(); + } + /** * Seleciona unidade por nome * @@ -56,175 +56,198 @@ private function selectRepositorio($siglaRepositorio) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) - { - $this->unidadeInput = $this->test->byId('txtUnidade'); - $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')->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(); - } + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade'); + $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')->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(); + } - public function novoBlocoDeTramite() + public function novoBlocoDeTramite() { - $this->test->byId("bntNovo")->click(); - } + $this->test->byId("bntNovo")->click(); + } - public function criarNovoBloco() + public function criarNovoBloco() { - $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); - } + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } - public function editarBlocoDeTramite($descricao = null) + public function editarBlocoDeTramite($descricao = null) { - $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); + $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); - if ($descricao != null) { - $this->test->byId('txtDescricao')->clear(); - $this->test->byId('txtDescricao')->value($descricao); - } + if ($descricao != null) { + $this->test->byId('txtDescricao')->clear(); + $this->test->byId('txtDescricao')->value($descricao); } + } - public function selecionarExcluirBloco() + public function selecionarExcluirBloco() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } - public function buscarMensagemAlerta() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } - public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) - { - // Preencher parâmetros do trâmite - $this->selectRepositorio($repositorio); - $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); - $this->btnEnviar(); - - if ($callbackEnvio == null) { - $mensagemAlerta = null; - try { - $mensagemAlerta = $this->alertTextAndClose(true); - } catch (Exception $e) { - } - if ($mensagemAlerta) { - throw new Exception($mensagemAlerta); - } - } + public function buscarQuantidadeProcessosRecusados() + { + $linhasDaTabelaRecusadas = $this->test->elements($this->test->using('xpath')->value("//img[@title='Recusado']")); + return count($linhasDaTabelaRecusadas); + } - try { - $mensagemAlerta = $this->alertTextAndClose(true); - } catch (Exception $e) { - } + public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) + { + // Preencher parâmetros do trâmite + $this->selectRepositorio($repositorio); + $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); + $this->btnEnviar(); - if (isset($mensagemAlerta)) { - throw new Exception($mensagemAlerta); - } + if ($callbackEnvio == null) { + $mensagemAlerta = null; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if ($mensagemAlerta) { + throw new Exception($mensagemAlerta); + } + } - $callbackEnvio = $callbackEnvio ?: function ($testCase) { - try { - $testCase->frame('ifrEnvioProcesso'); - $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); - $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); - $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); - $btnFechar->click(); - } finally { - try { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - } catch (Exception $e) { - } - } - - return true; - }; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if (isset($mensagemAlerta)) { + throw new Exception($mensagemAlerta); + } + + $callbackEnvio = $callbackEnvio ?: function ($testCase) { try { - $this->test->waitUntil($callbackEnvio, $timeout); + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Trâmite externo do processo finalizado com sucesso!', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); } finally { - try { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - } catch (Exception $e) { - } + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } } - sleep(1); + return true; + }; + + try { + $this->test->waitUntil($callbackEnvio, $timeout); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } } - public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) + sleep(1); + } + + public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) { - $strProtocoloTeste = $processoTeste['PROTOCOLO']; + $strProtocoloTeste = $processoTeste['PROTOCOLO']; - $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { - sleep(5); - $this->paginaBase->navegarParaControleProcesso(); - $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); - return true; - }, PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - } + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + } - public function retornarTextoColunaDaTabelaDeBlocos() + public function retornarTextoColunaDaTabelaDeBlocos() { - $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); - $terceiraColuna = $tabela->byXPath('./td[3]'); + $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); + $terceiraColuna = $tabela->byXPath('./td[3]'); - return $terceiraColuna->text(); - } + return $terceiraColuna->text(); + } - public function retornarQuantidadeDeProcessosNoBloco() + public function retornarQuantidadeDeProcessosNoBloco() { - // Localiza todas as linhas da tabela com o XPath - $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + // Localiza todas as linhas da tabela com o XPath + $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); - // Obtém o número de linhas - return count($linhasDaTabela); - } + // Obtém o número de linhas + return count($linhasDaTabela); + } - public function bntTramitarBloco() + public function bntTramitarBloco() { - $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } - public function bntVisualizarProcessos() + public function bntVisualizarProcessos() { - $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); + } + + public function btnSelecionarTodosProcessos() + { + $this->test->byXPath("//*[@id='imgInfraCheck']")->click(); + } - public function btnSalvar() + public function btnComandoSuperiorExcluir() + { + $this->test->byXPath('//*[@id="divInfraBarraComandosSuperior"]/button[@value="Excluir"]')->click(); + $this->test->acceptAlert(); + } + + public function btnComandoSuperiorFechar() + { + $this->test->byXPath('//*[@id="divInfraBarraComandosSuperior"]/button[@value="Fechar"]')->click(); + } + + public function btnSalvar() { - $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); - $buttonElement->click(); - } + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } - public function btnEnviar() + public function btnEnviar() { - $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); - $buttonElement->click(); - } + $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); + $buttonElement->click(); + } } \ No newline at end of file diff --git a/tests_sei4/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php b/tests_sei4/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php index 5622c5fbf..6d8785069 100644 --- a/tests_sei4/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php +++ b/tests_sei4/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php @@ -13,20 +13,20 @@ class PaginaCadastroMapEnvioCompDigitais extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } /** * Clicar no botão novo * * @return void */ - public function novo() + public function novo() { - $this->test->byId("btnNovo")->click(); - } + $this->test->byId("btnNovo")->click(); + } /** * Selecionar repositório @@ -36,11 +36,11 @@ public function novo() * @param string $unidade * @return void */ - public function setarParametros($estrutura, $unidade) + public function setarParametros($estrutura, $unidade) { - $this->selectRepositorio($estrutura); - $this->selectUnidade($unidade); - } + $this->selectRepositorio($estrutura); + $this->selectUnidade($unidade); + } /** * Seleciona repositório por sigla @@ -48,17 +48,17 @@ public function setarParametros($estrutura, $unidade) * @param string $siglaRepositorio * @return string */ - private function selectRepositorio($siglaRepositorio) + private function selectRepositorio($siglaRepositorio) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } - - return $this->test->byId('selRepositorioEstruturas')->value(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas')->value(); + } + /** * Seleciona unidade por nome * @@ -66,92 +66,93 @@ private function selectRepositorio($siglaRepositorio) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $hierarquia = null) + private function selectUnidade($nomeUnidade, $hierarquia = null) { - $this->unidadeInput = $this->test->byId('txtUnidade'); - $this->unidadeInput->clear(); - $this->unidadeInput->value($nomeUnidade); - $this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($hierarquia) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->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(); - } + $this->unidadeInput = $this->test->byId('txtUnidade'); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->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(); + } /** * Clicar no botão salvar * * @return void */ - public function salvar() + public function salvar() { - $this->test->byId("btnSalvar")->click(); - } + $this->test->byId("btnSalvar")->click(); + } /** * Seleciona botão editar da primeira linha de tabela * * @return void */ - public function editar() + public function editar() { - $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); + } /** * Exluir mapeamentos existentes * * @return void */ - public function excluirMapeamentosExistentes() + public function excluirMapeamentosExistentes() { - try{ - $lnkInfraCheck=$this->test->byXPath('//*[@id="lnkInfraCheck"]'); - $lnkInfraCheck->click(); - $this->excluirSelecionados(); - sleep(1); - $mensagem = $this->buscarMensagemAlerta(); - $this->test->assertStringContainsString( - utf8_encode('Mapeamento excluído com sucesso.'), - $mensagem - ); - } catch (Exception $e) { - } + try{ + $lnkInfraCheck=$this->test->byXPath('//*[@id="lnkInfraCheck"]'); + $lnkInfraCheck->click(); + $this->excluirSelecionados(); + sleep(1); + $mensagem = $this->buscarMensagemAlerta(); + $this->test->assertStringContainsString( + mb_convert_encoding('Mapeamento excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } catch (Exception $e) { } + } /** * Selecionar todos os resultados * * @return void */ - public function selecionarTodos() + public function selecionarTodos() { - $this->test->byXPath('//*[@id="lnkInfraCheck"]')->click(); - } + $this->test->byXPath('//*[@id="lnkInfraCheck"]')->click(); + } /** * Excluir selecionados * * @return void */ - public function excluirSelecionados() + public function excluirSelecionados() { - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } /** * Selecionar primeira checkbox de exclusão @@ -160,12 +161,12 @@ public function excluirSelecionados() * * @return void */ - public function selecionarExcluir() + public function selecionarExcluir() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } /** * Lispar campo de pesquisa @@ -175,22 +176,22 @@ public function selecionarExcluir() * @param string $textoPesquisa * @return void */ - public function selecionarPesquisa($textoPesquisa) + public function selecionarPesquisa($textoPesquisa) { - $this->test->byId('txtNomeEstrutura')->clear(); - $this->test->byId('txtNomeEstrutura')->value($textoPesquisa); - $this->test->byId("btnPesquisar")->click(); - } + $this->test->byId('txtNomeEstrutura')->clear(); + $this->test->byId('txtNomeEstrutura')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } /** * Selecionar todos os intens para impressão * * @return void */ - public function selecionarImprimir() + public function selecionarImprimir() { - $this->test->byId("lnkInfraCheck")->click(); - } + $this->test->byId("lnkInfraCheck")->click(); + } /** * Buscar item de tabela por nome @@ -198,26 +199,26 @@ public function selecionarImprimir() * @param string $nome * @return string|null */ - public function buscarNome($nome) + 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; - } + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; } + } /** * Buscar mensagem de alerta da página * * @return string */ - public function buscarMensagemAlerta() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } } \ No newline at end of file diff --git a/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php index e3a880d51..d33cc9da2 100644 --- a/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php +++ b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -9,28 +9,28 @@ class PaginaCadastroOrgaoExterno extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarCadastroOrgaoExterno() + public function navegarCadastroOrgaoExterno() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Unidades')); - $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1')); + $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) + 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 - } + $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 @@ -39,17 +39,17 @@ public function setarParametros($estrutura, $origem, $destino) * @param string $origemDestino * @return string */ - private function selectRepositorio($siglaRepositorio, $origemDestino) + private function selectRepositorio($siglaRepositorio, $origemDestino) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $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(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + /** * Seleciona unidade por nome * @@ -58,30 +58,31 @@ private function selectRepositorio($siglaRepositorio, $origemDestino) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + 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; - } + $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); + 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(); - } + return $this->unidadeInput->value(); + } /** * Seleciona unidade por nome @@ -91,50 +92,51 @@ private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) * @param ?string $hierarquia * @return string */ - private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + 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; - } + $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); + 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(); - } + return $this->unidadeInput->value(); + } /** * Seleciona botão novo da página * * @return void */ - public function novoMapOrgao() + public function novoMapOrgao() { - $this->test->byId("btnNovo")->click(); - } + $this->test->byId("btnNovo")->click(); + } /** * Seleciona botão editar da primeira linha de tabela * * @return void */ - public function editarMapOrgao() + public function editarMapOrgao() { - $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } /** * Selecionar primeira checkbox de exclusão @@ -143,37 +145,37 @@ public function editarMapOrgao() * * @return void */ - public function selecionarExcluirMapOrgao() + public function selecionarExcluirMapOrgao() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $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() + public function salvar() { - $this->test->byId("btnSalvar")->click(); - } + $this->test->byId("btnSalvar")->click(); + } - public function abrirSelecaoDeArquivoParaImportacao() + 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; - }); - } + $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 @@ -181,17 +183,17 @@ public function abrirSelecaoDeArquivoParaImportacao() * @param string $origem * @return string|null */ - public function buscarOrgaoOrigem($origem) + 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; - } + 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 @@ -199,28 +201,28 @@ public function buscarOrgaoOrigem($origem) * @param string $origem * @return string|null */ - public function buscarOrgaoDestino($destino) + 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; - } + 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() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } /** * Lispar campo de pesquisa @@ -230,12 +232,12 @@ public function buscarMensagemAlerta() * @param string $textoPesquisa * @return void */ - public function selecionarPesquisa($textoPesquisa) + public function selecionarPesquisa($textoPesquisa) { - $this->test->byId('txtSiglaOrigem')->clear(); - $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); - $this->test->byId("btnPesquisar")->click(); - } + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } /** * Buscar item de tabela por nome @@ -243,15 +245,15 @@ public function selecionarPesquisa($textoPesquisa) * @param string $nome * @return string|null */ - public function buscarNome($nome) + 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; - } + 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/PaginaCancelarDocumento.php b/tests_sei4/funcional/src/paginas/PaginaCancelarDocumento.php index 214cdeaf8..f1047b591 100755 --- a/tests_sei4/funcional/src/paginas/PaginaCancelarDocumento.php +++ b/tests_sei4/funcional/src/paginas/PaginaCancelarDocumento.php @@ -1,30 +1,30 @@ -motivoCancelamento($motivoCancelamento); - $this->salvar(); - } - - private function motivoCancelamento($value) - { - $input = $this->test->byId("txaMotivo"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - private function salvar() - { - $this->test->byId("sbmSalvar")->click(); - } -} +motivoCancelamento($motivoCancelamento); + $this->salvar(); + } + + private function motivoCancelamento($value) + { + $input = $this->test->byId("txaMotivo"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + private function salvar() + { + $this->test->byId("sbmSalvar")->click(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaConsultarAndamentos.php b/tests_sei4/funcional/src/paginas/PaginaConsultarAndamentos.php index ffd6bac8f..d46eedd95 100755 --- a/tests_sei4/funcional/src/paginas/PaginaConsultarAndamentos.php +++ b/tests_sei4/funcional/src/paginas/PaginaConsultarAndamentos.php @@ -1,40 +1,40 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoEmTramitacao($strUnidadeDestino) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "Processo em tramitação externa para $strUnidadeDestino"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoRecebido($strUnidadeDestino) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "Recebido em $strUnidadeDestino"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoRejeitado($strUnidadeDestino, $strMotivo) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "O processo foi recusado pelo orgão $strUnidadeDestino pelo seguinte motivo: $strMotivo"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoEmTramitacao($strUnidadeDestino) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "Processo em tramitação externa para $strUnidadeDestino"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoRecebido($strUnidadeDestino) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "Recebido em $strUnidadeDestino"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoRejeitado($strUnidadeDestino, $strMotivo) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "O processo foi recusado pelo orgão $strUnidadeDestino pelo seguinte motivo: $strMotivo"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaControleProcesso.php b/tests_sei4/funcional/src/paginas/PaginaControleProcesso.php index 227f998e0..bbbf1d6c4 100755 --- a/tests_sei4/funcional/src/paginas/PaginaControleProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaControleProcesso.php @@ -1,97 +1,101 @@ -test->byId($painel)->elements($this->test->using('css selector')->value('tr'))); - } catch (\Exception $th) { } - } - - return $resultado; - } - - protected function listarProcessos($processosGerados, $processosRecebidos) - { - $listaProtocolos = array(); - $processosRows = $this->obterLinhasProcessos($processosGerados, $processosRecebidos); - if(isset($processosRows) && count($processosRows) > 0){ - for ($i=1; $i < count($processosRows); $i++) { - $listaProtocolos[] = trim($processosRows[$i]->text()); - } - } - - return $listaProtocolos; - } - - public function processosGerados() - { - return $this->listarProcessos(true, false); - } - - public function processosRecebidos() - { - return $this->listarProcessos(false, true); - } - - public function contemProcesso($numeroProcesso, $processosGerados = true, $processosRecebidos = true) - { - $listaProcessos = $this->listarProcessos($processosGerados, $processosRecebidos); - return ($listaProcessos != null) ? in_array($numeroProcesso, $listaProcessos) : false; - } - - public function contemAlertaProcessoRecusado($numeroProcesso) - { - $processosRows = $this->obterLinhasProcessos(true, true); - foreach ($processosRows as $row) { - try{ - if(strpos($row->text(), $numeroProcesso) !== false){ - foreach ($row->elements($this->test->using('css selector')->value('img')) as $icone) { - if(strpos($icone->attribute("src"), 'pen_tramite_recusado.png') !== false) - return true; - } - } - } - catch(\Exception $e) { - return false; - } - } - - return false; - } - - public function localizarProcessoPelaDescricao($descricao) - { - $processosRows = $this->obterLinhasProcessos(true, true); - foreach ($processosRows as $row) { - try{ - foreach ($row->elements($this->test->using('css selector')->value('a')) as $link) { - if(strpos($link->attribute("onmouseover"), $descricao) !== false) - return $link->text(); - } - } - catch(\Exception $e) { - return false; - } - } - - return false; - } - - public function abrirProcesso($strProtocolo) - { - $this->test->byLinkText($strProtocolo)->click(); - } -} +test->byId($painel)->elements($this->test->using('css selector')->value('tr'))); + } catch (\Exception $th) { } + } + + return $resultado; + } + + protected function listarProcessos($processosGerados, $processosRecebidos) + { + $listaProtocolos = array(); + $processosRows = $this->obterLinhasProcessos($processosGerados, $processosRecebidos); + if(isset($processosRows) && count($processosRows) > 0){ + for ($i=1; $i < count($processosRows); $i++) { + $listaProtocolos[] = trim($processosRows[$i]->text()); + } + } + + return $listaProtocolos; + } + + public function processosGerados() + { + return $this->listarProcessos(true, false); + } + + public function processosRecebidos() + { + return $this->listarProcessos(false, true); + } + + public function contemProcesso($numeroProcesso, $processosGerados = true, $processosRecebidos = true) + { + $listaProcessos = $this->listarProcessos($processosGerados, $processosRecebidos); + return ($listaProcessos != null) ? in_array($numeroProcesso, $listaProcessos) : false; + } + + public function contemAlertaProcessoRecusado($numeroProcesso) + { + $processosRows = $this->obterLinhasProcessos(true, true); + foreach ($processosRows as $row) { + try{ + if(strpos($row->text(), $numeroProcesso) !== false){ + foreach ($row->elements($this->test->using('css selector')->value('img')) as $icone) { + if(strpos($icone->attribute("src"), 'pen_tramite_recusado.png') !== false) { + return true; + } + } + } + } + catch(\Exception $e) { + return false; + } + } + + return false; + } + + public function localizarProcessoPelaDescricao($descricao) + { + $processosRows = $this->obterLinhasProcessos(true, true); + foreach ($processosRows as $row) { + try{ + foreach ($row->elements($this->test->using('css selector')->value('a')) as $link) { + if(strpos($link->attribute("onmouseover"), $descricao) !== false) { + return $link->text(); + } + } + } + catch(\Exception $e) { + return false; + } + } + + return false; + } + + public function abrirProcesso($strProtocolo) + { + $this->test->byLinkText($strProtocolo)->click(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaDocumento.php b/tests_sei4/funcional/src/paginas/PaginaDocumento.php index e18432b2e..e130b489a 100755 --- a/tests_sei4/funcional/src/paginas/PaginaDocumento.php +++ b/tests_sei4/funcional/src/paginas/PaginaDocumento.php @@ -1,177 +1,181 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Assinar Documento']")->click(); - } - - public function navegarParaConsultarDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Consultar/Alterar Documento')]")->click(); - } - - public function navegarParaCancelarDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Cancelar Documento')]")->click(); - } - - public function navegarParaMoverDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Mover Documento para outro Processo')]")->click(); - } - - public function ehProcessoAnexado() - { - sleep(2); - - try { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//div[@id='divArvoreInformacao']/a[contains(@href, 'acao=procedimento_trabalhar')]"); - $this->test->byXPath("//img[contains(@alt, 'Desanexar Processo')]"); - return true; - } catch (\Exception $e) { - return false; - } - } - - public function descricao($value = null) - { - $input = $this->test->byId("txtDescricao"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoesNaTabela($value = null) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - return $this->test->byXPath("//table[@class='infraTable']//tr[2]/td[2]")->text(); - } - - public function dataElaboracao($value = null) - { - $input = $this->test->byId("txtDataElaboracao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function nomeAnexo() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - return $this->test->byXPath("//table[@id='tblAnexos']/tbody/tr/td[2]/div")->text(); - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); - return array_map(function($opt) {return $opt->text();}, $options); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("optPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("optRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("optSigiloso")->click(); - } - } - - if($this->test->byId("optPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("optRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("optSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function recuperarHipoteseLegal() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - return $select->selectedLabel(); - } - - public function salvarDocumento() - { - $this->test->byId("btnSalvar")->click(); - } -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Assinar Documento']")->click(); + } + + public function navegarParaConsultarDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Consultar/Alterar Documento')]")->click(); + } + + public function navegarParaCancelarDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Cancelar Documento')]")->click(); + } + + public function navegarParaMoverDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Mover Documento para outro Processo')]")->click(); + } + + public function ehProcessoAnexado() + { + sleep(2); + + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//div[@id='divArvoreInformacao']/a[contains(@href, 'acao=procedimento_trabalhar')]"); + $this->test->byXPath("//img[contains(@alt, 'Desanexar Processo')]"); + return true; + } catch (\Exception $e) { + return false; + } + } + + public function descricao($value = null) + { + $input = $this->test->byId("txtDescricao"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoesNaTabela($value = null) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + return $this->test->byXPath("//table[@class='infraTable']//tr[2]/td[2]")->text(); + } + + public function dataElaboracao($value = null) + { + $input = $this->test->byId("txtDataElaboracao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function nomeAnexo() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + return $this->test->byXPath("//table[@id='tblAnexos']/tbody/tr/td[2]/div")->text(); + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); + return array_map(function($opt) {return $opt->text(); + }, $options); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("optPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("optRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("optSigiloso")->click(); + } + } + + if($this->test->byId("optPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("optRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("optSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function recuperarHipoteseLegal() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + return $select->selectedLabel(); + } + + public function salvarDocumento() + { + $this->test->byId("btnSalvar")->click(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaEditarProcesso.php b/tests_sei4/funcional/src/paginas/PaginaEditarProcesso.php index 8d4061b48..b8ea504ac 100755 --- a/tests_sei4/funcional/src/paginas/PaginaEditarProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaEditarProcesso.php @@ -1,130 +1,136 @@ -test->byId("txtDescricao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function protocoloInformado($value = null) - { - $input = $this->test->byId("txtProtocoloInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function dataGeracaoProtocolo($value = null) - { - $input = $this->test->byId("txtDtaGeracaoInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("optPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("optRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("optSigiloso")->click(); - } - } - - if($this->test->byId("optPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("optRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("optSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); - return array_map(function($opt) {return $opt->text();}, $options); - } - - public function salvarProcesso() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function recuperarHipoteseLegal() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - return $select->selectedLabel(); - } - - public function gerarProtocolo() - { - $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); - return '999990.' . $strSequencia . '/2015-00'; - } -} +test->byId("txtDescricao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function protocoloInformado($value = null) + { + $input = $this->test->byId("txtProtocoloInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function dataGeracaoProtocolo($value = null) + { + $input = $this->test->byId("txtDtaGeracaoInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("optPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("optRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("optSigiloso")->click(); + } + } + + if($this->test->byId("optPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("optRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("optSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); + return array_map(function($opt) {return $opt->text(); + }, $options); + } + + public function salvarProcesso() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function recuperarHipoteseLegal() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + return $select->selectedLabel(); + } + + public function gerarProtocolo() + { + $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); + return '999990.' . $strSequencia . '/2015-00'; + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaEnviarProcesso.php b/tests_sei4/funcional/src/paginas/PaginaEnviarProcesso.php index 32eba51a6..2221bc6fe 100755 --- a/tests_sei4/funcional/src/paginas/PaginaEnviarProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaEnviarProcesso.php @@ -1,34 +1,34 @@ -unidadeInput = $test->byId('txtUnidade'); - $this->manterAbertoCheck = $test->byId('chkSinManterAberto'); - $this->removerAnotacoesCheck = $test->byId('chkSinRemoverAnotacoes'); - $this->enviarNotificacaoCheck = $test->byId('chkSinEnviarEmailNotificacao'); - $this->dataCertaOption = $test->byId('optDataCerta'); - $this->prazoInput = $test->byId('txtPrazo'); - $this->diasOption = $test->byId('optDias'); - $this->diasInput = $test->byId('txtDias'); - $this->diasUteisInput = $test->byId('chkSinDiasUteis'); - $this->enviarButton = $test->byId('sbmEnviar'); - } - - public function adicionarUnidade($nomeUnidade) - { - $this->unidadeInput->value($nomeUnidade); - $this->test->waitUntil(function($testCase) { - $nomeUnidade = $testCase->byId('txtUnidade')->value(); - $testCase->byLinkText($nomeUnidade)->click(); - return true; - }, 8000); - } - - public function salvar() - { - $this->enviarButton->click(); - } -} +unidadeInput = $test->byId('txtUnidade'); + $this->manterAbertoCheck = $test->byId('chkSinManterAberto'); + $this->removerAnotacoesCheck = $test->byId('chkSinRemoverAnotacoes'); + $this->enviarNotificacaoCheck = $test->byId('chkSinEnviarEmailNotificacao'); + $this->dataCertaOption = $test->byId('optDataCerta'); + $this->prazoInput = $test->byId('txtPrazo'); + $this->diasOption = $test->byId('optDias'); + $this->diasInput = $test->byId('txtDias'); + $this->diasUteisInput = $test->byId('chkSinDiasUteis'); + $this->enviarButton = $test->byId('sbmEnviar'); + } + + public function adicionarUnidade($nomeUnidade) + { + $this->unidadeInput->value($nomeUnidade); + $this->test->waitUntil(function($testCase) { + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + $testCase->byLinkText($nomeUnidade)->click(); + return true; + }, 8000); + } + + public function salvar() + { + $this->enviarButton->click(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaEnvioParcialListar.php b/tests_sei4/funcional/src/paginas/PaginaEnvioParcialListar.php index 913812752..1abaae0fb 100644 --- a/tests_sei4/funcional/src/paginas/PaginaEnvioParcialListar.php +++ b/tests_sei4/funcional/src/paginas/PaginaEnvioParcialListar.php @@ -9,15 +9,15 @@ class PaginaEnvioParcialListar extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarEnvioParcialListar() + public function navegarEnvioParcialListar() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Mapeamento de Envio Parcial')); - $this->test->byXPath("//a[@link='pen_map_envio_parcial_listar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Mapeamento de Envio Parcial', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_envio_parcial_listar']")->click(); + } } diff --git a/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php index e9b4f2f31..c48790dfc 100644 --- a/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -9,55 +9,55 @@ class PaginaExportarTiposProcesso extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarExportarTiposProcessos() + public function navegarExportarTiposProcessos() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo')); - $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Exportação de Tipos de Processo', 'UTF-8', 'ISO-8859-1')); + $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() + 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(); - } + $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) + public function verificarExisteBotao($nomeBtn) { - try { - return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); - } catch (Exception $e) { - return null; - } + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; } + } - public function verificarQuantidadeDeLinhasSelecionadas() + 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; - }); - } + $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() + public function btnExportar() { - $this->test->byId("btnExportarModal")->click(); - sleep(5); - } + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } /** * Lispar campo de pesquisa @@ -65,25 +65,25 @@ public function btnExportar() * * @return void */ - public function selecionarPesquisa() + public function selecionarPesquisa() { - $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); - $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); - $this->test->byId("sbmPesquisar")->click(); - } + $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() + public function buscarPesquisa() { - try { - $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); - return !empty($elementos) && !is_null($elementos); - } catch (Exception $e) { - return false; - } + 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/PaginaIncluirDocumento.php b/tests_sei4/funcional/src/paginas/PaginaIncluirDocumento.php index f6846ccfd..d63ba98e4 100755 --- a/tests_sei4/funcional/src/paginas/PaginaIncluirDocumento.php +++ b/tests_sei4/funcional/src/paginas/PaginaIncluirDocumento.php @@ -1,189 +1,190 @@ -test->byId('txtFiltro')->value($tipoDocumento); - sleep(2); - $this->test->byLinkText($tipoDocumento)->click(); - } - catch (Exception $e){ - $this->test->byXPath("//img[@id='imgExibirSeries'] | //a[@id='ancExibirSeries']")->click(); - $this->test->byId('txtFiltro')->value($tipoDocumento); - sleep(2); - $this->test->byLinkText($tipoDocumento)->click(); - } - } - - public function selecionarTipoDocumentoExterno() - { - $this->selecionarTipoDocumento('Externo'); - } - - public function descricao($value) - { - $input = $this->test->byId("txtDescricao"); - return $input->value($value); - } - - public function tipoDocumento($value) - { - $input = $this->test->byId("selSerie"); - $this->test->select($input)->selectOptionByLabel($value); - } - - public function formato($value) - { - if($value != self::STA_FORMATO_NATO_DIGITAL) - throw new Exception("Outros formatos não implementados em PaginaIncluirDocumento"); - - $this->test->byId("divOptNato")->click(); - } - - public function anexo($arquivo) - { - $input = $this->test->byId("filArquivo"); - $input->value($arquivo); - $this->test->waitUntil(function($testCase) use($arquivo) { - $testCase->assertStringContainsString(basename($arquivo), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function dataElaboracao($value) - { - $input = $this->test->byId("txtDataElaboracao"); - return $input->value($value); - } - - public function observacoes($value) - { - $input = $this->test->byId("txaObservacoes"); - return $input->value($value); - } - - public function adicionarInteressado($nomeInteressado) - { - $input = $this->test->byId("txtInteressado"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - - sleep(2); - } - - public function salvarDocumento() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $input = $this->test->byId("lblPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $input = $this->test->byId("lblRestrito")->click(); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $input = $this->test->byId("lblSigiloso")->click(); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - $select = $this->test->select($this->test->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function gerarDocumentoTeste(array $dadosDocumento = null) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); - sleep(2); - - $dadosDocumento = $dadosDocumento ?: array(); - $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; - $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); - $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); - $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); - $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; - $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; - - //$paginaIncluirDocumento = new PaginaIncluirDocumento($test); - $this->selecionarTipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); - $this->descricao($dadosDocumento["DESCRICAO"]); - $this->observacoes($dadosDocumento["OBSERVACOES"]); - $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); - $this->salvarDocumento(); - - $url = parse_url($this->test->byId("ifrArvoreHtml")->attribute("src")); - parse_str($url['query'], $query); - $dadosDocumento["ID_DOCUMENTO"] = $query["id_documento"]; - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->window($this->test->windowHandles()[1]); - $this->test->closeWindow(); - $this->test->window(''); - - $this->test->frame(NULL); - $this->test->frame("ifrArvore"); - - return trim($this->test->byId('anchor' . $query["id_documento"])->text()); - } - - public function gerarDocumentoExternoTeste(array $dadosDocumento, $comAnexo) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); - sleep(2); - - $dadosDocumento = $dadosDocumento ?: array(); - $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; - $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); - $dadosDocumento["DATA_ELABORACAO"] = @$dadosDocumento["DATA_ELABORACAO"] ?: date("d/m/Y"); - $dadosDocumento["FORMATO_DOCUMENTO"] = @$dadosDocumento["FORMATO_DOCUMENTO"] ?: self::STA_FORMATO_NATO_DIGITAL; - $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); - $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); - $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; - $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; - - $this->selecionarTipoDocumentoExterno(); - sleep(2); - $this->tipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); - sleep(2); - - $this->dataElaboracao($dadosDocumento["DATA_ELABORACAO"]); - $this->formato($dadosDocumento["FORMATO_DOCUMENTO"]); - if($comAnexo){ - $this->anexo($dadosDocumento["ARQUIVO"]); - } - $this->observacoes($dadosDocumento["OBSERVACOES"]); - $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); - $this->salvarDocumento(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - } -} +test->byId('txtFiltro')->value($tipoDocumento); + sleep(2); + $this->test->byLinkText($tipoDocumento)->click(); + } + catch (Exception $e){ + $this->test->byXPath("//img[@id='imgExibirSeries'] | //a[@id='ancExibirSeries']")->click(); + $this->test->byId('txtFiltro')->value($tipoDocumento); + sleep(2); + $this->test->byLinkText($tipoDocumento)->click(); + } + } + + public function selecionarTipoDocumentoExterno() + { + $this->selecionarTipoDocumento('Externo'); + } + + public function descricao($value) + { + $input = $this->test->byId("txtDescricao"); + return $input->value($value); + } + + public function tipoDocumento($value) + { + $input = $this->test->byId("selSerie"); + $this->test->select($input)->selectOptionByLabel($value); + } + + public function formato($value) + { + if($value != self::STA_FORMATO_NATO_DIGITAL) { + throw new Exception("Outros formatos não implementados em PaginaIncluirDocumento"); + } + + $this->test->byId("divOptNato")->click(); + } + + public function anexo($arquivo) + { + $input = $this->test->byId("filArquivo"); + $input->value($arquivo); + $this->test->waitUntil(function($testCase) use($arquivo) { + $testCase->assertStringContainsString(basename($arquivo), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function dataElaboracao($value) + { + $input = $this->test->byId("txtDataElaboracao"); + return $input->value($value); + } + + public function observacoes($value) + { + $input = $this->test->byId("txaObservacoes"); + return $input->value($value); + } + + public function adicionarInteressado($nomeInteressado) + { + $input = $this->test->byId("txtInteressado"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + + sleep(2); + } + + public function salvarDocumento() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $input = $this->test->byId("lblPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $input = $this->test->byId("lblRestrito")->click(); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $input = $this->test->byId("lblSigiloso")->click(); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + $select = $this->test->select($this->test->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function gerarDocumentoTeste(array $dadosDocumento = null) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); + sleep(2); + + $dadosDocumento = $dadosDocumento ?: array(); + $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; + $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); + $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); + $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); + $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; + $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; + + //$paginaIncluirDocumento = new PaginaIncluirDocumento($test); + $this->selecionarTipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); + $this->descricao($dadosDocumento["DESCRICAO"]); + $this->observacoes($dadosDocumento["OBSERVACOES"]); + $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); + $this->salvarDocumento(); + + $url = parse_url($this->test->byId("ifrArvoreHtml")->attribute("src")); + parse_str($url['query'], $query); + $dadosDocumento["ID_DOCUMENTO"] = $query["id_documento"]; + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->window($this->test->windowHandles()[1]); + $this->test->closeWindow(); + $this->test->window(''); + + $this->test->frame(null); + $this->test->frame("ifrArvore"); + + return trim($this->test->byId('anchor' . $query["id_documento"])->text()); + } + + public function gerarDocumentoExternoTeste(array $dadosDocumento, $comAnexo) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); + sleep(2); + + $dadosDocumento = $dadosDocumento ?: array(); + $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; + $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); + $dadosDocumento["DATA_ELABORACAO"] = @$dadosDocumento["DATA_ELABORACAO"] ?: date("d/m/Y"); + $dadosDocumento["FORMATO_DOCUMENTO"] = @$dadosDocumento["FORMATO_DOCUMENTO"] ?: self::STA_FORMATO_NATO_DIGITAL; + $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); + $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); + $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; + $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; + + $this->selecionarTipoDocumentoExterno(); + sleep(2); + $this->tipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); + sleep(2); + + $this->dataElaboracao($dadosDocumento["DATA_ELABORACAO"]); + $this->formato($dadosDocumento["FORMATO_DOCUMENTO"]); + if($comAnexo){ + $this->anexo($dadosDocumento["ARQUIVO"]); + } + $this->observacoes($dadosDocumento["OBSERVACOES"]); + $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); + $this->salvarDocumento(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaIniciarProcesso.php b/tests_sei4/funcional/src/paginas/PaginaIniciarProcesso.php index 08ff93988..4eebcde16 100755 --- a/tests_sei4/funcional/src/paginas/PaginaIniciarProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaIniciarProcesso.php @@ -1,170 +1,175 @@ -test->byId('txtFiltro')->value($tipoProcesso); - sleep(2); - $this->test->byLinkText($tipoProcesso)->click(); - } - catch (Exception $e){ - $this->test->byId("ancExibirTiposProcedimento")->click(); - $this->test->byId('txtFiltro')->value($tipoProcesso); - sleep(2); - $this->test->byLinkText($tipoProcesso)->click(); - } - } - - public function descricao($value = null) - { - $input = $this->test->byId("txtDescricao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function selecionarProtocoloManual() - { - $this->test->byId("optProtocoloManual")->click(); - } - - public function protocoloInformado($value = null) - { - $input = $this->test->byId("txtProtocoloInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function dataGeracaoProtocolo($value = null) - { - $input = $this->test->byId("txtDtaGeracaoInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("lblPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("lblRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("lblSigiloso")->click(); - } - } - - if($this->test->byId("lblPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("lblRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("lblSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - return $this->test->select($this->test->byId('selInteressadosProcedimento'))->selectedLabels(); - } - - public function salvarProcesso() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->test->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function gerarProtocolo() - { - $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); - return '999990.' . $strSequencia . '/2015-00'; - } - - public static function gerarProcessoTeste($test, array $dadosProcesso = null) - { - $test->byLinkText("Iniciar Processo")->click(); - - $dadosProcesso = $dadosProcesso ?: array(); - $dadosProcesso["TIPO_PROCESSO"] = @$dadosProcesso["TIPO_PROCESSO"] ?: "Licitação: Pregão Eletrônico"; - $dadosProcesso["DESCRICAO"] = @$dadosProcesso["DESCRICAO"] ?: util::random_string(20); - $dadosProcesso["OBSERVACOES"] = @$dadosProcesso["OBSERVACOES"] ?: util::random_string(100); - $dadosProcesso["INTERESSADOS"] = @$dadosProcesso["INTERESSADOS"] ?: util::random_string(40); - $dadosProcesso["RESTRICAO"] = @$dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO; - $dadosProcesso["HIPOTESE_LEGAL"] = @$dadosProcesso["HIPOTESE_LEGAL"] ?: ""; - - $paginaIniciarProcesso = new PaginaIniciarProcesso($test); - $paginaIniciarProcesso->selecionarTipoProcesso($dadosProcesso["TIPO_PROCESSO"]); - $paginaIniciarProcesso->descricao($dadosProcesso["DESCRICAO"]); - $paginaIniciarProcesso->observacoes($dadosProcesso["OBSERVACOES"]); - $paginaIniciarProcesso->selecionarRestricao($dadosProcesso["RESTRICAO"], $dadosProcesso["HIPOTESE_LEGAL"]); - $paginaIniciarProcesso->adicionarInteressado($dadosProcesso["INTERESSADOS"]); - - $paginaIniciarProcesso->salvarProcesso(); - - $test->frame(null); - $test->frame("ifrArvore"); - $protocoloProcesso = trim($test->byXPath("//a[@title='". $dadosProcesso["TIPO_PROCESSO"] ."'] | //span[@title='". $dadosProcesso["TIPO_PROCESSO"] ."']")->text()); - - return $protocoloProcesso; - } -} +test->byId('txtFiltro')->value($tipoProcesso); + sleep(2); + $this->test->byLinkText($tipoProcesso)->click(); + } + catch (Exception $e){ + $this->test->byId("ancExibirTiposProcedimento")->click(); + $this->test->byId('txtFiltro')->value($tipoProcesso); + sleep(2); + $this->test->byLinkText($tipoProcesso)->click(); + } + } + + public function descricao($value = null) + { + $input = $this->test->byId("txtDescricao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function selecionarProtocoloManual() + { + $this->test->byId("optProtocoloManual")->click(); + } + + public function protocoloInformado($value = null) + { + $input = $this->test->byId("txtProtocoloInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function dataGeracaoProtocolo($value = null) + { + $input = $this->test->byId("txtDtaGeracaoInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("lblPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("lblRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("lblSigiloso")->click(); + } + } + + if($this->test->byId("lblPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("lblRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("lblSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + return $this->test->select($this->test->byId('selInteressadosProcedimento'))->selectedLabels(); + } + + public function salvarProcesso() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->test->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function gerarProtocolo() + { + $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); + return '999990.' . $strSequencia . '/2015-00'; + } + + public static function gerarProcessoTeste($test, array $dadosProcesso = null) + { + $test->byLinkText("Iniciar Processo")->click(); + + $dadosProcesso = $dadosProcesso ?: array(); + $dadosProcesso["TIPO_PROCESSO"] = @$dadosProcesso["TIPO_PROCESSO"] ?: "Licitação: Pregão Eletrônico"; + $dadosProcesso["DESCRICAO"] = @$dadosProcesso["DESCRICAO"] ?: util::random_string(20); + $dadosProcesso["OBSERVACOES"] = @$dadosProcesso["OBSERVACOES"] ?: util::random_string(100); + $dadosProcesso["INTERESSADOS"] = @$dadosProcesso["INTERESSADOS"] ?: util::random_string(40); + $dadosProcesso["RESTRICAO"] = @$dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO; + $dadosProcesso["HIPOTESE_LEGAL"] = @$dadosProcesso["HIPOTESE_LEGAL"] ?: ""; + + $paginaIniciarProcesso = new PaginaIniciarProcesso($test); + $paginaIniciarProcesso->selecionarTipoProcesso($dadosProcesso["TIPO_PROCESSO"]); + $paginaIniciarProcesso->descricao($dadosProcesso["DESCRICAO"]); + $paginaIniciarProcesso->observacoes($dadosProcesso["OBSERVACOES"]); + $paginaIniciarProcesso->selecionarRestricao($dadosProcesso["RESTRICAO"], $dadosProcesso["HIPOTESE_LEGAL"]); + $paginaIniciarProcesso->adicionarInteressado($dadosProcesso["INTERESSADOS"]); + + $paginaIniciarProcesso->salvarProcesso(); + + $test->frame(null); + $test->frame("ifrArvore"); + $protocoloProcesso = trim($test->byXPath("//a[@title='". $dadosProcesso["TIPO_PROCESSO"] ."'] | //span[@title='". $dadosProcesso["TIPO_PROCESSO"] ."']")->text()); + + return $protocoloProcesso; + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaLogin.php b/tests_sei4/funcional/src/paginas/PaginaLogin.php index 68d417a4f..e08808fd8 100755 --- a/tests_sei4/funcional/src/paginas/PaginaLogin.php +++ b/tests_sei4/funcional/src/paginas/PaginaLogin.php @@ -1,56 +1,58 @@ -usuarioInput = $test->byId('txtUsuario'); - $this->passwordInput = $test->byId('pwdSenha'); - try{ - $this->loginButton = $test->byId('Acessar'); - } - //SEI 4.0.12 alterou para sbmAcessar - catch (WebDriverException $wde){ - $this->loginButton = $test->byId('sbmAcessar'); - } - } - - public function usuario($value) - { - if(isset($value)) - $this->usuarioInput->value($value); - - return $this->usuarioInput->value(); - } - - public function senha($value) - { - if(isset($value)) - $this->passwordInput->value($value); - - return $this->passwordInput->value(); - } - - public function orgao() - { - return $this->test->byId('divInfraBarraSuperior')->text(); - } - - public function submit() - { - $this->loginButton->click(); - return $this->test; - } - - public static function executarAutenticacao($test, $usuario="teste", $senha="teste") - { - $paginaLogin = new PaginaLogin($test); - $paginaLogin->usuario($usuario); - $paginaLogin->senha($senha); - $paginaLogin->submit(); - } -} \ No newline at end of file +usuarioInput = $test->byId('txtUsuario'); + $this->passwordInput = $test->byId('pwdSenha'); + try{ + $this->loginButton = $test->byId('Acessar'); + } + //SEI 4.0.12 alterou para sbmAcessar + catch (WebDriverException $wde){ + $this->loginButton = $test->byId('sbmAcessar'); + } + } + + public function usuario($value) + { + if(isset($value)) { + $this->usuarioInput->value($value); + } + + return $this->usuarioInput->value(); + } + + public function senha($value) + { + if(isset($value)) { + $this->passwordInput->value($value); + } + + return $this->passwordInput->value(); + } + + public function orgao() + { + return $this->test->byId('divInfraBarraSuperior')->text(); + } + + public function submit() + { + $this->loginButton->click(); + return $this->test; + } + + public static function executarAutenticacao($test, $usuario = "teste", $senha = "teste") + { + $paginaLogin = new PaginaLogin($test); + $paginaLogin->usuario($usuario); + $paginaLogin->senha($senha); + $paginaLogin->submit(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaMapUnidades.php b/tests_sei4/funcional/src/paginas/PaginaMapUnidades.php new file mode 100644 index 000000000..283060074 --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaMapUnidades.php @@ -0,0 +1,147 @@ +test->byId("txtInfraPesquisarMenu")->value('Listar'); + $this->test->byXPath("//a[@link='pen_map_unidade_listar']")->click(); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function pesquisarUnidade($textoPesquisa) + { + $this->test->byId('txtSiglaUnidade')->clear(); + $this->test->byId('txtSiglaUnidade')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarEditar() + { + $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); + } + + public function selecionarRepoEstruturas($textoEstruturas) + { + $this->repoEstruturaInput = $this->test->byId('txtRepoEstruturas'); + $this->repoEstruturaInput->clear(); + $this->repoEstruturaInput->value($textoEstruturas); + $this->test->keys(Keys::ENTER); + $sucesso = $this->test->waitUntil(function($testCase) { + $bolExisteAlerta=null; + $nomeEstrutura = $testCase->byId('txtRepoEstruturas')->value(); + + try{ + $bolExisteAlerta = $this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){} + $testCase->byPartialLinkText($nomeEstrutura)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->test->assertTrue($sucesso); + } + + public function selecionarUnidade($textoUnidade) + { + $this->repoUnidadeInput = $this->test->byId('txtUnidade'); + $this->repoUnidadeInput->clear(); + $this->repoUnidadeInput->value($textoUnidade); + $this->test->keys(Keys::ENTER); + $sucesso = $this->test->waitUntil(function($testCase) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + + try{ + $bolExisteAlerta = $this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){} + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->test->assertTrue($sucesso); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function limparRestricoes() + { + $options = $this->test->byId('selRepoEstruturas') + ->elements($this->test->using('css selector')->value('option')); + if (count($options)) { + $this->test->byXPath("//img[@title='Remover Estruturas Selecionadas']")->click(); + } + } + + /** + * 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() : ""; + } + + public function validarRepositorio($siglaRepositorio) + { + $repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + $options = $repositorioSelect + ->elements($this->test->using('css selector')->value('option')); + + $contador = 0; + foreach ($options as $option) { + $value = trim($option->value()); + if (empty($value) || is_null($value) || $value == "null") { + continue; + } + + $contador++; + } + + if(isset($siglaRepositorio)){ + $repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + $this->test->assertEquals(1, $contador); + + return $this->test->byId('selRepositorioEstruturas')->value(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaMoverDocumento.php b/tests_sei4/funcional/src/paginas/PaginaMoverDocumento.php index fb69f69c7..2c6b959ff 100755 --- a/tests_sei4/funcional/src/paginas/PaginaMoverDocumento.php +++ b/tests_sei4/funcional/src/paginas/PaginaMoverDocumento.php @@ -1,46 +1,46 @@ -processoDestino($protocoloDestino); - $this->motivoMovimentacao($motivoMovimentacao); - $this->mover(); - } - - private function processoDestino($value) - { - $input = $this->test->byId("txtProcedimentoDestino"); - if(isset($value)) { - $input->value($value); - sleep(2); - $this->test->keys(Keys::ENTER); - } - - sleep(2); - return $input->value(); - } - - private function motivoMovimentacao($value) - { - $input = $this->test->byId("txaMotivo"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - private function mover() - { - $this->test->byId("sbmMover")->click(); - } -} +processoDestino($protocoloDestino); + $this->motivoMovimentacao($motivoMovimentacao); + $this->mover(); + } + + private function processoDestino($value) + { + $input = $this->test->byId("txtProcedimentoDestino"); + if(isset($value)) { + $input->value($value); + sleep(2); + $this->test->keys(Keys::ENTER); + } + + sleep(2); + return $input->value(); + } + + private function motivoMovimentacao($value) + { + $input = $this->test->byId("txaMotivo"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + private function mover() + { + $this->test->byId("sbmMover")->click(); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaPenHipoteseLegalListar.php b/tests_sei4/funcional/src/paginas/PaginaPenHipoteseLegalListar.php new file mode 100644 index 000000000..2d62e6424 --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaPenHipoteseLegalListar.php @@ -0,0 +1,45 @@ +test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Listar', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_hipotese_legal_envio_listar']")->click(); + } + + /** + * Verificar se a tabela de hipótese legal é exibida + * + * @return bool + */ + public function existeTabela() + { + try { + $trTh = $this->test->byXPath('//*[@id="divInfraAreaTabela"]/table/tbody/tr[1]/th[2]')->text(); + return !empty($trTh) && !is_null($trTh) && count($trTh) >= 1; + } catch (Exception $ex) { + return false; + } + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaProcesso.php b/tests_sei4/funcional/src/paginas/PaginaProcesso.php index 659dd2921..561ca3989 100755 --- a/tests_sei4/funcional/src/paginas/PaginaProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaProcesso.php @@ -1,243 +1,275 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - $concluirProcessoButton = $this->test->byXPath("//img[@alt='Concluir Processo']"); - $concluirProcessoButton->click(); - } - - public function incluirDocumento() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $incluirDocumentoButton = $this->test->byXPath("//img[@alt='Incluir Documento']"); - $incluirDocumentoButton->click(); - } - - public function enviarProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Enviar Processo']")->click(); - } - - public function cancelarTramitacaoExterna() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath(utf8_encode("//img[@alt='Cancelar Tramitação Externa']"))->click(); - } - - public function navegarParaEditarProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar/Alterar Processo']"); - $this->editarProcessoButton->click(); - } - - public function navegarParaTramitarProcesso() - { - $this->test->waitUntil(function($testCase) { - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo']"); - $this->editarProcessoButton->click(); - sleep(2); - $testCase->assertStringContainsString('Envio Externo de Processo', $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaConsultarAndamentos() - { - $this->test->waitUntil(function($testCase) { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $testCase->byLinkText('Consultar Andamento')->click(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - sleep(2); - $testCase->assertStringContainsString(utf8_encode('Histórico do Processo'), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaConsultarRecibos() - { - $this->test->waitUntil(function($testCase) { - // Selecionar processo na árvore - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar Recibos']"); - $this->editarProcessoButton->click(); - sleep(2); - $testCase->assertStringContainsString('Consultar Recibos', $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaAnexarProcesso() - { - $this->test->waitUntil(function($testCase) { - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Anexar Processo']"); - $this->editarProcessoButton->click(); - sleep(2); - $testCase->assertStringContainsString(utf8_encode('Anexação de Processos'), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaTramitarProcessoInterno() - { - $this->enviarProcesso(); - } - - public function informacao() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - return $this->test->byId('divArvoreInformacao')->text(); - } - - public function processoAberto() - { - try - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Reabrir Processo']"); - return false; - } - catch(Exception $e) - { - return true; - } - } - - public function processoBloqueado() - { - try - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byXPath("//img[@title='Processo Bloqueado']"); - return true; - } - catch(Exception $e) - { - return false; - } - } - - public function deveSerDocumentoAnexo($bolDevePossuir, $nomeDocumentoArvore) - { - try - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - if($bolDevePossuir){ - $idAnexo=$this->test->byXPath("//span[contains(text(),'" . $nomeDocumentoArvore . "')]")->attribute('id'); - $idAnexo=str_replace("span","",$idAnexo); - $this->test->byXPath("//img[contains(@id,'iconMD_PEN_DOC_REF" . $idAnexo . "')]"); - } - return true; - } - catch(Exception $e) - { - return false; - } - } - - public function ehDocumentoCancelado($nomeDocumentoArvore) - { - try - { - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); - return true; - } - catch(Exception $e) - { - return false; - }finally{ - $this->test->timeouts()->implicitWait($to); - } - } - - public function ehDocumentoMovido($nomeDocumentoArvore) - { - try - { - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); - return true; - } - catch(Exception $e) - { - return false; - }finally{ - $this->test->timeouts()->implicitWait($to); - } - } - - private function selecionarItemArvore($nomeArvore) - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeArvore)->click(); - } - - public function selecionarDocumento($nomeDocumentoArvore) - { - $this->selecionarItemArvore($nomeDocumentoArvore); - } - - public function selecionarProcesso() - { - $this->selecionarItemArvore($this->listarArvoreProcesso()[0]); - sleep(1); - } - - public function listarDocumentos() - { - $itens = $this->listarArvoreProcesso(); - return (count($itens) > 1) ? array_slice($itens, 1) : null; - } - - private function listarArvoreProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $itens = $this->test->elements($this->test->using('css selector')->value('div.infraArvore > a > span[id]')); - return array_map(function($item) {return $item->text();}, $itens); - } - -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + $concluirProcessoButton = $this->test->byXPath("//img[@alt='Concluir Processo']"); + $concluirProcessoButton->click(); + } + + public function incluirDocumento() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $incluirDocumentoButton = $this->test->byXPath("//img[@alt='Incluir Documento']"); + $incluirDocumentoButton->click(); + } + + public function enviarProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Enviar Processo']")->click(); + } + + public function cancelarTramitacaoExterna() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath(mb_convert_encoding("//img[@alt='Cancelar Tramitação Externa']", 'UTF-8', 'ISO-8859-1'))->click(); + } + + public function navegarParaEditarProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar/Alterar Processo']"); + $this->editarProcessoButton->click(); + } + + public function navegarParaOrdenarDocumentos() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $button = $this->test->byXPath(mb_convert_encoding("//img[@alt='Ordenar Árvore do Processo']", 'UTF-8', 'ISO-8859-1')); + $button->click(); + } + + public function trocarOrdenacaoDocumentos() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + + $this->test->byXPath("//*[@id='selRelProtocoloProtocolo']/option[1]")->click(); + sleep(1); + $this->test->byXPath("//*[@id='imgRelProtocoloProtocoloAbaixo']")->click(); + sleep(1); + $this->test->byXPath("//*[@id='divInfraBarraComandosSuperior']/button[@value='Salvar']")->click(); + } + + public function navegarParaTramitarProcesso() + { + $this->test->waitUntil(function($testCase) { + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo']"); + $this->editarProcessoButton->click(); + sleep(2); + $testCase->assertStringContainsString('Envio Externo de Processo', $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaConsultarAndamentos() + { + $this->test->waitUntil(function($testCase) { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $testCase->byLinkText('Consultar Andamento')->click(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + sleep(2); + $testCase->assertStringContainsString(mb_convert_encoding('Histórico do Processo', 'UTF-8', 'ISO-8859-1'), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaConsultarRecibos() + { + $this->test->waitUntil(function($testCase) { + // Selecionar processo na árvore + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar Recibos']"); + $this->editarProcessoButton->click(); + sleep(2); + $testCase->assertStringContainsString('Consultar Recibos', $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaAnexarProcesso() + { + $this->test->waitUntil(function($testCase) { + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Anexar Processo']"); + $this->editarProcessoButton->click(); + sleep(2); + $testCase->assertStringContainsString(mb_convert_encoding('Anexação de Processos', 'UTF-8', 'ISO-8859-1'), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaTramitarProcessoInterno() + { + $this->enviarProcesso(); + } + + public function informacao() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + return $this->test->byId('divArvoreInformacao')->text(); + } + + public function processoAberto() + { + try + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Reabrir Processo']"); + return false; + } + catch(Exception $e) + { + return true; + } + } + + public function processoBloqueado() + { + try + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byXPath("//img[@title='Processo Bloqueado']"); + return true; + } + catch(Exception $e) + { + return false; + } + } + + public function deveSerDocumentoAnexo($bolDevePossuir, $nomeDocumentoArvore) + { + try + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + if($bolDevePossuir){ + $idAnexo=$this->test->byXPath("//span[contains(text(),'" . $nomeDocumentoArvore . "')]")->attribute('id'); + $idAnexo=str_replace("span", "", $idAnexo); + $this->test->byXPath("//img[contains(@id,'iconMD_PEN_DOC_REF" . $idAnexo . "')]"); + } + return true; + } + catch(Exception $e) + { + return false; + } + } + + public function ehDocumentoCancelado($nomeDocumentoArvore) + { + try + { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); + return true; + } + catch(Exception $e) + { + return false; + }finally{ + $this->test->timeouts()->implicitWait($to); + } + } + + public function ehDocumentoMovido($nomeDocumentoArvore) + { + try + { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); + return true; + } + catch(Exception $e) + { + return false; + }finally{ + $this->test->timeouts()->implicitWait($to); + } + } + + private function selecionarItemArvore($nomeArvore) + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeArvore)->click(); + } + + public function selecionarDocumento($nomeDocumentoArvore) + { + $this->selecionarItemArvore($nomeDocumentoArvore); + } + + public function selecionarProcesso() + { + $this->selecionarItemArvore($this->listarArvoreProcesso()[0]); + sleep(1); + } + + public function listarDocumentos() + { + $itens = $this->listarArvoreProcesso(); + return (count($itens) > 1) ? array_slice($itens, 1) : null; + } + + private function listarArvoreProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $itens = $this->test->elements($this->test->using('css selector')->value('div.infraArvore > a > span[id]')); + return array_map(function($item) {return $item->text(); + }, $itens); + } + + public function validarBotaoExiste($botao) + { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $botao = $this->test->byXPath("//img[@alt='$botao']"); + return true; + } catch (\Exception $e) { + return false; + } + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php b/tests_sei4/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php index 410edf20e..fe588cf97 100755 --- a/tests_sei4/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php +++ b/tests_sei4/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php @@ -2,13 +2,13 @@ class PaginaProcessosTramitadosExternamente extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function contemProcesso($numeroProcesso) + public function contemProcesso($numeroProcesso) { - return strpos($this->test->byCssSelector('body')->text(), $numeroProcesso) !== false; - } + return strpos($this->test->byCssSelector('body')->text(), $numeroProcesso) !== false; + } } \ No newline at end of file diff --git a/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php b/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php index 451bd858d..1f1e8f199 100755 --- a/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php +++ b/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php @@ -1,58 +1,58 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - - //Localiza colunas com dados da tramitação - $linhasResumoTramite = $this->test->elements($this->test->using('css selector')->value('div.infraAreaTabela > table tr')); - if(count($linhasResumoTramite) > 0) { - foreach ($linhasResumoTramite as $linha) { - $colunas = $linha->elements($this->test->using('css selector')->value('td')); - - if(count($colunas) == 2){ - //Verifica se trâmite informado foi localizado no histórico - $result = strpos($colunas[0]->text(), $mensagemTramite) !== false; - - //Verifica se recibo de envio do processo foi localizado - if($result && $verificaReciboEnvio) { - try{ - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Confirmação de Envio\']'))); - } - catch(Exception $e){ $result = false; } - finally{ $this->test->timeouts()->implicitWait($to); } - } - - //Verifica se recibo de conclusão do trâmite processo foi localizado - if($result && $verificaReciboConclusao) { - try{ - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Conclusão de Trâmite\']'))); - } - catch(Exception $e){ $result = false; } - finally{ $this->test->timeouts()->implicitWait($to); } - } - - if($result) { - break; - } - } - - } - } - - return $result; - } -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + + //Localiza colunas com dados da tramitação + $linhasResumoTramite = $this->test->elements($this->test->using('css selector')->value('div.infraAreaTabela > table tr')); + if(count($linhasResumoTramite) > 0) { + foreach ($linhasResumoTramite as $linha) { + $colunas = $linha->elements($this->test->using('css selector')->value('td')); + + if(count($colunas) == 2){ + //Verifica se trâmite informado foi localizado no histórico + $result = strpos($colunas[0]->text(), $mensagemTramite) !== false; + + //Verifica se recibo de envio do processo foi localizado + if($result && $verificaReciboEnvio) { + try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $colunas[1]->element($this->test->using('css selector')->value(mb_convert_encoding('a > img[title=\'Recibo de Confirmação de Envio\']', 'UTF-8', 'ISO-8859-1'))); + } + catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } + } + + //Verifica se recibo de conclusão do trâmite processo foi localizado + if($result && $verificaReciboConclusao) { + try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $colunas[1]->element($this->test->using('css selector')->value(mb_convert_encoding('a > img[title=\'Recibo de Conclusão de Trâmite\']', 'UTF-8', 'ISO-8859-1'))); + } + catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } + } + + if($result) { + break; + } + } + + } + } + + return $result; + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTeste.php b/tests_sei4/funcional/src/paginas/PaginaTeste.php index 9a2bc71c2..90e57bc09 100755 --- a/tests_sei4/funcional/src/paginas/PaginaTeste.php +++ b/tests_sei4/funcional/src/paginas/PaginaTeste.php @@ -1,67 +1,73 @@ -test = $test; - $this->test->timeouts()->implicitWait(10000); - } - - public function titulo() - { - return $this->test->title(); - } - - public function alertTextAndClose($confirm=true) - { - sleep(2); - $result = $this->test->alertText(); - $result = (!is_array($result) ? $result : null); - - if(isset($confirm) && $confirm) - $this->test->acceptAlert(); - else - $this->dismissAlert(); - - #var_dump($result); - return $result; - } - - public function unidadeContexto($unidadeContexto) - { - $this->test->frame(null); - $this->test->byXPath("(//a[@id='lnkInfraUnidade'])[2]")->click(); - $this->test->byXPath("//td[contains(.,'" . $unidadeContexto . "')]")->click(); - - } - - public function navegarParaControleProcesso() - { - $this->test->frame(null); - $this->test->byXPath("//img[@title='Controle de Processos']")->click(); - - } - - public function sairSistema() - { - $this->test->frame(null); - $this->test->byXPath("//a[@id='lnkInfraSairSistema'] | //a[@id='lnkSairSistema']")->click(); - } - - public static function selecionarUnidadeContexto($test, $unidadeContexto) - { - $paginaTeste = new PaginaTeste($test); - $paginaTeste->unidadeContexto($unidadeContexto); - } - - public function pesquisar($termoPesquisa) - { - $this->test->frame(null); - $this->test->byId("txtPesquisaRapida")->value($termoPesquisa); - $this->test->keys(Keys::ENTER); - } - -} +test = $test; + $this->test->timeouts()->implicitWait(10000); + } + + public function titulo() + { + return $this->test->title(); + } + + public function alertTextAndClose($confirm = true) + { + sleep(2); + $result = $this->test->alertText(); + $result = (!is_array($result) ? $result : null); + + if(isset($confirm) && $confirm) { + $this->test->acceptAlert(); + } else { + $this->dismissAlert(); + } + + #var_dump($result); + return $result; + } + + public function unidadeContexto($unidadeContexto) + { + $this->test->frame(null); + $this->test->byXPath("(//a[@id='lnkInfraUnidade'])[2]")->click(); + $this->test->byXPath("//td[contains(.,'" . $unidadeContexto . "')]")->click(); + + } + + public function navegarParaControleProcesso() + { + $this->test->frame(null); + $this->test->byXPath("//img[@title='Controle de Processos']")->click(); + + } + + public function sairSistema() + { + $this->test->frame(null); + $this->test->byXPath("//a[@id='lnkInfraSairSistema'] | //a[@id='lnkSairSistema']")->click(); + } + + public static function selecionarUnidadeContexto($test, $unidadeContexto) + { + $paginaTeste = new PaginaTeste($test); + $paginaTeste->unidadeContexto($unidadeContexto); + } + + public function pesquisar($termoPesquisa) + { + $this->test->frame(null); + $this->test->byId("txtPesquisaRapida")->value($termoPesquisa); + $this->test->keys(Keys::ENTER); + } + + public function refresh() + { + $this->test->refresh(); + } + +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php index 1829b985b..08825a270 100644 --- a/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php +++ b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -4,30 +4,32 @@ class PaginaTipoProcessoReativar extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarTipoProcessoReativar() + public function navegarTipoProcessoReativar() { - $this->test->byId("txtInfraPesquisarMenu")->value("Reativar Mapeamento de Tipos de Processo"); + $this->test->byId("txtInfraPesquisarMenu")->value("Reativar Mapeamento de Tipos de Processo"); - $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); - } + $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); + } - public function reativarMapeamento() + public function reativarMapeamento() { - $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); - $bolExisteAlerta=$this->alertTextAndClose(); - if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); } + } - public function reativarMapeamentoCheckbox() + 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); + $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/PaginaTramitarProcesso.php b/tests_sei4/funcional/src/paginas/PaginaTramitarProcesso.php index a704b1f2a..ecf3e19f6 100755 --- a/tests_sei4/funcional/src/paginas/PaginaTramitarProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaTramitarProcesso.php @@ -1,109 +1,119 @@ -repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } - - return $this->test->byId('selRepositorioEstruturas')->value(); - } - - public function unidade($nomeUnidade, $hierarquia=null) - { - $this->unidadeInput =$this->test->byId('txtUnidade'); - $this->unidadeInput->value($nomeUnidade); - $this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($hierarquia) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->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(); - } - - public function urgente($urgente) - { - $this->urgenteCheck = $this->test->byId('chkSinUrgente'); - if(isset($urgente) && ((!$urgente && $this->urgenteCheck->selected()) || ($urgente && !$this->urgenteCheck->selected()))) - $this->urgenteCheck->click(); - - return $this->urgenteCheck->selected(); - } - - public function tramitar() - { - $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); - $tramitarButton->click(); - } - - public function fecharBarraProgresso() - { - $btnFechar = $this->test->byXPath("//input[@id='btnFechar']"); - $btnFechar->click(); - } - - public function unidadeInterna($nomeUnidade) - { - $this->unidadeInput =$this->test->byId('txtUnidade'); - $this->unidadeInput->value($nomeUnidade); - //$this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($nomeUnidade) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->value(); - sleep(1); - try{ - $bolExisteAlerta=$this->alertTextAndClose(); - if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); - }catch(Exception $e){ - } - $testCase->byPartialLinkText($nomeUnidade)->click(); - return true; - }, PEN_WAIT_TIMEOUT); - - sleep(1); - return $this->unidadeInput->value(); - } - - public function tramitarInterno() - { - $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); - $tramitarButton->click(); - } - - public function alertTextAndClose($confirm=true) - { - sleep(2); - $result = $this->test->alertText(); - $result = (!is_array($result) ? $result : null); - - if(isset($confirm) && $confirm) - $this->test->acceptAlert(); - else - $this->dismissAlert(); - return $result; - } -} +repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + public function unidade($nomeUnidade, $hierarquia = null) + { + $this->unidadeInput =$this->test->byId('txtUnidade'); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->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(); + } + + public function urgente($urgente) + { + $this->urgenteCheck = $this->test->byId('chkSinUrgente'); + if(isset($urgente) && ((!$urgente && $this->urgenteCheck->selected()) || ($urgente && !$this->urgenteCheck->selected()))) { + $this->urgenteCheck->click(); + } + + return $this->urgenteCheck->selected(); + } + + public function tramitar() + { + $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); + $tramitarButton->click(); + } + + public function fecharBarraProgresso() + { + $btnFechar = $this->test->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } + + public function unidadeInterna($nomeUnidade) + { + $this->unidadeInput =$this->test->byId('txtUnidade'); + $this->unidadeInput->value($nomeUnidade); + //$this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($nomeUnidade) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + sleep(1); + try{ + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){ + } + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(1); + return $this->unidadeInput->value(); + } + + public function manterAbertoNaUnidadeAtual() + { + $manterAbertoCheckBox = $this->test->byXPath("//label[@id='lblSinManterAberto']"); + $manterAbertoCheckBox->click(); + } + + public function tramitarInterno() + { + $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); + $tramitarButton->click(); + } + + public function alertTextAndClose($confirm = true) + { + sleep(2); + $result = $this->test->alertText(); + $result = (!is_array($result) ? $result : null); + + if(isset($confirm) && $confirm) { + $this->test->acceptAlert(); + } else { + $this->dismissAlert(); + } + return $result; + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTramitarProcessoEmLote.php b/tests_sei4/funcional/src/paginas/PaginaTramitarProcessoEmLote.php index 572668ea2..3f2124e8c 100755 --- a/tests_sei4/funcional/src/paginas/PaginaTramitarProcessoEmLote.php +++ b/tests_sei4/funcional/src/paginas/PaginaTramitarProcessoEmLote.php @@ -1,64 +1,64 @@ -test->byXPath("//*[@id='imgGeradosCheck']"); - $chkGerados->click(); - } catch(Exception $e){} - - try{ - $chkRecebidos = $this->test->byXPath("//*[@id='imgRecebidosCheck']"); - $chkRecebidos->click(); - } catch(Exception $e){} - }else{ - $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); - $chkProtocolo->click(); - } - - } - - public function navegarControleProcessos() - { - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo em Lote']"); - $this->editarProcessoButton->click(); - } - - public function informacaoLote() - { - return $this->test->byId('divInfraAreaTelaD')->text(); - } - - public function navegarProcessoEmLote($selAndamento, $numProtocolo=null) - { - if(!is_null($selAndamento)){ - $select = $this->test->select($this->test->byId('selAndamento')); - $select->selectOptionByLabel($selAndamento); - } - - if(!is_null($numProtocolo)){ - $this->protocoloInput=$this->test->byId('txtProcedimentoFormatado'); - $this->protocoloInput->value($numProtocolo); - } - - $this->presquisarProcessoButton = $this->test->byXPath("//*[@id='sbmPesquisar']"); - $this->presquisarProcessoButton->click(); - - } -} +test->byXPath("//*[@id='imgGeradosCheck']"); + $chkGerados->click(); + } catch(Exception $e){} + + try{ + $chkRecebidos = $this->test->byXPath("//*[@id='imgRecebidosCheck']"); + $chkRecebidos->click(); + } catch(Exception $e){} + }else{ + $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); + } + + } + + public function navegarControleProcessos() + { + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo em Lote']"); + $this->editarProcessoButton->click(); + } + + public function informacaoLote() + { + return $this->test->byId('divInfraAreaTelaD')->text(); + } + + public function navegarProcessoEmLote($selAndamento, $numProtocolo = null) + { + if(!is_null($selAndamento)){ + $select = $this->test->select($this->test->byId('selAndamento')); + $select->selectOptionByLabel($selAndamento); + } + + if(!is_null($numProtocolo)){ + $this->protocoloInput=$this->test->byId('txtProcedimentoFormatado'); + $this->protocoloInput->value($numProtocolo); + } + + $this->presquisarProcessoButton = $this->test->byXPath("//*[@id='sbmPesquisar']"); + $this->presquisarProcessoButton->click(); + + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php index 5a481b9ff..f3b0eec38 100644 --- a/tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php +++ b/tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -14,65 +14,111 @@ class PaginaTramiteEmBloco extends PaginaTeste /** * @inheritdoc */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } /** * Selecionar processo * @param array $arrNumProtocolo * @return void */ - public function selecionarProcessos($arrNumProtocolo = array()) + public function selecionarProcessos($arrNumProtocolo = array()) { - foreach ($arrNumProtocolo as $numProtocolo) { - $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); - $chkProtocolo->click(); - } + foreach ($arrNumProtocolo as $numProtocolo) { + $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); } + } /** * Selecionar tramite em bloco * @return void */ - public function selecionarTramiteEmBloco() + public function selecionarTramiteEmBloco() { - $btnTramiteEmBloco = $this->test->byXPath( - "//img[@alt='". utf8_encode("Incluir Processos no Bloco de Trâmite") ."']" - ); - $btnTramiteEmBloco->click(); - } + $btnTramiteEmBloco = $this->test->byXPath( + "//img[@alt='". mb_convert_encoding("Incluir Processos no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1') ."']" + ); + $btnTramiteEmBloco->click(); + } + + /** + * Seleciona a visualização detalhada do processo. + * + * Este método simula o clique no botão que troca a visualização para + * a opção detalhada. Ele utiliza o XPath para encontrar o botão + * correspondente na interface da aplicação. + * + * @return void + */ + public function selecionarVisualizacaoDetalhada() + { + $btnTramiteEmBloco = $this->test->byXPath('//a[@onclick="trocarVisualizacao(\'D\');"]'); + $btnTramiteEmBloco->click(); + } + + /** + * Seleciona um processo específico com base no número do protocolo formatado. + * + * Este método busca o rótulo que contém o número do protocolo + * fornecido e simula um clique sobre ele para selecionar o processo. + * + * @param string $numProtocoloFormatado O número do protocolo formatado a ser selecionado. + * @return void + */ + public function selecionarProcesso($numProtocoloFormatado) + { + $btnTramiteEmBloco = $this->test->byXPath('//label[@title="' . $numProtocoloFormatado . '"]'); + $btnTramiteEmBloco->click(); + } + + /** + * Verifica o título da página atual. + * + * Este método busca e retorna o texto do título da página + * atual, comparando-o com o título fornecido. Ele é útil para + * garantir que a navegação ocorreu corretamente. + * + * @param string $titulo O título esperado da página. + * @return string O título da página atual. + */ + public function verificarTituloDaPagina($titulo) + { + $tituloDaPagina = $this->test->byXPath('//div[text()="' . $titulo . '"]'); + return $tituloDaPagina->text(); + } /** * Selecionar bloco * @param string $selAndamento * @return void */ - public function selecionarBloco($selAndamento) + public function selecionarBloco($selAndamento) { - $select = $this->test->select($this->test->byId('selBlocos')); - $select->selectOptionByValue($selAndamento); - } + $select = $this->test->select($this->test->byId('selBlocos')); + $select->selectOptionByValue($selAndamento); + } /** * Clicar em salvar * @return void */ - public function clicarSalvar() + public function clicarSalvar() { - $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); - $btnSalvar->click(); - } + $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); + $btnSalvar->click(); + } /** * Buscar mensagem de alerta da página * * @return string */ - public function buscarMensagemAlerta() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } } \ No newline at end of file diff --git a/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php index 011872e2a..4666cf75c 100644 --- a/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php +++ b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -4,51 +4,55 @@ class PaginaTramiteMapeamentoOrgaoExterno extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); + parent::__construct($test); - } + } - public function navegarRelacionamentoEntreOrgaos() + public function navegarRelacionamentoEntreOrgaos() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Unidades')); + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1')); - $this->test->byLinkText(utf8_encode('Relacionamento entre Unidades'))->click(); - $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); - } + $this->test->byLinkText(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1'))->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 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 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 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 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); - } + public function selectEstado($estado) { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } } diff --git a/tests_sei4/funcional/src/utils/DatabaseUtils.php b/tests_sei4/funcional/src/utils/DatabaseUtils.php index 6c43f4bd4..a5df11180 100755 --- a/tests_sei4/funcional/src/utils/DatabaseUtils.php +++ b/tests_sei4/funcional/src/utils/DatabaseUtils.php @@ -1,33 +1,33 @@ -connection = new PDO($dns, $user, $password); - } - - - public function execute($sql, $params){ - $statement = $this->connection->prepare($sql); - $result = $statement->execute($params); - return $result; - } - - - public function query($sql, $params){ - $statement = $this->connection->prepare($sql); - $statement->execute($params); - return $statement->fetchAll(); - } - - - public function getBdType(){ - return $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME); - } -} +connection = new PDO($dns, $user, $password); + } + + + public function execute($sql, $params){ + $statement = $this->connection->prepare($sql); + $result = $statement->execute($params); + return $result; + } + + + public function query($sql, $params){ + $statement = $this->connection->prepare($sql); + $statement->execute($params); + return $statement->fetchAll(); + } + + + public function getBdType(){ + return $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME); + } +} diff --git a/tests_sei4/funcional/src/utils/ParameterUtils.php b/tests_sei4/funcional/src/utils/ParameterUtils.php index d91d90ead..6366c7e0b 100755 --- a/tests_sei4/funcional/src/utils/ParameterUtils.php +++ b/tests_sei4/funcional/src/utils/ParameterUtils.php @@ -1,35 +1,35 @@ -databaseUtils = new DatabaseUtils($nomeContexto); - } - - public function getParameter($parameter){ - $result = null; - $query = "SELECT valor FROM md_pen_parametro WHERE nome = ?"; - $values = $this->databaseUtils->query($query, array($parameter)); - - if(isset($values)){ - $result = $values[0]["valor"]; - } - - return $result; - } - - public function setParameter($parameter, $value){ - $query = "UPDATE md_pen_parametro SET valor = ? WHERE nome = ?"; - return $this->databaseUtils->execute($query, array($value, $parameter)); - } -} +databaseUtils = new DatabaseUtils($nomeContexto); + } + + public function getParameter($parameter){ + $result = null; + $query = "SELECT valor FROM md_pen_parametro WHERE nome = ?"; + $values = $this->databaseUtils->query($query, array($parameter)); + + if(isset($values)){ + $result = $values[0]["valor"]; + } + + return $result; + } + + public function setParameter($parameter, $value){ + $query = "UPDATE md_pen_parametro SET valor = ? WHERE nome = ?"; + return $this->databaseUtils->execute($query, array($value, $parameter)); + } +} diff --git a/tests_sei4/funcional/tests/CenarioBaseTestCase.php b/tests_sei4/funcional/tests/CenarioBaseTestCase.php index 91a82cfdd..c9d4026fc 100755 --- a/tests_sei4/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei4/funcional/tests/CenarioBaseTestCase.php @@ -46,6 +46,8 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaCadastrarProcessoEmBloco = null; protected $paginaTramiteEmBloco = null; protected $paginaEnvioParcialListar = null; + protected $paginaPenHipoteseLegalListar = null; + protected $paginaMapUnidades = null; public function setUpPage(): void { @@ -72,6 +74,8 @@ public function setUpPage(): void $this->paginaCadastrarProcessoEmBloco = new PaginaCadastrarProcessoEmBloco($this); $this->paginaTramiteEmBloco = new PaginaTramiteEmBloco($this); $this->paginaEnvioParcialListar = new PaginaEnvioParcialListar($this); + $this->paginaPenHipoteseLegalListar = new PaginaPenHipoteseLegalListar($this); + $this->paginaMapUnidades = new PaginaMapUnidades($this); $this->currentWindow()->maximize(); } @@ -96,14 +100,16 @@ public static function setUpBeforeClass(): void 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, ]); + $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); // Configuração do prefíxo de processos $bancoOrgaoA->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_A_NUMERO_SEI, CONTEXTO_ORGAO_A_SIGLA_ORGAO)); $bancoOrgaoA->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_A_SIGLA_UNIDADE)); - $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasPEN'", null); + $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasEnvioPEN'", null); + $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasRecebimentoPEN'", null); // Remoção de mapeamento de espécie não mapeada na origem - $nomeSerieNaoMapeada = utf8_encode(CONTEXTO_ORGAO_A_TIPO_DOCUMENTO_NAO_MAPEADO); + $nomeSerieNaoMapeada = mb_convert_encoding(CONTEXTO_ORGAO_A_TIPO_DOCUMENTO_NAO_MAPEADO, 'UTF-8', 'ISO-8859-1'); $serieNaoMapeadaOrigem = $bancoOrgaoA->query('select ID_SERIE from serie where nome = ?', array($nomeSerieNaoMapeada)); $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); @@ -133,21 +139,22 @@ public static function setUpBeforeClass(): void 'Id' => CONTEXTO_ORGAO_B_ID_ESTRUTURA, 'Sigla' => CONTEXTO_ORGAO_B_SIGLA_ESTRUTURA, 'Nome' => CONTEXTO_ORGAO_B_NOME_UNIDADE, - ]); + ]); putenv("DATABASE_HOST=org1-database"); - + $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000002', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)); $bancoOrgaoB->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_B_NUMERO_SEI, CONTEXTO_ORGAO_B_SIGLA_ORGAO)); $bancoOrgaoB->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_B_SIGLA_UNIDADE)); - $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasPEN'", null); + $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasEnvioPEN'", null); + $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasRecebimentoPEN'", null); $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); // Remoção de mapeamento de espécie não mapeada na origem - $nomeSerieNaoMapeada = utf8_encode(CONTEXTO_ORGAO_B_TIPO_DOCUMENTO_NAO_MAPEADO); + $nomeSerieNaoMapeada = mb_convert_encoding(CONTEXTO_ORGAO_B_TIPO_DOCUMENTO_NAO_MAPEADO, 'UTF-8', 'ISO-8859-1'); $serieNaoMapeadaOrigem = $bancoOrgaoB->query('select ID_SERIE from serie where nome = ?', array($nomeSerieNaoMapeada)); $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); - + $bancoOrgaoB->execute("delete from md_pen_rel_doc_map_recebido where id_serie = ?", array($serieNaoMapeadaOrigem[0]["ID_SERIE"])); $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(4, 3, 3, 'E', 'S')); $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(5, 3, 3, 'R', 'S')); @@ -220,6 +227,7 @@ protected function definirContextoTeste($nomeContexto) 'SIGLA_UNIDADE_SECUNDARIA' => constant($nomeContexto . '_SIGLA_UNIDADE_SECUNDARIA'), 'SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA' => constant($nomeContexto . '_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'), 'NOME_UNIDADE_SECUNDARIA' => constant($nomeContexto . '_NOME_UNIDADE_SECUNDARIA'), + 'HIPOTESE_RESTRICAO_ID' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_ID'), 'HIPOTESE_RESTRICAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO'), 'HIPOTESE_RESTRICAO_NAO_MAPEADO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_NAO_MAPEADO'), 'REP_ESTRUTURAS' => constant($nomeContexto . '_REP_ESTRUTURAS'), @@ -269,15 +277,6 @@ protected function sairSistema() $this->paginaBase->sairSistema(); } - protected function cadastrarProcesso(&$dadosProcesso) - { - $this->paginaBase->navegarParaControleProcesso(); - $protocoloGerado = PaginaIniciarProcesso::gerarProcessoTeste($this, $dadosProcesso); - $dadosProcesso['PROTOCOLO'] = $protocoloGerado; - sleep(2); - return $protocoloGerado; - } - protected function abrirProcesso($protocolo) { $this->paginaBase->navegarParaControleProcesso(); @@ -294,19 +293,6 @@ protected function abrirProcessoPelaDescricao($descricao) return $protocolo; } - protected function cadastrarDocumentoInterno($dadosDocumentoInterno) - { - $this->paginaProcesso->selecionarProcesso(); - $this->paginaIncluirDocumento->gerarDocumentoTeste($dadosDocumentoInterno); - sleep(2); - } - - protected function cadastrarDocumentoExterno($dadosDocumentoExterno, $comAnexo = true) - { - $this->paginaProcesso->selecionarProcesso(); - $this->paginaIncluirDocumento->gerarDocumentoExternoTeste($dadosDocumentoExterno, $comAnexo); - sleep(2); - } protected function assinarDocumento($siglaOrgao, $cargoAssinante, $loginSenha) { @@ -322,12 +308,6 @@ protected function assinarDocumento($siglaOrgao, $cargoAssinante, $loginSenha) sleep(2); } - protected function anexarProcesso($protocoloProcessoAnexado) - { - $this->paginaProcesso->navegarParaAnexarProcesso(); - $this->paginaAnexarProcesso->anexarProcesso($protocoloProcessoAnexado); - } - protected function tramitarProcessoExternamente($protocolo, $repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) { // Acessar funcionalidade de trâmite externo @@ -365,7 +345,7 @@ protected function tramitarProcessoExternamente($protocolo, $repositorio, $unida $callbackEnvio = $callbackEnvio ?: function ($testCase) { try { $testCase->frame('ifrEnvioProcesso'); - $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); + $mensagemSucesso = mb_convert_encoding('Trâmite externo do processo finalizado com sucesso!', 'UTF-8', 'ISO-8859-1'); $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); $btnFechar->click(); @@ -393,13 +373,16 @@ protected function tramitarProcessoExternamente($protocolo, $repositorio, $unida sleep(1); } - protected function tramitarProcessoInternamente($unidadeDestino) + protected function tramitarProcessoInternamente($unidadeDestino, $manterAbertoNaUnidadeAtual = false) { // Acessar funcionalidade de trâmite interno $this->paginaProcesso->navegarParaTramitarProcessoInterno(); // Preencher parâmetros do trâmite $this->paginaTramitar->unidadeInterna($unidadeDestino); + if ($manterAbertoNaUnidadeAtual) { + $this->paginaTramitar->manterAbertoNaUnidadeAtual(); + } $this->paginaTramitar->tramitarInterno(); sleep(1); @@ -437,7 +420,7 @@ protected function tramitarProcessoInternamenteParaCancelamento($unidadeOrigem, protected function validarRecibosTramite($mensagem, $verificarReciboEnvio, $verificarReciboConclusao) { - $mensagem = utf8_encode($mensagem); + $mensagem = mb_convert_encoding($mensagem, 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($mensagem, $verificarReciboEnvio, $verificarReciboConclusao) { sleep(5); $testCase->refresh(); @@ -466,7 +449,7 @@ protected function validarHistoricoTramite( if ($verificarProcessoRejeitado) { - $motivoRecusa = utf8_encode($motivoRecusa); + $motivoRecusa = mb_convert_encoding($motivoRecusa, 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($unidadeDestino, $motivoRecusa) { sleep(5); $testCase->refresh(); @@ -482,7 +465,7 @@ protected function validarDadosProcesso($descricao, $restricao, $observacoes, $l sleep(2); $this->paginaProcesso->navegarParaEditarProcesso(); $this->paginaEditarProcesso = new PaginaEditarProcesso($this); - $this->assertEquals(utf8_encode($descricao), $this->paginaEditarProcesso->descricao()); + $this->assertEquals(mb_convert_encoding($descricao, 'UTF-8', 'ISO-8859-1'), $this->paginaEditarProcesso->descricao()); $this->assertEquals($restricao, $this->paginaEditarProcesso->restricao()); $listaInteressados = is_array($listaInteressados) ? $listaInteressados : array($listaInteressados); @@ -552,8 +535,8 @@ protected function validarProcessosTramitados($protocolo, $deveExistir) { $this->frame(null); $this->paginaBase->navegarParaControleProcesso(); - $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados Externamente')); - $this->byLinkText("Processos Tramitados Externamente")->click(); + $this->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Processos em Tramitação Externa', 'UTF-8', 'ISO-8859-1')); + $this->byLinkText(mb_convert_encoding("Processos em Tramitação Externa", 'UTF-8', 'ISO-8859-1'))->click(); $this->assertEquals($deveExistir, $this->paginaProcessosTramitadosExternamente->contemProcesso($protocolo)); } @@ -637,74 +620,6 @@ public function gerarDadosDocumentoExternoGrandeTeste($contextoProducao, $nomesA ); } - protected function realizarTramiteExterno(&$processoTeste, $documentosTeste, $remetente, $destinatario, $validarTramite) - { - $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; - - // 1 - Acessar sistema do REMETENTE do processo - $this->acessarSistema($remetente['URL'], $remetente['SIGLA_UNIDADE'], $remetente['LOGIN'], $remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - if (isset($processoTeste['PROTOCOLO'])) { - $strProtocoloTeste = $processoTeste['PROTOCOLO']; - $this->abrirProcesso($strProtocoloTeste); - } else { - $strProtocoloTeste = $this->cadastrarProcesso($processoTeste); - $processoTeste['PROTOCOLO'] = $strProtocoloTeste; - } - - // 3 - Incluir Documentos no Processo - $documentosTeste = array_key_exists('TIPO', $documentosTeste) ? array($documentosTeste) : $documentosTeste; - foreach ($documentosTeste as $doc) { - if ($doc['TIPO'] == 'G') { - $this->cadastrarDocumentoInterno($doc); - $this->assinarDocumento($remetente['ORGAO'], $remetente['CARGO_ASSINATURA'], $remetente['SENHA']); - } else if ($doc['TIPO'] == 'R') { - $this->cadastrarDocumentoExterno($doc); - } - } - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $paginaTramitar = $this->paginaTramitar; - $this->tramitarProcessoExternamente($strProtocoloTeste, $destinatario['REP_ESTRUTURAS'], $destinatario['NOME_UNIDADE'], $destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - - if ($validarTramite) { - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding($destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", $strProtocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$nomeUnidadeDestinatario, true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $deveExistir = $remetente['URL'] != $destinatario['URL']; - $this->validarProcessosTramitados($strProtocoloTeste, $deveExistir); - } - } - - public function realizarTramiteExternoSemvalidacaoNoRemetente(&$processoTeste, $documentosTeste, $remetente, $destinatario) - { - $this->realizarTramiteExterno($processoTeste, $documentosTeste, $remetente, $destinatario, false); - } - - public function realizarTramiteExternoComValidacaoNoRemetente(&$processoTeste, $documentosTeste, $remetente, $destinatario) - { - $this->realizarTramiteExterno($processoTeste, $documentosTeste, $remetente, $destinatario, true); - } - public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste, $documentosTeste, $destinatario, $devolucao = false, $unidadeSecundaria = false) { $strProtocoloTeste = $processoTeste['PROTOCOLO']; @@ -723,7 +638,7 @@ public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTest // 12 - Validar dados do processo $devolucao = $processoTeste['ORIGEM'] == $destinatario['URL']; - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= $processoTeste['TIPO_PROCESSO']; $processoTeste['OBSERVACOES'] = (!$devolucao) ? $strTipoProcesso : $processoTeste['OBSERVACOES']; $this->validarDadosProcesso($processoTeste['DESCRICAO'], $processoTeste['RESTRICAO'], $processoTeste['OBSERVACOES'], $processoTeste['INTERESSADOS']); @@ -800,8 +715,8 @@ protected function selecionarProcessos($numProtocolo=null) protected function visualizarProcessoTramitadosEmLote($test) { $this->paginaBase->navegarParaControleProcesso(); - $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados em Bloco')); - $test->byLinkText("Processos Tramitados em Bloco")->click(); + $this->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Processos Tramitados em Bloco', 'UTF-8', 'ISO-8859-1')); + $this->byLinkText("Processos Tramitados em Bloco")->click(); } protected function navegarProcessoEmLote($selAndamento, $numProtocolo=null) @@ -816,16 +731,4 @@ protected function navegarProcessoEmLote($selAndamento, $numProtocolo=null) $this->paginaTramitarProcessoEmLote->navegarProcessoEmLote($selAndamento, $numProtocolo); } - public function atualizarTramitesPEN($bolOrg1 = true, $bolOrg2 = true, $org2Primeiro = true, $quantidade = 1) - { - /*for($i=0;$i<$quantidade;$i++){ - if($org2Primeiro){ - if($bolOrg2)exec(PEN_SCRIPT_MONITORAMENTO_ORG2); - if($bolOrg1)exec(PEN_SCRIPT_MONITORAMENTO_ORG1); - }else{ - if($bolOrg1)exec(PEN_SCRIPT_MONITORAMENTO_ORG1); - if($bolOrg2)exec(PEN_SCRIPT_MONITORAMENTO_ORG2); - } - }*/ - } } diff --git a/tests_sei4/funcional/tests/FixtureCenarioBaseTestCase.php b/tests_sei4/funcional/tests/FixtureCenarioBaseTestCase.php new file mode 100755 index 000000000..8daf39101 --- /dev/null +++ b/tests_sei4/funcional/tests/FixtureCenarioBaseTestCase.php @@ -0,0 +1,331 @@ +buscarHipoteseLegal($dadosProcesso); + } + + $parametros = [ + 'Descricao' => $dadosProcesso['DESCRICAO'] ?: util::random_string(20), + 'Interessados' => $dadosProcesso['INTERESSADOS'] ?: util::random_string(40), + 'IdHipoteseLegal' => $dadosProcesso['HIPOTESE_LEGAL'] ? $objHipLegalDTO->getNumIdHipoteseLegal() : null, + 'StaNivelAcessoLocal' => $dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO, + 'StaNivelAcessoGlobal' => $dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO + ]; + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloDTO = $objProtocoloFixture->carregar($parametros); + $objProcedimentoFixture = new ProcedimentoFixture(); + + $parametrosProcedimento = [ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]; + if (!is_null($dadosProcesso['ID_TIPO_PROCESSO'])) { + $parametrosProcedimento['IdTipoProcedimento'] = $dadosProcesso['ID_TIPO_PROCESSO']; + } + $objProcedimentoDTO = $objProcedimentoFixture->carregar($parametrosProcedimento); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdTarefa' => \TarefaRN::$TI_GERACAO_PROCEDIMENTO, + 'IdUsuarioConclusao' => 100000001 + ]); + + $objContatoFixture = new ContatoFixture(); + $objContatoDTO = $objContatoFixture->carregar([ + 'Nome' => $parametros['Interessados'] + ]); + + if ($cadastrarParticipante) { + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteDTO = $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdContato' => $objContatoDTO->getNumIdContato() + ]); + } + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdAssunto' => 377 + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $dadosProcesso['PROTOCOLO'] = $objProtocoloDTO->getStrProtocoloFormatado(); + + return $objProtocoloDTO; + } + + protected function buscarHipoteseLegal($dados) + { + $param = [ + 'Nome' => trim(explode('(',$dados['HIPOTESE_LEGAL'])[0]), + 'BaseLegal' => explode(')',trim(explode('(',$dados['HIPOTESE_LEGAL'])[1]))[0] + ]; + $objHipLegalFixture = new HipoteseLegalFixture(); + return $objHipLegalFixture->buscar($param)[0]; + } + + protected function cadastrarDocumentoInternoFixture($dadosDocumentoInterno, $idProtocolo, $assinarDocumento = true) + { + + if (!is_null($dadosDocumentoInterno['HIPOTESE_LEGAL'])){ + $objHipLegalDTO = $this->buscarHipoteseLegal($dadosDocumentoInterno); + } + + $dadosDocumentoDTO = [ + 'IdProtocolo' => $idProtocolo, + 'IdProcedimento' => $idProtocolo, + 'Descricao' => $dadosDocumentoInterno['DESCRICAO'], + 'IdHipoteseLegal' => $dadosDocumentoInterno["HIPOTESE_LEGAL"] ? $objHipLegalDTO->getNumIdHipoteseLegal() : null, + 'StaNivelAcessoGlobal' => $dadosDocumentoInterno["RESTRICAO"] ?: \ProtocoloRN::$NA_PUBLICO, + 'StaNivelAcessoLocal' => $dadosDocumentoInterno["RESTRICAO"] ?: \ProtocoloRN::$NA_PUBLICO, + 'IdUnidadeResponsavel' => $dadosDocumentoInterno["UNIDADE_RESPONSAVEL"] ?: null + ]; + + if ($serieDTO = $this->buscarIdSerieDoDocumento($dadosDocumentoInterno['TIPO_DOCUMENTO'])) { + $dadosDocumentoDTO['IdSerie'] = $serieDTO->getNumIdSerie(); + } + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar($dadosDocumentoDTO); + + if ($assinarDocumento) { + //Adicionar assinatura ao documento + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $idProtocolo, + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + } + + return $objDocumentoDTO; + + } + + protected function cadastrarDocumentoExternoFixture($dadosDocumentoExterno, $idProtocolo) + { + $dadosDocumentoDTO = [ + 'IdProtocolo' => $idProtocolo, + 'IdProcedimento' => $idProtocolo, + 'Descricao' => $dadosDocumentoExterno['DESCRICAO'], + 'StaProtocolo' => \ProtocoloRN::$TP_DOCUMENTO_RECEBIDO, + 'StaDocumento' => \DocumentoRN::$TD_EXTERNO, + 'IdConjuntoEstilos' => NULL, + ]; + + if ($serieDTO = $this->buscarIdSerieDoDocumento($dadosDocumentoExterno['TIPO_DOCUMENTO'])) { + $dadosDocumentoDTO['IdSerie'] = $serieDTO->getNumIdSerie(); + } + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar($dadosDocumentoDTO); + + //Adicionar anexo ao documento + $objAnexoFixture = new AnexoFixture(); + $objAnexoFixture->carregar([ + 'IdProtocolo' => $objDocumentoDTO->getDblIdDocumento(), + 'Nome' => basename($dadosDocumentoExterno['ARQUIVO']), + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $idProtocolo, + 'Conclusao' => \InfraData::getStrDataHoraAtual(), + 'IdTarefa' => \TarefaRN::$TI_ARQUIVO_ANEXADO, + 'IdUsuarioConclusao' => 100000001 + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), + 'Nome' => 'ANEXO' + ]); + + return $objDocumentoDTO; + } + + protected function anexarProcessoFixture($protocoloPrincipalId, $protocoloProcessoAnexadoId) + { + // Realizar a anexação de processos + $objAnexoProcessoFixture = new AnexoProcessoFixture(); + $objAnexoProcessoFixture->carregar([ + 'IdProtocolo' => $protocoloPrincipalId, + 'IdDocumento' => $protocoloProcessoAnexadoId, + ]); + } + + protected function consultarProcessoFixture($protocoloFormatado, $staProtocolo = null) + { + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloDTO = $objProtocoloFixture->buscar([ + 'ProtocoloFormatado' => $protocoloFormatado, + 'StaProtocolo' => $staProtocolo ?: \ProtocoloRN::$TP_DOCUMENTO_GERADO, + ]); + return $objProtocoloDTO[0]; + } + + protected function realizarTramiteExternoFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario, $validarTramite) + { + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; + + // 1 - Cadastrar novo processo de teste + if (isset($processoTeste['PROTOCOLO'])) { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + $objProtocoloDTO = $this->consultarProcessoFixture($strProtocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + + } else { + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $strProtocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + $processoTeste['PROTOCOLO'] = $strProtocoloTeste; + } + + // 2 - Incluir Documentos no Processo + $documentosTeste = array_key_exists('TIPO', $documentosTeste) ? array($documentosTeste) : $documentosTeste; + foreach ($documentosTeste as $doc) { + if ($doc['TIPO'] == 'G') { + // cadastra e assina documento interno + $this->cadastrarDocumentoInternoFixture($doc,$objProtocoloDTO->getDblIdProtocolo()); + } else if ($doc['TIPO'] == 'R') { + $this->cadastrarDocumentoExternoFixture($doc, $objProtocoloDTO->getDblIdProtocolo()); + } + } + + // 3 - Acessar sistema do REMETENTE do processo + $this->acessarSistema($remetente['URL'], $remetente['SIGLA_UNIDADE'], $remetente['LOGIN'], $remetente['SENHA']); + + // 4 - Abrir processo + $this->abrirProcesso($strProtocoloTeste); + + // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + $paginaTramitar = $this->paginaTramitar; + $this->tramitarProcessoExternamente($strProtocoloTeste, $destinatario['REP_ESTRUTURAS'], $destinatario['NOME_UNIDADE'], $destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + + if ($validarTramite) { + // 6 - Verificar se situação atual do processo está como bloqueado + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + $unidade = mb_convert_encoding($destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", $strProtocoloTeste, $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + + // 8 - Validar histórico de trâmite do processo + $this->validarHistoricoTramite(self::$nomeUnidadeDestinatario, true, true); + + // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + $deveExistir = $remetente['URL'] != $destinatario['URL']; + $this->validarProcessosTramitados($strProtocoloTeste, $deveExistir); + } + } + + public function realizarTramiteExternoComValidacaoNoRemetenteFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario) + { + $this->realizarTramiteExternoFixture($processoTeste, $documentosTeste, $remetente, $destinatario, true); + } + + public function realizarTramiteExternoSemValidacaoNoRemetenteFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario) + { + $this->realizarTramiteExternoFixture($processoTeste, $documentosTeste, $remetente, $destinatario, false); + } + + protected function buscarIdSerieDoDocumento($tipoDocumento) + { + $serieDTO = new \SerieDTO(); + $serieDTO->setStrNome($tipoDocumento); + $serieDTO->retNumIdSerie(); + $serieDTO->setNumMaxRegistrosRetorno(1); + + $objBD = new \SerieBD(\BancoSEI::getInstance()); + return $objBD->consultar($serieDTO); + } + + protected function atualizarProcessoFixture($objProtocoloDTO, $dadosProcesso = []) + { + if (!is_null($dadosProcesso['DESCRICAO'])) { + $parametros['Descricao'] = $dadosProcesso['DESCRICAO']; + } + + if (!is_null($dadosProcesso['INTERESSADOS'])) { + $parametros['Interessados'] = $dadosProcesso['INTERESSADOS']; + } + + $parametros['IdProtocolo'] = $objProtocoloDTO->getDblIdProtocolo(); + $objProtocoloFixture = new ProtocoloFixture(); + + return $objProtocoloFixture->atualizar($parametros); + } + /** + * Método cadastrarHipoteseLegal + * + * Este método realiza o cadastro de uma hipótese legal para testes de trâmite de processos e documentos. + * Ele recebe um array com os dados da hipótese legal, cria uma nova instância de `HipoteseLegalFixture`, + * e utiliza esses dados para carregar a hipótese legal no sistema. + * + * @param array $hipotesLegal Um array contendo os dados da hipótese legal a ser cadastrada, com as seguintes chaves: + * - `HIPOTESE_LEGAL` (string): O nome da hipótese legal. + * - `HIPOTESE_LEGAL_BASE_LEGAL` (string): A base legal associada à hipótese. + * - `HIPOTESE_LEGAL_DESCRICAO` (string) [opcional]: Uma descrição para a hipótese legal (padrão: 'Nova hipotese legal para testes'). + * - `HIPOTESE_LEGAL_STA_NIVEL_ACESSO` (int) [opcional]: O nível de acesso para a hipótese legal (padrão: nível restrito). + * - `HIPOTESE_LEGAL_SIN_ATIVO` (string) [opcional]: Indicador de atividade da hipótese legal ('S' para ativo por padrão). + * + * @return object $objHipoteseLegalDTO Retorna um objeto `HipoteseLegalDTO` contendo os dados da hipótese legal cadastrada. + */ + protected function cadastrarHipoteseLegal($hipotesLegal) + { + // Criação de uma nova instância de HipoteseLegalFixture + $objHipLegalFixture = new HipoteseLegalFixture(); + + // Definição dos parâmetros para cadastro da hipótese legal + $param = [ + 'Nome' => $hipotesLegal['HIPOTESE_LEGAL'], + 'BaseLegal' => $hipotesLegal['HIPOTESE_LEGAL_BASE_LEGAL'], + 'Descricao' => $hipotesLegal['HIPOTESE_LEGAL_DESCRICAO'] ?? 'Nova hipotese legal para testes', + 'StaNivelAcesso' => $hipotesLegal['HIPOTESE_LEGAL_STA_NIVEL_ACESSO'] ?? \ProtocoloRN::$NA_RESTRITO, + 'SinAtivo' => $hipotesLegal['HIPOTESE_LEGAL_SIN_ATIVO'] ?? "S" + ]; + + // Carregar a hipótese legal com os parâmetros fornecidos + $objHipoteseLegalDTO = $objHipLegalFixture->carregar($param); + + // Retorna o objeto DTO da hipótese legal cadastrada + return $objHipoteseLegalDTO; + } + + protected function cadastrarTipoProcedimentoFixture($dados = []) + { + $objTipoProcedimentoFixture = new TipoProcedimentoFixture(); + $objTipoProcedimentoDTO = $objTipoProcedimentoFixture->carregar([ + 'Nome' => $dados['NOME'] + ]); + + return $objTipoProcedimentoDTO; + } + +} diff --git a/tests_sei4/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php b/tests_sei4/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php new file mode 100644 index 000000000..f7f85352a --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php @@ -0,0 +1,123 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $this->penMapUnidadesFixture = $penMapUnidadesFixture->carregar([ + 'Id' => self::$remetente['ID_ESTRUTURA'], + 'Sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'Nome' => self::$remetente['NOME_UNIDADE'] + ]); + } + + /** + * Teste mapeamento de unidades e limitação dos repositórios para tramite + * + * @return void + */ + public function test_mapeamento_unidades_com_limitacao_de_repositorios() + { + $this->removerRestricaoUnidade(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaMapUnidades->navegarPenMapeamentoUnidades(); + $this->paginaMapUnidades->pesquisarUnidade(self::$remetente['SIGLA_UNIDADE']); + sleep(2); + + $this->paginaMapUnidades->selecionarEditar(); + $this->paginaMapUnidades->limparRestricoes(); + + $this->paginaMapUnidades->selecionarRepoEstruturas(self::$remetente['REP_ESTRUTURAS']); + $this->paginaMapUnidades->selecionarUnidade(self::$remetente['NOME_UNIDADE']); + + $this->paginaMapUnidades->salvar(); + sleep(2); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + 'Mapeamento de Unidade gravado com sucesso.', + $mensagem + ); + $this->sairSistema(); + } + + /** + * Teste para validar se aplicou a restrição de mapeamento de unidades no tramite + * + * @return void + */ + public function test_tramitar_com_limitacao_de_repositorios() + { + $this->criarProcesso(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->abrirProcesso($this->objProtocoloDTO->getStrProtocoloFormatado()); + + $this->paginaProcesso->navegarParaTramitarProcesso(); + $this->paginaMapUnidades->validarRepositorio(self::$remetente['REP_ESTRUTURAS']); + $this->paginaMapUnidades->selecionarUnidade(self::$remetente['NOME_UNIDADE']); + + $this->removerRestricaoUnidade(); + + $this->sairSistema(); + } + + /** + * Criar processo para validar tramitação por Fixture + * + * @return void + */ + private function criarProcesso() + { + // Definição de dados de teste do processo principal + $processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + $this->objProtocoloDTO = $this->cadastrarProcessoFixture($processoTestePrincipal); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $this->objProtocoloDTO->getDblIdProtocolo()); + + } + + /** + * Remover restricao para limpar teste + * + * @return void + */ + private function removerRestricaoUnidade() + { + $penUnidadeRestricaoFixture = new \PenUnidadeRestricaoFixture(); + $penUnidadeRestricaoFixture->remover([ + 'NomeUnidadeRestricao' => self::$remetente['REP_ESTRUTURAS'], + 'NomeUnidadeRHRestricao' => self::$remetente['NOME_UNIDADE'] + ]); + } + +} diff --git a/tests_sei4/funcional/tests/MapeamentoEnvioParcialTest.php b/tests_sei4/funcional/tests/MapeamentoEnvioParcialTest.php index 1aef741ec..309e7b77c 100644 --- a/tests_sei4/funcional/tests/MapeamentoEnvioParcialTest.php +++ b/tests_sei4/funcional/tests/MapeamentoEnvioParcialTest.php @@ -2,8 +2,11 @@ /** * Testes de mapeamento de envio de envio parcial + * + * Execution Groups + * @group execute_alone_group1 */ -class MapeamentoEnvioParcialTest extends CenarioBaseTestCase +class MapeamentoEnvioParcialTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $remetenteB; @@ -43,7 +46,7 @@ public function test_novo_mapeamento_envio_parcial_test() $this->assertNotNull($nomeUnidadeCadastrado); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial cadastrado com sucesso.'), + mb_convert_encoding('Mapeamento de Envio Parcial cadastrado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } @@ -84,7 +87,7 @@ public function test_editar_mapeamento_envio_parcial_test() $this->assertNotNull($nomeUnidadeCadastrado); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial atualizado com sucesso.'), + mb_convert_encoding('Mapeamento de Envio Parcial atualizado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } @@ -172,7 +175,7 @@ public function test_excluir_mapeamento_envio_parcial_test() sleep(1); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento excluído com sucesso.'), + mb_convert_encoding('Mapeamento excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } diff --git a/tests_sei4/funcional/tests/MapeamentoHipoteseLegalTest.php b/tests_sei4/funcional/tests/MapeamentoHipoteseLegalTest.php new file mode 100644 index 000000000..bb93e2fef --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoHipoteseLegalTest.php @@ -0,0 +1,37 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaPenHipoteseLegalListar->navegarMapeamentoHipoteseLegalListar(); + $this->assertTrue($this->paginaPenHipoteseLegalListar->existeTabela()); + + $this->sairSistema(); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php index 0489546e1..696b26a21 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoDesativarReativarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoDesativarReativarTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -58,7 +58,7 @@ public function test_desativacao_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi desativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi desativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -87,7 +87,7 @@ public function test_reativacao_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -116,7 +116,7 @@ public function test_desativacao_checkbox_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi desativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi desativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -145,7 +145,7 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $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 index b93b63f4b..0276282ae 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoExcluirTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoExcluirTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -62,7 +62,7 @@ public function test_excluir_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre unidades foi excluído com sucesso.'), + mb_convert_encoding('Relacionamento entre unidades foi excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php index 7ccfc62a7..9524d5c5c 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -8,7 +8,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoExportarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoExportarTest extends FixtureCenarioBaseTestCase { public static $remetente; diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php index 74749a272..d171c163d 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoReativarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoReativarTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -66,7 +66,7 @@ public function test_reativacao_mapeamento_orgao_externo() $this->paginaTipoProcessoReativar->reativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Mapeamento de Tipo de Processo foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -94,7 +94,7 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Mapeamento de Tipo de Processo foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -129,14 +129,14 @@ private function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') array( 'IdMapeamento' => $idMapeamento, 'IdProcedimento' => 100000348, - 'NomeProcedimento' => utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), - 'SimAtivo' => $sinAtivo + 'NomeProcedimento' => mb_convert_encoding('Acompanhamento Legislativo: Congresso Nacional', 'UTF-8', 'ISO-8859-1'), + 'SinAtivo' => $sinAtivo ), array( 'IdMapeamento' => $idMapeamento, 'IdProcedimento' => 100000425, - 'NomeProcedimento' => utf8_encode('mauro teste'), - 'SimAtivo' => $sinAtivo + 'NomeProcedimento' => mb_convert_encoding('mauro teste', 'UTF-8', 'ISO-8859-1'), + 'SinAtivo' => $sinAtivo ) ); } diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php index 1e31a79b0..bf15fc0b7 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -55,7 +55,7 @@ public function test_cadastrar_novo_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre Unidades cadastrado com sucesso.'), + mb_convert_encoding('Relacionamento entre Unidades cadastrado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -91,7 +91,7 @@ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Cadastro de relacionamento entre unidades já existente.'), + mb_convert_encoding('Cadastro de relacionamento entre unidades já existente.', 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -133,7 +133,7 @@ public function test_editar_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre Unidades atualizado com sucesso.'), + mb_convert_encoding('Relacionamento entre Unidades atualizado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php index 6bcf6dbc0..3ad753e1f 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -8,7 +8,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; diff --git a/tests_sei4/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php b/tests_sei4/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php new file mode 100644 index 000000000..2912e6c6a --- /dev/null +++ b/tests_sei4/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php @@ -0,0 +1,96 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $processoTeste = $this->gerarDadosProcessoTeste($remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste($remetente); + + // Cadastrar novo processo de teste e documento + self::$objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, self::$objProtocoloDTO->getDblIdProtocolo()); + + // Cadastrar novo bloco de tramite e insere protocolo + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre processo e tramita internamente ele para a unidade secundária, deixando ele aberto na atual + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + try { + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + } catch (Exception $ex) { + $this->assertStringContainsString( + utf8_encode('Não é possível tramitar um processo aberto em mais de uma unidade.'), + $ex->getMessage() + ); + } + } + + /** + * Teste seguinte que finaliza o processo na unidade atual deixando-o aberto apenas na unidade secundaria + * e tenta executar o tramite em bloco para receber a mensagem de erro + * + * @group mapeamento + * + * @return void + */ + public function test_validar_tramite_bloco_mensagem_nao_possui_andamento_aberto() + { + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre e conclui processo na unidade atual, desta forma ficando aberto apenas na unidade secundaria + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->paginaProcesso->concluirProcesso(); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + try { + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + } catch (Exception $ex) { + $this->assertStringContainsString( + utf8_encode('O processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() . ' não possui andamento aberto nesta unidade'), + $ex->getMessage() + ); + } + } + +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index 4c7247049..84424de88 100755 --- a/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group4 */ -class RecebimentoRecusaJustificativaGrandeTest extends CenarioBaseTestCase +class RecebimentoRecusaJustificativaGrandeTest extends FixtureCenarioBaseTestCase { protected $destinatarioWs; @@ -47,7 +47,7 @@ public function test_tramitar_processo_da_origem() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); @@ -89,7 +89,7 @@ public function test_verificar_destino_processo_para_devolucao() $this->assertTrue($this->paginaControleProcesso->contemAlertaProcessoRecusado(self::$protocoloTeste)); } - + private function recusarTramite($servicoPEN, $id_tramite) { $justificativa = "An exception occurred while executing 'INSERT INTO juntadas (numeracao_sequencial, movimento, ativo, vinculada, criado_em, atualizado_em, id, uuid, documentos_juntado_id, volumes_id, atividades_id, tarefas_id, comunicacoes_id, origem_dados_id, criado_por, atualizado_por) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [1, 'DOCUMENTO RECEBIDO VIA INTEGRA\u00c7\u00c3O COM O BARRAMENTO', 1, 0, '2021-12-02 14:21:48', '2021-12-02 14:21:48', 1317074776, '06ba31e8-75ad-4111-82dc-6f451f51825e', 1333864526, null, null, null, null, 3534979787, null, null]: ORA-00001: restrição exclusiva (SAPIENS.UNIQ_867686DHDKJ97876) violada"; @@ -97,7 +97,7 @@ private function recusarTramite($servicoPEN, $id_tramite) $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $id_tramite; - $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); + $parametros->recusaDeTramite->justificativa = mb_convert_encoding($justificativa, 'UTF-8', 'ISO-8859-1'); $parametros->recusaDeTramite->motivo = "99"; return $servicoPEN->recusarTramite($parametros); } diff --git a/tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php b/tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php new file mode 100755 index 000000000..f3eb491a8 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php @@ -0,0 +1,234 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(6, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_situacao_do_processo_no_bloco_status7() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->abrirProcesso($objProtocoloDTO->getStrProtocoloFormatado()); + $this->paginaProcesso->cancelarTramitacaoExterna(); + $this->paginaTramitar->alertTextAndClose(true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(7, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_situacao_do_processo_no_bloco_status9() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoExternoTeste($remetente, 'arquivo_extensao_nao_permitida.docx'); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(9, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + +} diff --git a/tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php b/tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php new file mode 100755 index 000000000..c76e5b886 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php @@ -0,0 +1,95 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals("Aguardando Processamento", $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ])[0]; + + $statusEmAndamento = in_array($objBlocoDeTramiteProtocoloFixtureDTO->getNumIdAndamento(), self::$idsEmAndamento); + $this->assertTrue($statusEmAndamento); + return true; + }, PEN_WAIT_TIMEOUT); + } + +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php index 02db33b4c..7e37d24e1 100644 --- a/tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -1,12 +1,11 @@ paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Bloco de Trâmite externo criado com sucesso!'), + mb_convert_encoding('Bloco de Trâmite externo criado com sucesso!', 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -66,16 +65,10 @@ public function test_editar_bloco_de_tramite() sleep(1); $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Bloco de trâmite externo alterado com sucesso!'), + mb_convert_encoding('Bloco de trâmite externo alterado com sucesso!', 'UTF-8', 'ISO-8859-1'), $mensagem ); $this->sairSistema(); } - - public static function tearDownAfterClass(): void - { - // $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); - // $objBlocoDeTramiteFixture->excluir(1); - } } \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php new file mode 100644 index 000000000..8967980f4 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php @@ -0,0 +1,240 @@ +carregar([ + 'Nome' => 'PEN_TIPO_PROCESSO_EXTERNO', + 'Valor' => null + ]); + putenv("DATABASE_HOST=org1-database"); + } + + public function test_tramite_bloco_externo_com_processo_nao_mapeado() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $this->prepararCenariosFixtures(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + // Saída do sistema + $this->sairSistema(); + } + + public function test_verificar_envio_processo() + { + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalEmProcessamento = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + try { + $statusImg = $statusTd->byXPath(mb_convert_encoding(".//img[@title='Aguardando Processamento']", 'UTF-8', 'ISO-8859-1')); + if ($statusImg){ + $totalEmProcessamento++; + } + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada + } + } + $this->assertEquals($totalEmProcessamento,0); // Todos processos enviados + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(5); + } + + public function test_verificar_envio_tramite_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); + + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $quantidadeLinhasRecusadas = $this->paginaCadastrarProcessoEmBloco->buscarQuantidadeProcessosRecusados(); + + $this->assertEquals($quantidadeLinhasRecusadas, 1); + + // Saída do sistema + $this->sairSistema(); + } + + public function test_incluir_processo_recusado_em_novo_bloco() + { + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + self::$objBlocoDeTramiteDTO2 = $objBlocoDeTramiteFixture->carregar(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = self::$objProtocoloDTO3->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Verificação do título da página + $titulo = mb_convert_encoding("Incluir Processo(s) no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'); + $tituloRetorno = $this->paginaTramiteEmBloco->verificarTituloDaPagina($titulo); + $this->assertEquals($titulo, $tituloRetorno); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO2->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Espera para a mensagem de sucesso aparecer + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . self::$objBlocoDeTramiteDTO2->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } + + private function prepararCenariosFixtures() + { + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + self::$objBlocoDeTramiteDTO1 = $objBlocoDeTramiteFixture->carregar(); + + // Geração dos dados para o processo e documento de teste 1 + self::$processoTeste1 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + // Cadastro do processo e documento 1 + self::$objProtocoloDTO1 = $this->cadastrarProcessoFixture(self::$processoTeste1); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, self::$objProtocoloDTO1->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO1->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + + // Geração dos dados para o processo e documento de teste 2 + self::$processoTeste2 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento 2 + self::$objProtocoloDTO2 = $this->cadastrarProcessoFixture(self::$processoTeste2); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$objProtocoloDTO2->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO2->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + + // Geração dos dados para o processo e documento de teste 3 recusa + self::$processoTeste3 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objTipoProcedimentoDTO = $this->cadastrarTipoProcedimentoFixture([ + 'NOME' => 'Recusa: Teste Funcional', + ]); + self::$processoTeste3['ID_TIPO_PROCESSO'] = $objTipoProcedimentoDTO->getNumIdTipoProcedimento(); + + // Cadastro do processo e documento 3 recusa + self::$objProtocoloDTO3 = $this->cadastrarProcessoFixture(self::$processoTeste3); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, self::$objProtocoloDTO3->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO3->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + } + + public static function tearDownAfterClass(): void + { + putenv("DATABASE_HOST=org2-database"); + parent::tearDownAfterClass(); + $objTipoProcessoPadraoFixture = new \TipoProcessoPadraoFixture(); + $objTipoProcessoPadraoFixture->carregar([ + 'Nome' => 'PEN_TIPO_PROCESSO_EXTERNO', + 'Valor' => '100000256' + ]); + putenv("DATABASE_HOST=org1-database"); + } +} diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php new file mode 100644 index 000000000..6ed68cd23 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php @@ -0,0 +1,177 @@ +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'] + ); + + $arrProcessosTestes = $this->cadastrarBlocoComProcessosComEstadoDeTramite(); + + $arrNupsProcessosTestes = array_keys($arrProcessosTestes); + + $strProcessoNaoEnviado = $arrNupsProcessosTestes[0]; + $strProcessoSucesso = $arrNupsProcessosTestes[1]; + $strProcessoCancelado = $arrNupsProcessosTestes[2]; + $strProcessoRecusado = $arrNupsProcessosTestes[3]; + $strProcessoAguardandoProcessamento = $arrNupsProcessosTestes[4]; + + // Testar Inclusão de processo com estado de NÃO ENVIADO no bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoNaoEnviado, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding( + "Prezado(a) usuário(a), o processo " . $strProcessoNaoEnviado + . " encontra-se inserido no bloco" + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de SUCESSO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoSucesso, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de CANCELADO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoCancelado, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de AGUARDANDO PROCESSAMENTO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoAguardandoProcessamento, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding( + "Prezado(a) usuário(a), o processo " . $strProcessoAguardandoProcessamento + . " encontra-se inserido no bloco" + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } + + /** + * Registra um bloco contendo um processo, atribuindo-lhe o estado especificado do processo em um tramite em bloco. + * Estados possíveis: Aberto, Em processamento, Recusado, Cancelado, Sucesso + * + * @return array + */ + private function cadastrarBlocoComProcessosComEstadoDeTramite() + { + $arrEstados = [ + null, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, + ]; + + $arrProcessosComEstado = []; + for ($i = 0; $i < count($arrEstados); $i++) { + + $objProtocoloDTO = $this->cadastrarProcessos(); + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $dadosBlocoProcesso = []; + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + + $arrProcessosComEstado[$protocoloFormatado] = $arrEstados[$i]; + + // Popula o array com os dados necessários para esta iteração + $dadosBlocoProcesso['IdUnidadeOrigem'] = self::$remetente['ID_ESTRUTURA']; + $dadosBlocoProcesso['IdUnidadeDestino'] = self::$destinatario['ID_ESTRUTURA']; + $dadosBlocoProcesso['UnidadeDestino'] = self::$destinatario['NOME_UNIDADE']; + $dadosBlocoProcesso['IdBloco'] = $objBlocoDeTramiteDTO->getNumId(); + $dadosBlocoProcesso['IdProtocolo'] = $objProtocoloDTO->getDblIdProtocolo(); + $dadosBlocoProcesso['IdAndamento'] = $arrEstados[$i]; + + $dadosBlocoProcesso['IdRepositorioOrigem'] = self::$remetente['ID_ESTRUTURA'] ?: null; + $dadosBlocoProcesso['IdRepositorioDestino'] = self::$destinatario['ID_REP_ESTRUTURAS'] ?: null; + $dadosBlocoProcesso['RepositorioDestino'] = self::$remetente['NOME_UNIDADE'] ?: null; + + $this->cadastrarProcessoBlocoDeTramite($dadosBlocoProcesso); + } + + return $arrProcessosComEstado; + } + + private function inserirProcessoEmUmBloco($strProtocoloFormatado, $numIdBloco) + { + $this->paginaBase->navegarParaControleProcesso(); + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + $this->paginaTramiteEmBloco->selecionarProcessos([$strProtocoloFormatado]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($numIdBloco); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + return $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php new file mode 100644 index 000000000..ff03308d5 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php @@ -0,0 +1,172 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar Hipótese Legal não mapeada para tramitar o processo + $objHipoteseLegalDTO = $this->cadastrarHipoteseLegal([ + 'HIPOTESE_LEGAL' => 'Hipotese Legal Recusa Processo', + 'HIPOTESE_LEGAL_BASE_LEGAL' => 'Base Hipotese Legal Recusa Processo' + ]); + $processoTeste["HIPOTESE_LEGAL"] = $objHipoteseLegalDTO->getStrNome(). '('. $objHipoteseLegalDTO->getStrBaseLegal().')'; + $processoTeste["RESTRICAO"] = PaginaIniciarProcesso::STA_NIVEL_ACESSO_RESTRITO; + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Verificar se a mensagem de sucesso foi exibida + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + // Validação: a mensagem de alerta deve conter a hipótese legal não mapeada + $this->assertStringContainsString( + mb_convert_encoding('Hipótese legal "'. $objHipoteseLegalDTO->getStrNome() . '" do processo '.$protocoloFormatado.' não mapeada', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } + + /** + * Teste: Inclusão de documento restrito com hipótese legal não mapeada + * + * Este método testa a inclusão de um documento restrito em um processo com + * uma hipótese legal não mapeada. + * + * Passos do teste: + * - Configuração do cenário de teste com remetente e destinatário. + * - Geração de dados do processo e documento para o teste. + * - Cadastro de uma hipótese legal não mapeada para o documento. + * - Inclusão do documento no bloco de trâmite e verificação da mensagem de alerta. + */ + public function teste_inclusao_de_processo_em_bloco_com_documento_restrito_com_hipotese_legal_nao_mapeada() + { + // Configuração dos dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Cadastrar Hipótese Legal não mapeada para tramitar o documento + $objHipoteseLegalDTO = $this->cadastrarHipoteseLegal([ + 'HIPOTESE_LEGAL' => 'Hipotese Legal Recusa Documento', + 'HIPOTESE_LEGAL_BASE_LEGAL' => 'Base Hipotese Legal Recusa Documento' + ]); + + $documentoTeste["HIPOTESE_LEGAL"] = $objHipoteseLegalDTO->getStrNome(). '('. $objHipoteseLegalDTO->getStrBaseLegal().')'; + $documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; + + // Cadastro do documento restrito + $objDocummentoDTO = $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Verificar se a mensagem de sucesso foi exibida + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + // Validação: a mensagem de alerta deve conter a hipótese legal não mapeada + $numeroDocumento = str_pad($objDocummentoDTO->getDblIdDocumento(), 6, "0", STR_PAD_LEFT); + $this->assertStringContainsString( + mb_convert_encoding('Hipótese legal "'. $objHipoteseLegalDTO->getStrNome() . '" do documento Ofício '.$numeroDocumento.' não mapeada', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } +} diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php new file mode 100644 index 000000000..5cad66c85 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php @@ -0,0 +1,80 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarVisualizacaoDetalhada(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Verificação do título da página + $titulo = mb_convert_encoding("Incluir Processo(s) no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'); + $tituloRetorno = $this->paginaTramiteEmBloco->verificarTituloDaPagina($titulo); + $this->assertEquals($titulo, $tituloRetorno); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Espera para a mensagem de sucesso aparecer + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } +} diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoTest.php new file mode 100644 index 000000000..8f9df00e5 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoInclusaoTest.php @@ -0,0 +1,156 @@ +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->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + $dados = [ + 'IdUnidade' => 110000002, + 'Descricao' => 'bloco_criado_' . self::$remetente['SIGLA_UNIDADE_SECUNDARIA'] + ]; + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite($dados); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + // etapa 1 + $arrColunaDescricao = $this->elements($this->using('xpath')->value("//td[4]")); + $bolEncontrado = false; + foreach ($arrColunaDescricao as $elemento) { + if (trim($elemento->text()) === self::$objBlocoDeTramiteDTO->getStrDescricao()) { + $bolEncontrado = true; + break; + } + } + + $this->assertTrue($bolEncontrado); + + // etapa 2 + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE']); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + $arrColunaDescricao = $this->elements($this->using('xpath')->value("//td[4]")); + + $bolEncontrado = false; + foreach ($arrColunaDescricao as $elemento) { + if (trim($elemento->text()) === self::$objBlocoDeTramiteDTO->getStrDescricao()) { + $bolEncontrado = true; + break; + } + } + + $this->assertFalse($bolEncontrado); + + $this->sairSistema(); + } + + /** + * Teste Incluir processo já adicionado em outro bloco + * + * @return void + */ + public function test_incluir_processo_em_mais_de_um_bloco() + { + 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'] + ); + self::$objProtocoloDTO = $this->cadastrarProcessos(); + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $dados = [ + 'IdProtocolo' => self::$objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]; + + $this->cadastrarProcessoBlocoDeTramite($dados); + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $this->paginaBase->navegarParaControleProcesso(); + + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding( + 'Prezado(a) usuário(a), o processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem() . ' - ' + . self::$objBlocoDeTramiteDTO->getStrDescricao() + . ' da unidade ' . self::$remetente['SIGLA_UNIDADE'] + . '. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php index 9cdc40a08..ae069d57f 100644 --- a/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php @@ -1,18 +1,18 @@ gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); for ($i = 0; $i < self::$numQtyProcessos; $i++) { - $objProtocoloFixture = new ProtocoloFixture(); - $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ - 'Descricao' => 'teste' - ]); - - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - //Incluir novos documentos relacionados - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - 'Descricao' => self::$documentoTeste1['DESCRICAO'], - 'StaProtocolo' => ProtocoloRN::$TP_DOCUMENTO_RECEBIDO, - 'StaDocumento' => DocumentoRN::$TD_EXTERNO, - 'IdConjuntoEstilos' => NULL, - ]); - - //Adicionar anexo ao documento - $objAnexoFixture = new AnexoFixture(); - $objAnexoFixture->carregar([ - 'IdProtocolo' => $objDocumentoDTO->getDblIdDocumento(), - 'Nome' => basename(self::$documentoTeste1['ARQUIVO']), - ]); - - // $objAssinaturaFixture = new AssinaturaFixture(); - // $objAssinaturaFixture->carregar([ - // 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - // 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - // 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), - // ]); + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() ]); - self::$protocoloTestePrincipal['PROTOCOLO'] = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); } $this->acessarSistema( @@ -119,7 +64,24 @@ public function test_tramitar_processo_anexado_da_origem() $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } ); sleep(10); } else { @@ -133,24 +95,32 @@ public function test_tramitar_processo_anexado_da_origem() } public function test_verificar_envio_processo() - { - $this->markTestIncomplete( - 'Tela de confirmação de envio suprimida. Aguardando refatoração da funcionalidade do bloco para refatorar este teste.' - ); - + { $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - $this->navegarProcessoEmLote(0); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); $testCase->refresh(); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + if (self::$tramitar == true) { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Concluído'])", 'UTF-8', 'ISO-8859-1')); + } else { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Em aberto'])", 'UTF-8', 'ISO-8859-1')); + } + $totalConcluidos++; + } + $this->assertEquals($totalConcluidos, self::$numQtyProcessos); return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + }, PEN_WAIT_TIMEOUT); sleep(5); } @@ -167,9 +137,9 @@ public function test_verificar_envio_tramite_em_bloco() $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); if (self::$tramitar == true) { - $this->assertNotEquals('Aberto', $novoStatus); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); } else { - $this->assertEquals('Aberto', $novoStatus); + $this->assertEquals(mb_convert_encoding("Aberto", 'UTF-8', 'ISO-8859-1'), $novoStatus); } $this->sairSistema(); diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php index c44773185..0afa56e49 100644 --- a/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php @@ -1,16 +1,18 @@ gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); for ($i = 0; $i < self::$numQtyProcessos; $i++) { - $objProtocoloFixture = new ProtocoloFixture(); - $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ - 'Descricao' => 'teste' - ]); - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - ]); + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() ]); - self::$protocoloTestePrincipal = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); } $this->acessarSistema( @@ -93,7 +56,24 @@ public function teste_tramite_bloco_externo() $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } ); sleep(5); @@ -115,23 +95,31 @@ public function teste_tramite_bloco_externo() */ public function test_verificar_envio_processo() { - $this->markTestIncomplete( - 'Tela de confirmação de envio suprimida. Aguardando refatoração da funcionalidade do bloco para refatorar este teste.' - ); - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - $this->navegarProcessoEmLote(0); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); $testCase->refresh(); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + if (self::$tramitar == true) { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Concluído'])", 'UTF-8', 'ISO-8859-1')); + } else { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Em aberto'])", 'UTF-8', 'ISO-8859-1')); + } + $totalConcluidos++; + } + $this->assertEquals($totalConcluidos, self::$numQtyProcessos); return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + }, PEN_WAIT_TIMEOUT); sleep(5); @@ -146,25 +134,30 @@ public function test_verificar_envio_processo() */ public function test_verificar_envio_tramite_em_bloco() { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->waitUntil(function ($testCase) { + sleep(5); + $testCase->refresh(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertNotEquals('Aguardando Processamento', $novoStatus); + return true; + }, PEN_WAIT_TIMEOUT); - 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); + } else { + $this->assertEquals("Aberto", $novoStatus); + } - if (self::$tramitar == true) { - $this->assertNotEquals('Aberto', $novoStatus); - } else { - $this->assertEquals('Aberto', $novoStatus); - } - - $this->sairSistema(); + $this->sairSistema(); } } \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php index a3a3fe9de..01902c8da 100644 --- a/tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php @@ -1,17 +1,15 @@ definirContextoTeste(CONTEXTO_ORGAO_A); - - $this->cadastrarBlocoDeTramite(); - $this->cadastrarProcessos(); } /** @@ -40,15 +35,17 @@ public function teste_incluir_processo_em_bloco() self::$remetente['SENHA'] ); + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + self::$objProtocoloDTO = $this->cadastrarProcessos(); $this->paginaBase->navegarParaControleProcesso(); - $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); - $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); $this->paginaTramiteEmBloco->clicarSalvar(); sleep(2); $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Processo(s) incluído(s) com sucesso no bloco ' . $this->objBlocoDeTramiteDTO->getNumId()), + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . self::$objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -61,12 +58,6 @@ public function teste_incluir_processo_em_bloco() */ public function teste_mesmo_processo_em_bloco() { - $objBlocoDeTramiteProtocoloFixture = new BlocoDeTramiteProtocoloFixture(); - $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $this->objProtocoloDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $this->objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $this->objProtocoloDTO->getStrProtocoloFormatado() - ]); $this->acessarSistema( self::$remetente['URL'], @@ -76,19 +67,21 @@ public function teste_mesmo_processo_em_bloco() ); $this->paginaBase->navegarParaControleProcesso(); - $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); - $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); $this->paginaTramiteEmBloco->clicarSalvar(); sleep(2); $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( - utf8_encode( - 'Prezado(a) usuário(a), o processo ' . $this->objProtocoloDTO->getStrProtocoloFormatado() - . ' encontra-se inserido no bloco ' . $this->objBlocoDeTramiteDTO->getNumId() . ' - ' - . $this->objBlocoDeTramiteDTO->getStrDescricao() + mb_convert_encoding( + 'Prezado(a) usuário(a), o processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco ' . self::$objBlocoDeTramiteDTO->getNumOrdem() . ' - ' + . self::$objBlocoDeTramiteDTO->getStrDescricao() + . ' da unidade ' . self::$objBlocoDeTramiteDTO->getStrSiglaUnidade() . '. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' - ), + , 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -97,63 +90,24 @@ public function teste_mesmo_processo_em_bloco() /** * Cadastra o bloco de tramite - * @return void */ - private function cadastrarBlocoDeTramite() + public function cadastrarBlocoDeTramite() { $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); - $this->objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + return $objBlocoDeTramiteFixture->carregar(); } /** * Cadastra o bloco de tramite - * @return void */ private function cadastrarProcessos() { - $parametros = []; - $objProtocoloFixture = new ProtocoloFixture(); - $this->objProtocoloDTO = $objProtocoloFixture->carregar( - $parametros, - function($objProtocoloDTO) { - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - ]); - } - ); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; } } \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoTest.php index 59f493e1e..8fcf31a76 100644 --- a/tests_sei4/funcional/tests/TramiteBlocoExternoTest.php +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoTest.php @@ -1,87 +1,37 @@ definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - $parametros = [ - 'Descricao' => 'teste' - ]; - $this->objProtocoloFixture = new ProtocoloFixture(); - $this->objProtocoloFixture->carregar($parametros, function($objProtocoloDTO) { - - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - ]); - - $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); - $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); - - $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); - $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $objProtocoloDTO->getStrProtocoloFormatado() - ]); - - }); - - } public function teste_tramite_bloco_externo() { // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -93,9 +43,26 @@ public function teste_tramite_bloco_externo() $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } ); - sleep(10); + sleep(1); $this->sairSistema(); } diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoUnidadeTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoUnidadeTest.php new file mode 100644 index 000000000..546b099fc --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoUnidadeTest.php @@ -0,0 +1,103 @@ +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'] + ); + + self::$objProtocoloDTO = $this->cadastrarProcessos(); + + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->assertTrue($this->paginaProcesso->processoAberto()); + + // enviar processo e criar documento na unidade secundária + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + + $this->paginaControleProcesso->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $documentoTeste['UNIDADE_RESPONSAVEL'] = 110000002; + $this->cadastrarDocumentoInternoFixture($documentoTeste, self::$objProtocoloDTO->getDblIdProtocolo()); + + // devolver processo com novo documento + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE']); + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE']); + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + sleep(2); + + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding( + "Processo(s) incluído(s) com sucesso no bloco " . self::$objBlocoDeTramiteDTO->getNumOrdem() + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteEnvioParcialTest.php b/tests_sei4/funcional/tests/TramiteEnvioParcialTest.php index 898c04608..43f5fd9eb 100644 --- a/tests_sei4/funcional/tests/TramiteEnvioParcialTest.php +++ b/tests_sei4/funcional/tests/TramiteEnvioParcialTest.php @@ -1,219 +1,264 @@ definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - } + private $objProtocoloFixture; + public static $remetente; + public static $destinatario; + public static $processoTestePrincipal; + public static $protocoloTestePrincipal; + public static $documentoTeste1; + public static $documentoTeste2; + public static $arrIdMapEnvioParcialOrgaoA; + public static $arrIdMapEnvioParcialOrgaoB; + + /** + * @inheritdoc + * @return void + */ + function setUp(): void + { + parent::setUp(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } - /* + /* * Tramitar processo para o Órgão 2 com envio parcial mapeado * @group mapeamento * * @return void */ - public function test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial() - { - $this->criarCenarioTramiteEnvioParcialTest(); - - $this->acessarSistema( - self::$remetente['URL'], - self::$remetente['SIGLA_UNIDADE'], - self::$remetente['LOGIN'], - self::$remetente['SENHA'] - ); - - self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - - self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste1); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - - $this->sairSistema(); - } + public function test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial() + { + $this->criarCenarioTramiteEnvioParcialTest(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTestePrincipal->getStrProtocoloFormatado()); + $this->tramitarProcessoExternamente( + self::$protocoloTestePrincipal, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); - /* + $this->sairSistema(); + } + + /* * Verificar processo recebido no Órgão 2 com envio parcial mapeado * @group mapeamento * + * @depends test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial * @return void */ - public function test_verificar_processo_recebido_tramitar_destinatario_envio_parcial() - { - $documentos = array(self::$documentoTeste1); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTestePrincipal, $documentos, self::$destinatario); - } + public function test_verificar_processo_recebido_tramitar_destinatario_envio_parcial() + { + $strProtocoloTeste = self::$protocoloTestePrincipal->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - /* + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $testCase->refresh(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; + self::$processoTestePrincipal['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTestePrincipal['DESCRICAO'], + self::$processoTestePrincipal['RESTRICAO'], + self::$processoTestePrincipal['OBSERVACOES'], + array(self::$processoTestePrincipal['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + $this->assertTrue(count($listaDocumentos) == 1); + + $this->sairSistema(); + } + + /* * Devolver processo ao Órgão 1 com envio parcial mapeado * @group mapeamento * + * @depends test_verificar_processo_recebido_tramitar_destinatario_envio_parcial * @return void */ - public function test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial() - { - $this->acessarSistema( - self::$destinatario['URL'], - self::$destinatario['SIGLA_UNIDADE'], - self::$destinatario['LOGIN'], - self::$destinatario['SENHA'] - ); - - $this->abrirProcesso(self::$protocoloTestePrincipal); - - self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$destinatario); - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$destinatario['ORGAO'], self::$destinatario['CARGO_ASSINATURA'], self::$destinatario['SENHA']); - - $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$remetente['REP_ESTRUTURAS'], self::$remetente['NOME_UNIDADE'], self::$remetente['SIGLA_UNIDADE_HIERARQUIA'], false); - - $this->sairSistema(); - } + public function test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial() + { + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + putenv("DATABASE_HOST=org2-database"); + + $this->paginaBase->navegarParaControleProcesso(); + + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$destinatario); + $protocoloTestePrincipalOrg2 = $this->consultarProcessoFixture(self::$protocoloTestePrincipal->getStrProtocoloFormatado(), \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $protocoloTestePrincipalOrg2->getDblIdProtocolo()); + + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTestePrincipal->getStrProtocoloFormatado()); - /* + sleep(5); + + $this->tramitarProcessoExternamente( + self::$protocoloTestePrincipal, + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE'], + self::$remetente['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + + $this->sairSistema(); + } + + /* * Verificar processo recebido no Órgão 1 com envio parcial mapeado * @group mapeamento * + * @depends test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial * @return void */ - public function test_verificar_processo_recebido_tramitar_remetente_envio_parcial() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTestePrincipal, $documentos, self::$remetente); + public function test_verificar_processo_recebido_tramitar_remetente_envio_parcial() + { + $strProtocoloTeste = self::$protocoloTestePrincipal->getStrProtocoloFormatado(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $testCase->refresh(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; + self::$processoTestePrincipal['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTestePrincipal['DESCRICAO'], + self::$processoTestePrincipal['RESTRICAO'], + self::$processoTestePrincipal['OBSERVACOES'], + array(self::$processoTestePrincipal['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + $this->assertTrue(count($listaDocumentos) == 2); + + $documentosTeste = array(self::$documentoTeste1, self::$documentoTeste2); + for ($i = 0; $i < count($listaDocumentos); $i++) { + $this->validarDadosDocumento($listaDocumentos[$i], $documentosTeste[$i], self::$remetente, false, null); } + + $this->sairSistema(); + } - /** - * Excluir mapeamentos de Envio Parcial no Remetente e Destinatário - * @group mapeamento - */ - public static function tearDownAfterClass(): void - { - $penMapEnvioParcialFixture = new \PenMapEnvioParcialFixture(); - - putenv("DATABASE_HOST=org1-database"); - foreach(self::$arrIdMapEnvioParcialOrgaoA as $idMapEnvioParcial) { - $penMapEnvioParcialFixture->remover([ - 'Id' => $idMapEnvioParcial - ]); - } - - putenv("DATABASE_HOST=org2-database"); - foreach(self::$arrIdMapEnvioParcialOrgaoB as $idMapEnvioParcial) { - $penMapEnvioParcialFixture->remover([ - 'Id' => $idMapEnvioParcial - ]); - } - - parent::tearDownAfterClass(); + /** + * Excluir mapeamentos de Envio Parcial no Remetente e Destinatário + * @group mapeamento + */ + public static function tearDownAfterClass(): void + { + $penMapEnvioParcialFixture = new \PenMapEnvioParcialFixture(); + + putenv("DATABASE_HOST=org1-database"); + foreach (self::$arrIdMapEnvioParcialOrgaoA as $idMapEnvioParcial) { + $penMapEnvioParcialFixture->remover([ + 'Id' => $idMapEnvioParcial + ]); } - /* + putenv("DATABASE_HOST=org2-database"); + foreach (self::$arrIdMapEnvioParcialOrgaoB as $idMapEnvioParcial) { + $penMapEnvioParcialFixture->remover([ + 'Id' => $idMapEnvioParcial + ]); + } + putenv("DATABASE_HOST=org1-database"); + parent::tearDownAfterClass(); + } + + /* * Criar processo e mapear Envio Parcial no Remetente e Destinatário * @group mapeamento * * @return void */ - private function criarCenarioTramiteEnvioParcialTest() - { - $parametros = [ - 'Descricao' => 'teste' - ]; - $this->objProtocoloFixture = new ProtocoloFixture(); - $this->objProtocoloFixture->carregar($parametros, function($objProtocoloDTO) { - - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - ]); - - $objContatoFixture = new ContatoFixture(); - $objContatoDTO = $objContatoFixture->carregar(); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdContato' => $objContatoDTO->getNumIdContato() - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - 'IdAtividade' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - }); - - // Mapear Envio Parcial no Remetente - self::$arrIdMapEnvioParcialOrgaoA = array(); - putenv("DATABASE_HOST=org1-database"); - $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); - $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ - 'IdEstrutura' => self::$destinatario['ID_REP_ESTRUTURAS'], - 'StrEstrutura' => self::$destinatario['REP_ESTRUTURAS'], - 'IdUnidadePen' => self::$destinatario['ID_ESTRUTURA'], - 'StrUnidadePen' => self::$destinatario['NOME_UNIDADE'] - ]); - self::$arrIdMapEnvioParcialOrgaoA[]= $objMapEnvioParcial->getDblId(); - - // Mapear Envio Parcial no Destinatário - self::$arrIdMapEnvioParcialOrgaoB = array(); - putenv("DATABASE_HOST=org2-database"); - $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); - $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ - 'IdEstrutura' => self::$remetente['ID_REP_ESTRUTURAS'], - 'StrEstrutura' => self::$remetente['REP_ESTRUTURAS'], - 'IdUnidadePen' => self::$remetente['ID_ESTRUTURA'], - 'StrUnidadePen' => self::$remetente['NOME_UNIDADE'] - ]); - self::$arrIdMapEnvioParcialOrgaoB[]= $objMapEnvioParcial->getDblId(); - } -} \ No newline at end of file + private function criarCenarioTramiteEnvioParcialTest() + { + self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + self::$protocoloTestePrincipal = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, self::$protocoloTestePrincipal->getDblIdProtocolo()); + + // Mapear Envio Parcial no Remetente + self::$arrIdMapEnvioParcialOrgaoA = array(); + putenv("DATABASE_HOST=org1-database"); + $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); + $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ + 'IdEstrutura' => self::$destinatario['ID_REP_ESTRUTURAS'], + 'StrEstrutura' => self::$destinatario['REP_ESTRUTURAS'], + 'IdUnidadePen' => self::$destinatario['ID_ESTRUTURA'], + 'StrUnidadePen' => self::$destinatario['NOME_UNIDADE'] + ]); + self::$arrIdMapEnvioParcialOrgaoA[] = $objMapEnvioParcial->getDblId(); + + // Mapear Envio Parcial no Destinatário + self::$arrIdMapEnvioParcialOrgaoB = array(); + putenv("DATABASE_HOST=org2-database"); + $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); + $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ + 'IdEstrutura' => self::$remetente['ID_REP_ESTRUTURAS'], + 'StrEstrutura' => self::$remetente['REP_ESTRUTURAS'], + 'IdUnidadePen' => self::$remetente['ID_ESTRUTURA'], + 'StrUnidadePen' => self::$remetente['NOME_UNIDADE'] + ]); + self::$arrIdMapEnvioParcialOrgaoB[] = $objMapEnvioParcial->getDblId(); + + putenv("DATABASE_HOST=org1-database"); + } +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php b/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php index e9604e732..cea56aeb1 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteProcessoAnexadoComDevolucaoTest extends CenarioBaseTestCase +class TramiteProcessoAnexadoComDevolucaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -37,31 +37,37 @@ public function test_tramitar_processo_anexado_da_origem() // Definição de dados de teste do processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Definição de dados de teste do processo a ser anexado self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento1DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + $objDocumento2DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento3DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $objDocumento4DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + + // Preencher variaveis que serão usadas posteriormente nos testes + self::$documentoTeste1['ARQUIVO'] = str_pad($objDocumento1DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste2['ARQUIVO'] = str_pad($objDocumento2DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste3['ARQUIVO'] = str_pad($objDocumento3DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste4['ARQUIVO'] = str_pad($objDocumento4DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + // Realizar a anexação de processos + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste anexado e incluir documentos relacionados - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); - - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -71,9 +77,9 @@ public function test_tramitar_processo_anexado_da_origem() self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false ); + } - /** * Teste de verificação do correto envio do processo anexado no sistema remetente * @@ -94,10 +100,10 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); + $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -127,8 +133,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -144,7 +149,7 @@ public function test_verificar_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(3, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->paginaProcesso->selecionarDocumento(self::$protocoloTesteAnexado); $this->assertTrue($this->paginaDocumento->ehProcessoAnexado()); @@ -157,7 +162,6 @@ public function test_verificar_destino_processo_anexado() $this->validarDadosDocumento($listaDocumentosProcessoAnexado[1], self::$documentoTeste4, self::$destinatario); } - /** * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem * @@ -172,18 +176,29 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - + // Definição de dados de teste do processo principal self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente,'arquivo_pequeno_A.pdf'); + + // Selecionar banco do org2 para fazer inserção dos documentos + putenv("DATABASE_HOST=org2-database"); + + // Busca ID que Protocolo principal recebeu no org2 + $objProtocoloPrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + + //Incluir novos documentos relacionados + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloPrincipalOrg2DTO->getDblIdProtocolo()); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste6, $objProtocoloPrincipalOrg2DTO->getDblIdProtocolo()); + + + //Fim das operações no BD do org2 + putenv("DATABASE_HOST=org1-database"); // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Incluir novos documentos relacionados $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); - $this->cadastrarDocumentoExterno(self::$documentoTeste6); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -209,15 +224,16 @@ public function test_devolucao_processo_para_origem() public function test_verificar_devolucao_origem_processo_anexado() { $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); + $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -243,10 +259,8 @@ public function test_verificar_devolucao_origem_processo_anexado() public function test_verificar_devolucao_destino_processo_anexado() { $strProtocoloTeste = self::$protocoloTestePrincipal; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); + $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); $this->validarDadosProcesso( @@ -262,7 +276,7 @@ public function test_verificar_devolucao_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(5, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[3], self::$documentoTeste5, self::$destinatario); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[4], self::$documentoTeste6, self::$destinatario); diff --git a/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php b/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php index 5ebaa1cfc..2f79fb1a3 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group2 */ -class TramiteProcessoAnexadoTest extends CenarioBaseTestCase +class TramiteProcessoAnexadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,32 +36,37 @@ public function test_tramitar_processo_anexado_da_origem() // Definição de dados de teste do processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Definição de dados de teste do processo a ser anexado self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento1DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + $objDocumento2DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento3DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $objDocumento4DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + + // Preencher variaveis que serão usadas posteriormente nos testes + self::$documentoTeste1['ARQUIVO'] = str_pad($objDocumento1DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste2['ARQUIVO'] = str_pad($objDocumento2DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste3['ARQUIVO'] = str_pad($objDocumento3DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste4['ARQUIVO'] = str_pad($objDocumento4DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + // Realizar a anexação de processos + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste anexado e incluir documentos relacionados - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); - - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); - + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -71,9 +76,9 @@ public function test_tramitar_processo_anexado_da_origem() self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false ); + } - - + /** * Teste de verificação do correto envio do processo anexado no sistema remetente * @@ -94,10 +99,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -109,7 +113,7 @@ public function test_verificar_origem_processo_anexado() $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); $this->validarProcessosTramitados(self::$protocoloTestePrincipal, $orgaosDiferentes); } - + /** * Teste de verificação do correto recebimento do processo anexado no destinatário * @@ -127,7 +131,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -143,7 +147,7 @@ public function test_verificar_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(3, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->paginaProcesso->selecionarDocumento(self::$protocoloTesteAnexado); $this->assertTrue($this->paginaDocumento->ehProcessoAnexado()); diff --git a/tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php b/tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php new file mode 100755 index 000000000..aebc5bbaf --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php @@ -0,0 +1,294 @@ +execute("update infra_parametro set valor = ? where nome = ?", array(2, 'SEI_TAM_MB_DOC_EXTERNO')); + + } + + /** + * Volta tamanho de doc externo no ORG2 para default + */ + public static function tearDownAfterClass() : void { + + $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); + $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); + + } + + function setUp(): void + { + parent::setUp(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + /** + * Tramite para obter posteriormente processo com status cancelado + */ + public function test_tramite_contendo_documento_interno() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste1, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; + } + + + /** + * Troca ordenação de documento para ao tramitar obter status cancelado + * @depends test_tramite_contendo_documento_interno + */ + public function test_trocar_ordenacao_documento() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); + + // Definição de dados de teste + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloDTO->getDblIdProtocolo()); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); + + // Validação dos dados do processo principal + try { + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcesso)); + $this->validarDadosDocumento($listaDocumentosProcesso[0], self::$documentoTeste1, self::$remetente); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$remetente); + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada] + print_r($listaDocumentosProcesso); + } + + + $this->paginaProcesso->selecionarProcesso(); + $this->paginaProcesso->navegarParaOrdenarDocumentos(); + sleep(1); + $this->paginaProcesso->trocarOrdenacaoDocumentos(); + + // Validação dos dados do processo principal + try { + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcesso)); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste1, self::$remetente); + $this->validarDadosDocumento($listaDocumentosProcesso[0], self::$documentoTeste2, self::$remetente); + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada] + print_r($listaDocumentosProcesso); + } + sleep(1); + $this->sairSistema(); + + } + + /** + * Inclui processos ao bloco de tramite, excluir e adiciona novamente + * @depends test_trocar_ordenacao_documento + */ + public function test_criar_excluir_processos_em_bloco_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); + + // Definição de dados de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $arrProtocolos = array(); + // cancelado + $objProtocoloDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + $arrProtocolos[] = $objProtocoloDTO; + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + // sucesso + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + $arrProtocolos[] = $objProtocoloDTO; + + } + + // recusado + $documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_003.pdf'); + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste3, $objProtocoloDTO->getDblIdProtocolo()); + $arrProtocolos[] = $objProtocoloDTO; + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + + foreach ($arrProtocolos as $objProtocoloDTO) { + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + } + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + sleep(1); + + // Executa remoção de protocolos do bloco e verifica status + $this->paginaCadastrarProcessoEmBloco->btnSelecionarTodosProcessos(); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorExcluir(); + $qtdProcessoBloco = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + $this->assertEquals($qtdProcessoBloco, 0); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorFechar(); + sleep(1); + + $linhasDaTabela = $this->elements($this->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + foreach ($linhasDaTabela as $linha) { + $numOrdem = $linha->byXPath('./td[2]')->text(); + if ($numOrdem == $objBlocoDeTramiteDTO->getNumOrdem()) { + $status = $linha->byXPath('./td[3]')->text(); + $this->assertEquals($status, 'Aberto'); + $this->assertEquals($objBlocoDeTramiteDTO->getStrStaEstado(), 'A'); + break; + } + } + + // Adiciona novamente protocolos ao bloco + foreach ($arrProtocolos as $objProtocoloDTO) { + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + } + + $this->sairSistema(); + } + + /** + * Tramitar bloco externamente + * @depends test_criar_excluir_processos_em_bloco_externo + */ + public function test_tramite_bloco_externo() + { + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + // Tramitar Bloco + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + } + + + /** + * Verificar se o bloco foi enviado + * @depends test_tramite_bloco_externo + * @return void + */ + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + try { + $statusImg = $statusTd->byXPath(mb_convert_encoding(".//img[@title='Concluído']", 'UTF-8', 'ISO-8859-1')); + if ($statusImg){ + $totalConcluidos++; + } + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada + } + } + $this->assertEquals($totalConcluidos,self::$numQtyProcessos); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); + } + /** + * Verificar se é possivel excluir processos do bloco após tramite + * @depends test_verificar_envio_processo + * @return void + */ + public function test_verificar_possivel_exclusao_processo_bloco() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtdProcessoBloco = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->paginaCadastrarProcessoEmBloco->btnSelecionarTodosProcessos(); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorExcluir(); + $qtdProcessoBlocoPos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtdProcessoBloco,$qtdProcessoBlocoPos); + + sleep(2); + + $this->sairSistema(); + } + +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php b/tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php new file mode 100755 index 000000000..3e1e44bf1 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php @@ -0,0 +1,172 @@ +carregar(); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_documento_nao_assinado() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo(), false); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processos com documentos gerados e não assinados', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar mensagem de processo bloqueado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_bloqueado() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("update protocolo set sta_estado=? where id_protocolo=?", array(4, $objProtocoloDTO->getDblIdProtocolo())); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Prezado(a) usuário(a), o processo ' . $objProtocoloDTO->getStrProtocoloFormatado() . ' encontra-se bloqueado. Dessa forma, não foi possível realizar a sua inserção no bloco selecionado.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar a mensagem de processo aberto em mais de uma unidade ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_aberto_em_mais_de_uma_unidade() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso($objProtocoloDTO->getStrProtocoloFormatado()); + + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processo aberto em mais de uma unidade.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + $this->assertStringContainsString( + mb_convert_encoding('Processo ' . $objProtocoloDTO->getStrProtocoloFormatado() . ' está aberto na(s) unidade(s): ' . self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar a mensagem de processo sem documentos nao pode ser incluido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_sem_documento() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processo sem documentos', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php b/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php index aa8c96d79..f32641701 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_without_receiving */ -class TramiteProcessoComCancelamentoTest extends CenarioBaseTestCase +class TramiteProcessoComCancelamentoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -32,19 +32,12 @@ public function test_cancelamento_tramite_contendo_documento_interno() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false - ); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $this->paginaProcesso->cancelarTramitacaoExterna(); $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); + $mensagemEsperada = mb_convert_encoding("O trâmite externo do processo foi cancelado com sucesso!", 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); $this->assertFalse($this->paginaProcesso->processoBloqueado()); $this->assertTrue($this->paginaProcesso->processoAberto()); @@ -95,18 +88,12 @@ public function test_cancelamento_tramite_contendo_documento_externo() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_001.pdf'); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); - - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false - ); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $this->paginaProcesso->cancelarTramitacaoExterna(); $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); + $mensagemEsperada = mb_convert_encoding("O trâmite externo do processo foi cancelado com sucesso!", 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); $this->assertFalse($this->paginaProcesso->processoBloqueado()); $this->assertTrue($this->paginaProcesso->processoAberto()); diff --git a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php index 097b5295d..9b0848036 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoComDevolucaoAlteracaoURLTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoAlteracaoURLTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -58,7 +58,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -98,7 +98,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } @@ -136,6 +137,7 @@ public function test_tramitar_processo_da_origem_novo_url() self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$documentoTeste5 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + putenv("DATABASE_HOST=org1-database"); $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); $result=$bancoOrgaoA->query("SELECT texto FROM tarja_assinatura where sta_tarja_assinatura=? and sin_ativo=?", array("V","S")); @@ -154,7 +156,7 @@ public function test_tramitar_processo_da_origem_novo_url() $bancoOrgaoA->execute("update tarja_assinatura set texto=? where sta_tarja_assinatura=? and sin_ativo=?", array($strTarja,"V","S")); $documentos = array(self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } diff --git a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php index 4774100f4..d0335677a 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php @@ -10,7 +10,7 @@ * Execution Groups * @group execute_alone_group5 */ -class TramiteProcessoComDevolucaoAnexadoOutroTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoAnexadoOutroTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -48,7 +48,8 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -84,15 +85,14 @@ public function test_devolucao_processo_anexado_em_outro_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + // Selecionar banco do org2 para fazer inserção dos documentos + putenv("DATABASE_HOST=org2-database"); self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + // Busca ID que Protocolo principal recebeu no org2 + $objProtocoloAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); // Gerar dados de testes para representar o processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); @@ -100,14 +100,23 @@ public function test_devolucao_processo_anexado_em_outro_para_origem() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); // Cadastra processo principal, seus documentos e anexa processo recebido anteriormente - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + + // Cadastra e assina + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4,$objProtocoloPrincipalDTO->getDblIdProtocolo()); - $this->anexarProcesso(self::$protocoloTesteAnexado); + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre processo principal para tramitar + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -138,10 +147,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php index bcdf62d9c..7dd5d7fd4 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_alone_group5 */ -class TramiteProcessoComDevolucaoContendoOutroAnexadoTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoContendoOutroAnexadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -45,7 +45,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComvalidacaoNoRemetenteFixture(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); self::$protocoloTestePrincipal = self::$processoTestePrincipal["PROTOCOLO"]; } @@ -81,9 +81,7 @@ public function test_devolucao_processo_contendo_outro_anexado_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + putenv("DATABASE_HOST=org2-database"); // Gerar dados de testes para representar o processo principal self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); @@ -91,18 +89,23 @@ public function test_devolucao_processo_contendo_outro_anexado_para_origem() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); // Cadastra processo anexado, seus documentos e anexar ao processo principal recebido anteriormente - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTesteAnexado); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloAnexadoDTO->getDblIdProtocolo()); // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->anexarProcesso(self::$protocoloTesteAnexado); + $objProtocoloPrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTestePrincipal); - // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], @@ -133,10 +136,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoTest.php b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoTest.php index db71d4b6c..a1c428bc6 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessoComDevolucaoTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,7 +36,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -77,7 +77,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } diff --git a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php index 176c258ca..cd147622c 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php @@ -1,104 +1,106 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); - self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; - } - - - /** - * Teste de verificação do correto recebimento do processo no destinatário - * - * @group verificacao_recebimento - * @large - * - * @depends test_tramitar_processo_da_origem - * - * @return void - */ - public function test_verificar_destino_processo_para_devolucao() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); - } - - - /** - * Teste de trâmite externo de processo com devolução para a mesma unidade de origem - * - * @group envio - * @large - * - * @depends test_verificar_destino_processo_para_devolucao - * - * @return void - */ - public function test_devolucao_processo_para_origem() - { - // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - - self::$destinatario['NOME_UNIDADE'] = self::$destinatario['NOME_UNIDADE_SECUNDARIA']; - self::$destinatario['SIGLA_UNIDADE'] = self::$destinatario['SIGLA_UNIDADE_SECUNDARIA']; - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$destinatario['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; - - self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - - $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); - } - - - /** - * Teste de verificação do correto recebimento do processo no destinatário - * - * @group verificacao_recebimento - * @large - * - * @depends test_devolucao_processo_para_origem - * - * @return void - */ - public function test_verificar_processo_apos_devolucao() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2, self::$documentoTeste3, self::$documentoTeste4); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); - } -} +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + + $documentos = array(self::$documentoTeste1, self::$documentoTeste2); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; + } + + + /** + * Teste de verificação do correto recebimento do processo no destinatário + * + * @group verificacao_recebimento + * @large + * + * @depends test_tramitar_processo_da_origem + * + * @return void + */ + public function test_verificar_destino_processo_para_devolucao() + { + $documentos = array(self::$documentoTeste1, self::$documentoTeste2); + $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); + } + + + /** + * Teste de trâmite externo de processo com devolução para a mesma unidade de origem + * + * @group envio + * @large + * + * @depends test_verificar_destino_processo_para_devolucao + * + * @return void + */ + public function test_devolucao_processo_para_origem() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + self::$destinatario['NOME_UNIDADE'] = self::$destinatario['NOME_UNIDADE_SECUNDARIA']; + self::$destinatario['SIGLA_UNIDADE'] = self::$destinatario['SIGLA_UNIDADE_SECUNDARIA']; + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$destinatario['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; + + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + + $documentos = array(self::$documentoTeste3, self::$documentoTeste4); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + } + + + /** + * Teste de verificação do correto recebimento do processo no destinatário + * + * @group verificacao_recebimento + * @large + * + * @depends test_devolucao_processo_para_origem + * + * @return void + */ + public function test_verificar_processo_apos_devolucao() + { + $documentos = array(self::$documentoTeste1, self::$documentoTeste2, self::$documentoTeste3, self::$documentoTeste4); + $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); + } + +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php b/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php index a3266fab3..5690f39bd 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessoComDocumentoRestritoHipotesePadraoTest extends CenarioBaseTestCase +class TramiteProcessoComDocumentoRestritoHipotesePadraoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -30,26 +30,12 @@ public function test_tramitar_processo_com_documento_restrito_hipotese_nao_mapea self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Configuração de documento restrito - self::$documentoTeste["RESTRICAO"] = PaginaIncluirDocumento::STA_NIVEL_ACESSO_RESTRITO; + self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO_NAO_MAPEADO"]; - - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -74,10 +60,9 @@ public function test_verificar_origem_processo_com_documento_restrito_hipotese_n // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -118,7 +103,7 @@ public function test_verificar_destino_processo_com_documento_restrito_hipotese_ $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( diff --git a/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php b/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php index acf44053d..02e72901f 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php @@ -4,130 +4,158 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessoComDocumentoRestritoTest extends CenarioBaseTestCase +class TramiteProcessoComDocumentoRestritoTest extends FixtureCenarioBaseTestCase { - public static $remetente; - public static $destinatario; - public static $processoTeste; - public static $documentoTeste; - public static $protocoloTeste; - - /** - * Teste de trâmite externo de processo com documentos restritos - * - * @group envio - * @large - * - * @Depends CenarioBaseTestCase::setUpBeforeClass - * - * @return void - */ - public function test_tramitar_processo_com_documento_restrito() - { - // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // Configuração de documento restrito - self::$documentoTeste["RESTRICAO"] = PaginaIncluirDocumento::STA_NIVEL_ACESSO_RESTRITO; - self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO"]; - - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_com_documento_restrito - * - * @return void - */ - public function test_verificar_origem_processo_com_documento_restrito() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - - /** - * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo_com_documento_restrito - * - * @return void - */ - public function test_verificar_destino_processo_com_documento_restrito() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - - // 11 - Abrir protocolo na tela de controle de processos - $this->abrirProcesso(self::$protocoloTeste); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - - // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); - - // 13 - Verificar recibos de trâmite - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // 14 - Validar dados do documento - $this->assertTrue(count($listaDocumentos) == 1); - $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); - } + public static $remetente; + public static $destinatario; + public static $processoTeste; + public static $documentoTeste; + public static $protocoloTeste; + + function setUp(): void + { + parent::setUp(); + + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + /** + * Teste de trâmite externo de processo com documentos restritos + * + * @group envio + * @large + * + * @Depends CenarioBaseTestCase::setUpBeforeClass + * + * @return void + */ + public function test_tramitar_processo_com_documento_restrito() + { + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); // Cadastrar novo processo de teste + self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; // Configuração de documento restrito + self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO"]; // Configurar Hipotese legal + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); // Incluir Documentos no Processo + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * @large + * + * @depends test_tramitar_processo_com_documento_restrito + * + * @return void + */ + public function test_verificar_origem_processo_com_documento_restrito() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + // 6 - Verificar se situação atual do processo está como bloqueado + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + + // 8 - Validar histórico de trâmite do processo + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + + // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) + * + * @group verificacao_recebimento + * @large + * + * @depends test_verificar_origem_processo_com_documento_restrito + * + * @return void + */ + public function test_verificar_destino_processo_com_documento_restrito() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // 11 - Abrir protocolo na tela de controle de processos + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + self::$processoTeste['OBSERVACOES'], + array(self::$processoTeste['INTERESSADOS']) + ); + + // 13 - Verificar recibos de trâmite + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // 14 - Validar dados do documento + $this->assertTrue(count($listaDocumentos) == 1); + $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } } diff --git a/tests_sei4/funcional/tests/TramiteProcessoComHistoricoTest.php b/tests_sei4/funcional/tests/TramiteProcessoComHistoricoTest.php index 1a2f355b5..b5d8929d3 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComHistoricoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComHistoricoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteProcessoComHistoricoTest extends CenarioBaseTestCase +class TramiteProcessoComHistoricoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -23,7 +23,6 @@ class TramiteProcessoComHistoricoTest extends CenarioBaseTestCase public function test_tramitar_processo_da_origem() { - // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); @@ -32,7 +31,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -50,21 +49,20 @@ public function test_tramitar_processo_da_origem() public function test_verificar_destino_processo_para_devolucao() { - $localCertificado = self::$destinatario['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = self::$destinatario['SENHA_CERTIFICADO_DIGITAL']; $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); // Captura o IDT do processo - $idtEnviado=$bancoOrgaoA->query("SELECT tra.id_tramite FROM protocolo p + $idtEnviado = $bancoOrgaoA->query("SELECT tra.id_tramite FROM protocolo p inner join md_pen_processo_eletronico pen on p.id_protocolo=pen.id_procedimento inner join md_pen_tramite tra on pen.numero_registro=tra.numero_registro where protocolo_formatado=?",array(self::$protocoloTeste)); if (array_key_exists("id_tramite", $idtEnviado[0])) { $idtEnviado=$idtEnviado[0]["id_tramite"]; - }else{ + } else { $idtEnviado=$idtEnviado[0]["ID_TRAMITE"]; } @@ -75,11 +73,9 @@ public function test_verificar_destino_processo_para_devolucao() curl_setopt($curl_handler, CURLOPT_SSLCERT, $localCertificado); curl_setopt($curl_handler, CURLOPT_SSLCERTPASSWD, $senhaCertificado); - $saida= json_decode(curl_exec($curl_handler)); + $saida = json_decode(curl_exec($curl_handler)); curl_close($curl_handler); - - foreach($saida->propriedadesAdicionais as $propriedades){ switch($propriedades->chave){ @@ -110,25 +106,13 @@ public function test_verificar_destino_processo_para_devolucao() case "CLASSIFICACAO_Descricao_1": $this->assertEquals('RECEITA CORRENTE', substr($propriedades->valor,0,16)); - break; - + break; } } - - // usort($saida->processo->itensHistorico,function($a,$b){ - // return ($a->dataHoraOperacao < $b->dataHoraOperacao? -1: 1); - // }); $this->assertEquals(9, sizeof($saida->processo->itensHistorico) ); - - - - - } - - } diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php index a5031b01b..214e32b16 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -35,16 +35,18 @@ public function test_tramitar_processo_contendo_documento_besimple() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_corrompimento_besimplesoap.pdf'); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, null, PEN_WAIT_TIMEOUT_ARQUIVOS_GRANDES); @@ -72,10 +74,9 @@ public function test_verificar_origem_processo_contendo_documento_besimple() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -116,7 +117,7 @@ public function test_verificar_destino_processo_contendo_documento_besimple() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php index 0cd4130d3..4954a0c39 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php @@ -1,153 +1,153 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - // Definição de dados de teste do processo principal - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - //Tramitar internamento para liberação da funcionalidade de cancelar - $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], self::$processoTeste); - - $this->navegarParaCancelarDocumento(0); - $this->paginaCancelarDocumento->cancelar("Motivo de teste"); - - $processo=self::$processoTeste; - - $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); - - $idAnexo=$bancoOrgaoA->query("SELECT an.id_anexo FROM rel_protocolo_protocolo pp - inner join protocolo p on pp.id_protocolo_1=p.id_protocolo - inner join anexo an on an.id_protocolo=pp.id_protocolo_2 - where p.descricao=?",array($processo['DESCRICAO'])); - - if (array_key_exists("id_anexo", $idAnexo[0])) { - $id_Anexo=$idAnexo[0]["id_anexo"]; - }else{ - $id_Anexo=$idAnexo[0]["ID_ANEXO"]; - } - - $bancoOrgaoA->execute("delete from anexo where id_anexo=?",array($id_Anexo)); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_contendo_documento_cancelado - * - * @return void - */ - public function test_verificar_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação do correto recebimento do processo com documento cancelado no destinatário - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo - * - * @return void - */ - public function test_verificar_destino_processo() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - $strObservacoes, - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(1, count($listaDocumentosProcessoPrincipal)); - $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); - - } - -} +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Definição de dados de teste do processo principal + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + self::$protocoloTeste = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); + + //Tramitar internamento para liberação da funcionalidade de cancelar + $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], [ 'PROTOCOLO' => self::$protocoloTeste ]); + + $this->navegarParaCancelarDocumento(0); + $this->paginaCancelarDocumento->cancelar("Motivo de teste"); + + $processo=self::$processoTeste; + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + + $idAnexo = $bancoOrgaoA->query("SELECT an.id_anexo FROM rel_protocolo_protocolo pp + inner join protocolo p on pp.id_protocolo_1=p.id_protocolo + inner join anexo an on an.id_protocolo=pp.id_protocolo_2 + where p.descricao=?",array($processo['DESCRICAO'])); + + if (array_key_exists("id_anexo", $idAnexo[0])) { + $id_Anexo=$idAnexo[0]["id_anexo"]; + }else{ + $id_Anexo=$idAnexo[0]["ID_ANEXO"]; + } + + $bancoOrgaoA->execute("delete from anexo where id_anexo=?",array($id_Anexo)); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * @large + * + * @depends test_tramitar_processo_contendo_documento_cancelado + * + * @return void + */ + public function test_verificar_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo com documento cancelado no destinatário + * + * @group verificacao_recebimento + * @large + * + * @depends test_verificar_origem_processo + * + * @return void + */ + public function test_verificar_destino_processo() + { + $strProtocoloTeste = self::$protocoloTeste; + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); + + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + $strObservacoes, + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(1, count($listaDocumentosProcessoPrincipal)); + $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); + + } + +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php index 69cbcb045..7e9434aad 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoContendoDocumentoCanceladoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoCanceladoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,19 +40,17 @@ public function test_tramitar_processo_contendo_documento_cancelado() self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $objProtocoloTesteDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloTesteDTO->getStrProtocoloFormatado(); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, $objProtocoloTesteDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloTesteDTO->getDblIdProtocolo()); - // Cadastrar novo processo de teste e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Realiza o cancelamento de um documento interno do processo - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); //Tramitar internamento para liberação da funcionalidade de cancelar - $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], self::$processoTeste); + $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], [ 'PROTOCOLO' => self::$protocoloTeste ]); $this->navegarParaCancelarDocumento(1); $this->paginaCancelarDocumento->cancelar("Motivo de teste"); @@ -86,10 +84,9 @@ public function test_verificar_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -120,7 +117,7 @@ public function test_verificar_destino_processo() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -154,17 +151,19 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - + // Busca dados do protocolo no org2 + $objProtocoloTesteDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + // Incluir novos documentos relacionados - $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloTesteDTO->getDblIdProtocolo()); + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, @@ -195,10 +194,9 @@ public function test_verificar_devolucao_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php index 297b027bd..a307d83c1 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php @@ -2,9 +2,9 @@ /** * Execution Groups - * @group execute_alone_group5 + * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -34,7 +34,7 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$destinatario['NOME_UNIDADE'] = self::$remetente['NOME_UNIDADE_SECUNDARIA']; self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -52,10 +52,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php index 1b8aca228..f18aa0b99 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php @@ -5,7 +5,7 @@ * @group rodarseparado2 * @group execute_alone_group1 */ -class TramiteProcessoContendoDocumentoExternoParticionadoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoParticionadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -14,7 +14,7 @@ class TramiteProcessoContendoDocumentoExternoParticionadoTest extends CenarioBas public static $protocoloTeste; public static function setUpBeforeClass() :void { - + parent::setUpBeforeClass(); $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); $bancoOrgaoA->execute("update infra_parametro set valor = ? where nome = ?", array(70, 'SEI_TAM_MB_DOC_EXTERNO')); @@ -47,20 +47,27 @@ public function test_tramitar_processo_contendo_documento_externo_60mb() // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_060.pdf'); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); // Altera tamanho máximo permitido para permitir o envio de arquivo superior à 50MBs $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); try { $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(70, 'SEI_TAM_MB_DOC_EXTERNO')); - $this->cadastrarDocumentoExterno(self::$documentoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); } finally { $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); } + putenv("DATABASE_HOST=org1-database"); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], @@ -91,10 +98,10 @@ public function test_verificar_origem_processo_contendo_documento_externo_60mb() $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); + $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php index aa9e8a006..dd2bc2fbb 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoExternoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -26,24 +26,13 @@ class TramiteProcessoContendoDocumentoExternoTest extends CenarioBaseTestCase public function test_tramitar_processo_contendo_documento_externo() { // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -68,10 +57,9 @@ public function test_verificar_origem_processo_contendo_documento_externo() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -112,7 +100,7 @@ public function test_verificar_destino_processo_contendo_documento_externo() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php index 207f9c74d..5db274cb4 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -33,7 +33,7 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$destinatario['NOME_UNIDADE'] = self::$remetente['NOME_UNIDADE_SECUNDARIA']; self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -52,10 +52,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php index a6a71c581..fa510bf50 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteProcessoContendoDocumentoGeradoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoGeradoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -30,17 +30,19 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + // 1 - Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // 2 - Incluir Documentos no Processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // 3 - Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 4 - Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // 4 - Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // 5 - Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -70,10 +72,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -114,7 +115,7 @@ public function test_verificar_destino_processo_contendo_documento_gerado() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php index f9d8e5b1f..f89930efc 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoInternoExternoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoInternoExternoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -32,20 +32,23 @@ public function test_tramitar_processo_contendo_documento_interno_externo() self::$documentoInternoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoExternoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // 1 - Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // 2 - Incluir e assinar documentos no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoInternoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + // 3 - Incluir documento externo ao processo + $this->cadastrarDocumentoExternoFixture(self::$documentoExternoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 3 - Incluir e assinar documentos no processo - $this->cadastrarDocumentoInterno(self::$documentoInternoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // 4 - Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 4 - Incluir documento externo ao processo - $this->cadastrarDocumentoExterno(self::$documentoExternoTeste); + // 5 - Abrir processo + $this->abrirProcesso(self::$protocoloTeste); - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + // 6 - Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -70,27 +73,26 @@ public function test_verificar_origem_processo_contendo_documento_interno_extern $this->abrirProcesso(self::$protocoloTeste); - // 6 - Verificar se situação atual do processo está como bloqueado + // 7 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; }, PEN_WAIT_TIMEOUT); - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + // 8 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); $this->validarRecibosTramite($mensagemRecibo, true, true); - // 8 - Validar histórico de trâmite do processo + // 9 - Validar histórico de trâmite do processo $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + // 10 - Verificar se processo está na lista de Processos Tramitados Externamente $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); } @@ -117,7 +119,7 @@ public function test_verificar_destino_processo_contendo_documento_interno_exter $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php index 1d6e908db..eabd162b2 100644 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php @@ -32,7 +32,7 @@ * Execution Groups * @group exxecute_parallel */ -class TramiteProcessoContendoDocumentoMovidoDestinoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -47,6 +47,10 @@ class TramiteProcessoContendoDocumentoMovidoDestinoTest extends CenarioBaseTestC public static $documentoTeste5; public static $documentoTeste6; public static $documentoTeste7; + public static $objProtocoloTestePrincipalDTO; + public static $objProtocoloTestePrincipalOrg2DTO; + + /* Escopo da função: @@ -68,27 +72,30 @@ public function test_criar_processo_contendo_documentos_tramitar_remetente() self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - // acessar remetente (Órgão 1) - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); // 1-criar Processo Principal ($processoTestePrincipal) (Órgão 1) self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); + // $this->paginaBase->navegarParaControleProcesso(); + self::$objProtocoloTestePrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = self::$objProtocoloTestePrincipalDTO->getStrProtocoloFormatado(); // 2-criar Documento Externo (documentoTeste1) no Processo Principal self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); // 3-criar Documento Interno (documentoTeste2) no Processo Principal self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); // 4-criar Documento Interno (documentoTeste3) no Processo Principal self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste3); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + // acessar remetente (Órgão 1) + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTestePrincipal); // 5-tramitar Processo Principal para o Órgão 2 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -97,10 +104,9 @@ public function test_criar_processo_contendo_documentos_tramitar_remetente() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -146,9 +152,11 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); // 7-criar Processo Secundário ($processoTesteSecundario) (Órgão 2) + putenv("DATABASE_HOST=org2-database"); self::$processoTesteSecundario = $this->gerarDadosProcessoTeste(self::$remetente); - self::$protocoloTesteSecundario = $this->cadastrarProcesso(self::$processoTesteSecundario); - + $objProtocoloSecundarioDTO = $this->cadastrarProcessoFixture(self::$processoTesteSecundario); + self::$protocoloTesteSecundario = $objProtocoloSecundarioDTO->getStrProtocoloFormatado(); + // abrir Processo Principal $this->abrirProcesso(self::$protocoloTestePrincipal); @@ -166,15 +174,17 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( $this->paginaDocumento->navegarParaMoverDocumento(); $this->paginaMoverDocumento->moverDocumentoParaProcesso(self::$protocoloTesteSecundario, "Motivo de teste"); + // Consultar processo org-2 + self::$objProtocoloTestePrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); + // 10-criar documento externo (documentoTeste4) no Processo Principal self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste4, self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); // 11-criar documento interno (documentoTeste5) no Processo Principal self::$documentoTeste5 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste5); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste5,self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); + // 12-tramitar Processo Principal para o Órgão 1 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -182,10 +192,9 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -225,14 +234,16 @@ public function test_incluir_documento_tramitar_destinatario() // definir Órgão 1 como remetente e Órgão 2 como destinatário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); - // abrir Processo Principal - $this->abrirProcesso(self::$protocoloTestePrincipal); + self::$objProtocoloTestePrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); // 14-criar documento interno (documentoTeste6) no Processo Principal self::$documentoTeste6 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste6); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste6,self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + // abrir Processo Principal + $this->abrirProcesso(self::$protocoloTestePrincipal); // 15-tramitar Processo Principal para o Órgão 2 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -241,10 +252,9 @@ public function test_incluir_documento_tramitar_destinatario() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -284,11 +294,16 @@ public function test_incluir_documento_tramitar_remetente() // definir Órgão 1 como destinatário e Órgão 2 como remetente self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + + self::$objProtocoloTestePrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); // 17-criar documento interno (documentoTeste7) no Processo Principal self::$documentoTeste7 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste7); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste7, self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); + + // abrir Processo Principal + $this->abrirProcesso(self::$protocoloTestePrincipal); // 18-tramitar Processo Principal para o Órgão 1 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -297,10 +312,9 @@ public function test_incluir_documento_tramitar_remetente() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php index c9550dd81..ca147035c 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php @@ -9,241 +9,319 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessoContendoDocumentoMovidoSemAnexoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoSemAnexoTest extends FixtureCenarioBaseTestCase { - public static $remetente; - public static $destinatario; - public static $processoTeste; - public static $documentoTeste1; - public static $documentoTeste2; - public static $documentoTeste3; - public static $documentoTeste4; - public static $protocoloTeste; - - /** - * Teste inicial de trâmite de um processo contendo um documento movido - * - * @group envio - * - * @return void - */ - public function test_tramitar_processo_contendo_documento_movido_sem_anexo() - { - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - // Definição de dados de teste do processo principal - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Criar processo secundário para o qual o documento será movido - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); - - // Cadastrar novo processo de teste e incluir documentos a ser movido - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1, false); - $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_tramitar_processo_contendo_documento_movido_sem_anexo - * - * @return void - */ - public function test_verificar_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação do correto recebimento do processo com documento movido no destinatário - * - * @group verificacao_recebimento - * - * @depends test_verificar_origem_processo - * - * @return void - */ - public function test_verificar_destino_processo_com_documento_movido_sem_anexo() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - $strObservacoes, - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(2, count($listaDocumentosProcessoPrincipal)); - $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); - } - - - /** - * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem contendo - * mais dois documentos, sendo um deles movido - * - * @group envio - * - * @depends test_verificar_destino_processo_com_documento_movido_sem_anexo - * - * @return void - */ - public function test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo() - { - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - - // Criar processo secundário para o qual o novo documento será movido - $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); - - // Incluir novos documentos ao processo para ser movido - $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3, false); - $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo - * - * @return void - */ - public function test_verificar_devolucao_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação da correta devolução do processo no destinatário - * - * @group verificacao_recebimento - * - * @depends test_verificar_devolucao_origem_processo - * - * @return void - */ - public function test_verificar_devolucao_destino_processo_com_dois_documentos_movidos_sem_anexo() - { - $strProtocoloTeste = self::$protocoloTeste; - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - self::$processoTeste['OBSERVACOES'], - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(4, count($listaDocumentosProcesso)); - $this->validarDocumentoMovido($listaDocumentosProcesso[0]); - $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$destinatario); - $this->validarDocumentoCancelado($listaDocumentosProcesso[2]); - $this->validarDadosDocumento($listaDocumentosProcesso[3], self::$documentoTeste4, self::$destinatario); - } + public static $remetente; + public static $destinatario; + public static $processoTeste; + public static $documentoTeste1; + public static $documentoTeste2; + public static $documentoTeste3; + public static $documentoTeste4; + public static $protocoloTeste; + + /** + * @inheritdoc + * @return void + */ + function setUp(): void + { + parent::setUp(); + } + + /** + * Teste inicial de trâmite de um processo contendo um documento movido + * + * @group envio + * + * @return void + */ + public function test_tramitar_processo_contendo_documento_movido_sem_anexo() + { + + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Definição de dados de teste do processo principal + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Criar processo secundário para o qual o documento será movido + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Cadastrar novo processo de teste + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + // Incluir documentos a ser movido + $documentoMover = $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$protocoloTeste->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + // Navegar para mover documento + $nomeDocArvore = self::$documentoTeste1['TIPO_DOCUMENTO'] . ' 1 (' . str_pad($documentoMover->getDblIdDocumento(), 6, "0", STR_PAD_LEFT) . ')'; + $this->paginaProcesso->selecionarDocumento($nomeDocArvore); + $this->paginaDocumento->navegarParaMoverDocumento(); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); + + // Cadastramento de documento adicional + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$protocoloTeste->getDblIdProtocolo()); + $this->paginaBase->refresh(); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * + * @depends test_tramitar_processo_contendo_documento_movido_sem_anexo + * + * @return void + */ + public function test_verificar_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo com documento movido no destinatário + * + * @group verificacao_recebimento + * + * @depends test_verificar_origem_processo + * + * @return void + */ + public function test_verificar_destino_processo_com_documento_movido_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + $strObservacoes, + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcessoPrincipal)); + $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); + } + + /** + * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem contendo + * mais dois documentos, sendo um deles movido + * + * @group envio + * + * @depends test_verificar_destino_processo_com_documento_movido_sem_anexo + * + * @return void + */ + public function test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + // Mudar banco para cadastrar DTO + putenv("DATABASE_HOST=org2-database"); + + // Definição de dados de teste do processo principal + $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Consultar processo org-2 + $processoOrg2 = $this->consultarProcessoFixture($strProtocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + + // Criar processo secundário para o qual o documento será movido + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Incluir documentos a ser movido + $documentoMover = $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $processoOrg2->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + + // Navegar para mover documento + $nomeDocArvore = self::$documentoTeste1['TIPO_DOCUMENTO'] . ' 1 (' . str_pad($documentoMover->getDblIdDocumento(), 6, "0", STR_PAD_LEFT) . ')'; + $this->paginaProcesso->selecionarDocumento($nomeDocArvore); + $this->paginaDocumento->navegarParaMoverDocumento(); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); + + // Cadastramento de documento adicional + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $processoOrg2->getDblIdProtocolo()); + $this->paginaBase->refresh(); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * + * @depends test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo + * + * @return void + */ + public function test_verificar_devolucao_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação da correta devolução do processo no destinatário + * + * @group verificacao_recebimento + * + * @depends test_verificar_devolucao_origem_processo + * + * @return void + */ + public function test_verificar_devolucao_destino_processo_com_dois_documentos_movidos_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + self::$processoTeste['OBSERVACOES'], + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(4, count($listaDocumentosProcesso)); + $this->validarDocumentoMovido($listaDocumentosProcesso[0]); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$destinatario); + $this->validarDocumentoCancelado($listaDocumentosProcesso[2]); + $this->validarDadosDocumento($listaDocumentosProcesso[3], self::$documentoTeste4, self::$destinatario); + } + + /** + * @inheritDoc + */ + public static function tearDownAfterClass(): void + { + putenv("DATABASE_HOST=org1-database"); + parent::tearDownAfterClass(); + } } diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php index a36397824..3288324f2 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoMovidoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -41,22 +41,25 @@ public function test_tramitar_processo_contendo_documento_movido() self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + // Criar processo principal e processo secundário + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + + // Cadastrando documentos no processo principal + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$protocoloTeste->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$protocoloTeste->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Criar processo secundário para o qual o documento será movido - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); + $this->abrirProcesso(self::$protocoloTeste); - // Cadastrar novo processo de teste e incluir documentos a ser movido - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + // Movendo documento do processo principal para o processo secundário + $documentoParaMover = $this->paginaProcesso->listarDocumentos()[0]; + $this->paginaProcesso->selecionarDocumento($documentoParaMover); $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -87,10 +90,9 @@ public function test_verificar_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -121,7 +123,7 @@ public function test_verificar_destino_processo_com_documento_movido() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -161,21 +163,30 @@ public function test_devolucao_processo_para_origem_com_novo_documento_movido() $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + putenv("DATABASE_HOST=org2-database"); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Criar novo processo secundário na ORG 2 + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Busca dados do Protocolo principal no ORG 2 + $objProtocoloTesteDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); + // Criar novo documento externo no processo principal recebido na ORG 2" + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloTesteDTO->getDblIdProtocolo()); - // Incluir novos documentos ao processo para ser movido + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + + // Acessando novo documento externo e movendo-o ao novo processo secundario da ORG 2 + $listaDeDocumentos = $this->paginaProcesso->listarDocumentos(); + $documentoParaMover = $listaDeDocumentos[array_key_last($listaDeDocumentos)]; + $this->paginaProcesso->selecionarDocumento($documentoParaMover); $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Cadastrando novo documento interno no processo principal + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloTesteDTO->getDblIdProtocolo()); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -207,10 +218,9 @@ public function test_verificar_devolucao_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php index d8a30bad4..0df44fcfc 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoVariosDocumentosTest extends CenarioBaseTestCase +class TramiteProcessoContendoVariosDocumentosTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -39,7 +39,7 @@ public function test_tramitar_processo_contendo_varios_documentos() shuffle(self::$documentosTeste); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentosTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentosTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -67,10 +67,9 @@ public function test_verificar_origem_processo_contendo_varios_documentos() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php b/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php index 7be02c1ae..0ed2eb27a 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoDocumentoNaoMapeadoDestinoTest extends CenarioBaseTestCase +class TramiteProcessoDocumentoNaoMapeadoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -45,22 +45,8 @@ public function test_tramitar_processo_contendo_documento_nao_mapeado_destino() self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$destinatario['TIPO_DOCUMENTO_NAO_MAPEADO']; - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // 4 - Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -83,10 +69,9 @@ public function test_verificar_origem_processo_contendo_documento_nao_mapeado_de // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php b/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php index becf11da1..70bf78aa1 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends CenarioBaseTestCase +class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -46,21 +46,19 @@ public function test_tramitar_processo_documento_interno_nao_mapeado() self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$remetente['TIPO_DOCUMENTO_NAO_MAPEADO']; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); $tipoDocumento = mb_convert_encoding(self::$documentoTeste["TIPO_DOCUMENTO"], "ISO-8859-1"); $mensagemEsperada = sprintf("Não existe mapeamento de envio para %s no documento", $tipoDocumento); - $this->expectExceptionMessage(utf8_encode($mensagemEsperada)); + $this->expectExceptionMessage(mb_convert_encoding($mensagemEsperada, 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente(self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); } @@ -84,18 +82,19 @@ public function test_tramitar_processo_documento_externo_nao_mapeado() self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$remetente['TIPO_DOCUMENTO_NAO_MAPEADO']; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); $tipoDocumento = mb_convert_encoding(self::$documentoTeste["TIPO_DOCUMENTO"], "ISO-8859-1"); $mensagemEsperada = sprintf("Não existe mapeamento de envio para %s no documento", $tipoDocumento); - $this->expectExceptionMessage(utf8_encode($mensagemEsperada)); + $this->expectExceptionMessage(mb_convert_encoding($mensagemEsperada, 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente(self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); } } diff --git a/tests_sei4/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php b/tests_sei4/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php index 837aad643..dc1418b3b 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoExtensaoNaoMapeadoDestinoTest extends CenarioBaseTestCase +class TramiteProcessoExtensaoNaoMapeadoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -31,12 +31,8 @@ public function test_tramitar_processo_contendo_extensao_nao_mapeada_destino() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_extensao_nao_permitida.docx'); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -60,10 +56,9 @@ public function test_verificar_origem_processo_contendo_extensao_nao_mapeado_des // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php b/tests_sei4/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php index 5f60313b0..52d24a8aa 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoRestritoHipotesePadraoTest extends CenarioBaseTestCase +class TramiteProcessoRestritoHipotesePadraoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -35,17 +35,18 @@ public function test_tramitar_processo_restrito_hipotese_nao_mapeada() self::$processoTeste["RESTRICAO"] = PaginaIniciarProcesso::STA_NIVEL_ACESSO_RESTRITO; self::$processoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO_NAO_MAPEADO"]; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -75,10 +76,9 @@ public function test_verificar_origem_processo_restrito_hipotese_nao_mapeada() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -119,7 +119,7 @@ public function test_verificar_destino_processo_restrito_hipotese_nao_mapeada() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -127,7 +127,7 @@ public function test_verificar_destino_processo_restrito_hipotese_nao_mapeada() self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS']), - self::$destinatario["HIPOTESE_RESTRICAO_PADRAO"]); + self::$destinatario["HIPOTESE_RESTRICAO_NAO_MAPEADO"]); // 13 - Verificar recibos de trâmite $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); diff --git a/tests_sei4/funcional/tests/TramiteProcessoRestritoTest.php b/tests_sei4/funcional/tests/TramiteProcessoRestritoTest.php index ca494deb4..d025d067d 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoRestritoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoRestritoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoRestritoTest extends CenarioBaseTestCase +class TramiteProcessoRestritoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,13 +40,14 @@ public function test_tramitar_processo_restrito() $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -76,10 +77,9 @@ public function test_verificar_origem_processo_restrito() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -120,7 +120,7 @@ public function test_verificar_destino_processo_restrito() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei4/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php b/tests_sei4/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php new file mode 100755 index 000000000..01eb1d373 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php @@ -0,0 +1,62 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste, false); + $this->atualizarProcessoFixture($objProtocoloDTO, ['DESCRICAO' => '']); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Descrição do processo '.$objProtocoloDTO->getStrProtocoloFormatado().' não informado.'), + $mensagem + ); + $this->assertStringContainsString( + utf8_encode('Interessados do processo '.$objProtocoloDTO->getStrProtocoloFormatado().' não informados.'), + $mensagem + ); + } +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php b/tests_sei4/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php index 522ff5d84..1096c867d 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoTamanhoAcimaLimiteDestinoTest extends CenarioBaseTestCase +class TramiteProcessoTamanhoAcimaLimiteDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -22,7 +22,6 @@ class TramiteProcessoTamanhoAcimaLimiteDestinoTest extends CenarioBaseTestCase */ public static function setUpBeforeClass() :void { - parent::setUpBeforeClass(); // Redução de limite máximo de tamanho de documento externo $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(2, 'SEI_TAM_MB_DOC_EXTERNO')); @@ -54,10 +53,17 @@ public function test_tramitar_processo_tamanho_acima_limite_destino() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_003.pdf'); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); + + $this->abrirProcesso(self::$protocoloTeste); + $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -84,10 +90,9 @@ public function test_verificar_origem_processo_tamanho_acima_limite_destino() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php b/tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php similarity index 70% rename from tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php rename to tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php index 2c558cfa8..ab0589345 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php +++ b/tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php @@ -1,6 +1,6 @@ gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $paginaProcesso = new PaginaProcesso($this); - $this->assertStringNotContainsString(utf8_encode("externa para SEGES TESTE SEM PAI - - RE CGPRO"), $paginaProcesso->informacao()); + $this->assertStringNotContainsString(mb_convert_encoding("externa para SEGES TESTE SEM PAI - - RE CGPRO", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); } } diff --git a/tests_sei4/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php b/tests_sei4/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php new file mode 100755 index 000000000..13c7ba1c0 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php @@ -0,0 +1,78 @@ +execute("update md_pen_bloco set sta_estado=? where sta_estado=?", array('C', 'A')); + + // Limpa os mapeamentos de unidade + $bancoOrgaoA->execute("delete from md_pen_unidade", array()); + } + + public static function tearDownAfterClass() :void { + + // Recadastra os mapeamentos da unidade + putenv("DATABASE_HOST=org1-database"); + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $penMapUnidadesFixture->carregar([ + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, + 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, + ]); + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); + } + + /** + * Teste de trâmite externo de processo com restrição de acesso + * + * @group envio + * @large + * + * + * @return void + */ + public function test_tramitar_processo_restrito() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); + + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Incluir Processo no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + } +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php b/tests_sei4/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php new file mode 100755 index 000000000..eaca7e579 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php @@ -0,0 +1,57 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); + + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste("Envio Externo de Processo")); + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Incluir Processo no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + $this->assertTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Remover Processo do Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + } +} diff --git a/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php b/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php index 7db3e345d..4911f0d39 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoValidacaoEnvioTest extends CenarioBaseTestCase +class TramiteProcessoValidacaoEnvioTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,13 +40,16 @@ public function test_tramitar_processo_sem_documentos() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + // Cadastrar novo processo de teste + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $this->abrirProcesso(self::$protocoloTeste); - $this->expectExceptionMessage(utf8_encode("Não é possível tramitar um processo sem documentos")); + $this->expectExceptionMessage(mb_convert_encoding("Não é possível tramitar um processo sem documentos", 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], diff --git a/tests_sei4/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php b/tests_sei4/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php index b5362de4a..f25744119 100755 --- a/tests_sei4/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessosComDevolucaoAmbosAnexadosTest extends CenarioBaseTestCase +class TramiteProcessosComDevolucaoAmbosAnexadosTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -44,7 +44,7 @@ public function test_tramitar_processos_separados_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); self::$protocoloTestePrincipal = self::$processoTestePrincipal["PROTOCOLO"]; $this->sairSistema(); @@ -55,7 +55,7 @@ public function test_tramitar_processos_separados_da_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -96,21 +96,30 @@ public function test_devolucao_processo_anexado_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + $objProtocoloAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); + $objProtocoloPrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + // Cadastra documento Externo ao processo anexado + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + // Anexa processo ao processo principal + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + // Cadastra documento Externo ao processo principal + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste6, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); - $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->anexarProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste6); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -143,10 +152,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php b/tests_sei4/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php index 460e9f7bf..419099288 100755 --- a/tests_sei4/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php @@ -15,7 +15,7 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessosComDevolucoesEAnexacoesTest extends CenarioBaseTestCase +class TramiteProcessosComDevolucoesEAnexacoesTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -31,6 +31,11 @@ class TramiteProcessosComDevolucoesEAnexacoesTest extends CenarioBaseTestCase public static $documentoTeste8; public static $protocoloTestePrincipal; public static $protocoloTesteAnexado; + public static $objProtocoloTestePrincipalDTO; + public static $objProtocoloTesteAnexadoDTO; + + + /** * Teste inicial de trâmite de processo apartado para o órgão B @@ -53,7 +58,7 @@ public function test_tramitar_processo_simples_para_orgaoB() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -89,13 +94,16 @@ public function test_devolucao_processo_simples_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + + putenv("DATABASE_HOST=org1-database"); } @@ -137,20 +145,23 @@ public function test_tramitar_processo_anexado_para_orgaoB() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste6 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $objProtocoloTestePrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = $objProtocoloTestePrincipalDTO->getStrProtocoloFormatado(); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $objProtocoloTesteAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); + $this->anexarProcessoFixture($objProtocoloTestePrincipalDTO->getDblIdProtocolo(), $objProtocoloTesteAnexadoDTO->getDblIdProtocolo()); - $this->cadastrarDocumentoInterno(self::$documentoTeste6); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste6, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTestePrincipal); + // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTestePrincipal, @@ -180,10 +191,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -215,7 +225,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -260,6 +270,7 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste7 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); @@ -268,11 +279,16 @@ public function test_devolucao_processo_para_origem() // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Consulta no Org2/B o DTO do Protocolo Principal + $objProtocoloTestePrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + // Incluir novos documentos relacionados + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste7, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste8, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste7); - $this->cadastrarDocumentoInterno(self::$documentoTeste8); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -303,10 +319,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php index 5ada5706b..ade7952e3 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteRecebimentoDocumentoAnexadoTest extends CenarioBaseTestCase +class TramiteRecebimentoDocumentoAnexadoTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -62,7 +62,7 @@ public function test_envio_processo_com_documento_anexado() $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -88,7 +88,7 @@ public function test_devolucao_processo_com_documento_anexado_para_origem() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); $arrDocumentosSegundoEnvio = array(self::$documentoTeste4, self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $arrDocumentosSegundoEnvio, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $arrDocumentosSegundoEnvio, self::$remetente, self::$destinatario); } /** @@ -116,7 +116,6 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) , 'local_cert' => $localCertificado , 'passphrase' => $senhaCertificado , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE , 'connection_timeout' => $connectionTimeout , CURLOPT_TIMEOUT => $connectionTimeout , CURLOPT_CONNECTTIMEOUT => $connectionTimeout @@ -128,7 +127,6 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) ); return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - } @@ -224,7 +222,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], @@ -272,13 +270,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 026e45bab..99d2c2473 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteRecebimentoDocumentoAvulsoTest extends CenarioBaseTestCase +class TramiteRecebimentoDocumentoAvulsoTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -27,7 +27,7 @@ class TramiteRecebimentoDocumentoAvulsoTest extends CenarioBaseTestCase /** * Teste preparatório (setUp()). Definição de contextos e instanciação da api de integração - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void @@ -39,6 +39,7 @@ public function setUp(): void // Carregar contexto de testes e dados sobre certificado digital self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Instanciar objeto de teste utilizando o BeSimpleSoap $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; @@ -60,7 +61,7 @@ public function test_recebimento_documento_avulso() $novoTramite = $this->enviarMetadadosDocumento($this->servicoPEN, self::$remetente, self::$destinatario, $metadadosDocumentoTeste); $this->enviarComponentesDigitaisDoTramite($this->servicoPEN, $novoTramite, $metadadosDocumentoTeste); $reciboTramite = $this->receberReciboEnvio($this->servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -87,7 +88,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste2, self::$documentoTeste3); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org1-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } /** @@ -125,8 +127,9 @@ public function test_devolucao_processo_para_origem_documento_avulso() self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + putenv("DATABASE_HOST=org2-database"); $documentos = array(self::$documentoTeste4, self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } /** @@ -267,12 +270,12 @@ private function construirMetadadosDocumentoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index 9160f0d96..768308bb9 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteRecebimentoInteressadosDuplicadosTest extends CenarioBaseTestCase +class TramiteRecebimentoInteressadosDuplicadosTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -23,9 +23,9 @@ class TramiteRecebimentoInteressadosDuplicadosTest extends CenarioBaseTestCase * Teste de envio de metadados do processo contendo interessados duplicados * * Inicialmente são enviados 2 interessados com o mesmo nome - * + * * @group envio - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void @@ -53,7 +53,7 @@ public function test_envio_processo_com_documento_anexado() $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verifica recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -73,7 +73,6 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) , 'local_cert' => $localCertificado , 'passphrase' => $senhaCertificado , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE , 'connection_timeout' => $connectionTimeout , CURLOPT_TIMEOUT => $connectionTimeout , CURLOPT_CONNECTTIMEOUT => $connectionTimeout @@ -85,7 +84,6 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) ); return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - } @@ -175,8 +173,8 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest } $arrInteressados = array_map(function($item) { - return array('nome' => utf8_encode($item)); - }, + return array('nome' => mb_convert_encoding($item, 'UTF-8', 'ISO-8859-1')); + }, $processoTeste['INTERESSADOS']); return array( @@ -187,7 +185,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => $arrInteressados, 'documento' => $metadadosDocumentos, @@ -233,13 +231,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php b/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php index d506307f3..f7b286f6b 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteRecebimentoMultiplosComponentesDigitais extends CenarioBaseTestCase +class TramiteRecebimentoMultiplosComponentesDigitais extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -72,7 +72,6 @@ public function test_recebimento_processo_com_3_componentes_digitais() $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -94,14 +93,14 @@ public function test_devolucao_processo_para_origem() // Configuração do dados para teste do cenário $remetente = self::$contextoOrgaoA; $destinatario = self::$contextoOrgaoB; + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; $documentoTeste1 = $this->gerarDadosDocumentoInternoTeste($remetente); $documentoTeste2 = $this->gerarDadosDocumentoExternoTeste($remetente); $novosDocumentos = array($documentoTeste1, $documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); - $totalDdocumentos = array(self::$documentoZip, $documentoTeste1, $documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $totalDdocumentos, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + } /** @@ -123,7 +122,7 @@ public function test_recebimento_documento_avulso_com_2_componentes_digitais() $novoTramite = $this->enviarMetadadosDocumento(self::$servicoPEN, $remetente, $destinatario, $metadadosDocumentoTeste); $this->enviarComponentesDigitaisDoDocumentoAvulso(self::$servicoPEN, $novoTramite, $metadadosDocumentoTeste); $reciboTramite = $this->receberReciboEnvioDocumentoAvulso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -296,12 +295,12 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -352,13 +351,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -391,7 +390,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php b/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php index bbd299c90..ae5e514ac 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php @@ -2,7 +2,7 @@ use \utilphp\util; -class TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes extends CenarioBaseTestCase +class TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -68,7 +68,6 @@ public function test_recebimento_processo_com_3_componentes_digitais() $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -93,8 +92,10 @@ public function test_devolucao_processo_para_origem_1() $documentoTesteInterno = $this->gerarDadosDocumentoInternoTeste($remetente); + putenv("DATABASE_HOST=org2-database"); $novosDocumentos = array($documentoTesteInterno); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + self::$totalDocumentos = array_merge(self::$totalDocumentos, array($documentoTesteInterno)); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, self::$totalDocumentos, $destinatario); } @@ -111,14 +112,14 @@ public function test_devolucao_processo_para_destino_2() // Configuração do dados para teste do cenário $remetente = self::$contextoOrgaoA; $destinatario = array_slice(self::$contextoOrgaoB, 0); - $destinatario['SIGLA_UNIDADE'] = $destinatario['SIGLA_UNIDADE_SECUNDARIA']; - $destinatario['NOME_UNIDADE'] = $destinatario['NOME_UNIDADE_SECUNDARIA']; - $destinatario['SIGLA_UNIDADE_HIERARQUIA'] = $destinatario['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; $documentoTesteExterno = $this->gerarDadosDocumentoExternoTeste($remetente, self::CONTEUDO_DOCUMENTO_A); + putenv("DATABASE_HOST=org1-database"); $novosDocumentos = array($documentoTesteExterno); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + self::$totalDocumentos = array_merge(self::$totalDocumentos, array($documentoTesteExterno)); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, self::$totalDocumentos, $destinatario); } @@ -288,12 +289,12 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -344,13 +345,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -383,7 +384,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], diff --git a/tests_sei41/funcional/assets/config/supervisor.ini b/tests_sei41/funcional/assets/config/supervisor.ini index 354114e69..5515e0aa6 100755 --- a/tests_sei41/funcional/assets/config/supervisor.ini +++ b/tests_sei41/funcional/assets/config/supervisor.ini @@ -19,7 +19,25 @@ stderr_logfile=/var/log/supervisor/sei_processar_pendencias.log-err stderr_events_enabled=true [program:monitoramento_tarefas_pen] -command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoTarefasPEN.php --monitorar --segundo-plano +command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php --monitorar --segundo-plano +directory=/opt/sei/web +numprocs=1 +user=apache +autostart=true +autorestart=true +startsecs=5 +startretries=1000 +log_stdout=true +log_stderr=true +logfile_maxbytes=10MB +logfile_backups=50 +logfile=/var/log/supervisor/sei_monitorar_pendencias.log +stdout_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-out +stderr_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-err +stderr_events_enabled=true + +[program:monitoramento_tarefas_pen] +command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php --monitorar --segundo-plano directory=/opt/sei/web numprocs=1 user=apache diff --git a/tests_sei41/funcional/bootstrap.php b/tests_sei41/funcional/bootstrap.php index 59f798da1..159d03b50 100755 --- a/tests_sei41/funcional/bootstrap.php +++ b/tests_sei41/funcional/bootstrap.php @@ -2,6 +2,16 @@ require_once __DIR__ . '/vendor/autoload.php'; +require_once __DIR__ . '/sei/src/sei/web/SEI.php'; + +define("DIR_SEI_WEB", __DIR__ . '/sei/src/sei/web/'); +define("DIR_TEST", __DIR__ ); +define("DIR_PROJECT", __DIR__ . '/..' ); +define("DIR_INFRA", __DIR__ . '/../src/infra/infra_php' ); + +error_reporting(E_ERROR); +restore_error_handler(); + //Classes utilitárias para manipulação dos dados do SEI require_once __DIR__ . '/src/utils/DatabaseUtils.php'; require_once __DIR__ . '/src/utils/ParameterUtils.php'; @@ -25,6 +35,8 @@ require_once __DIR__ . '/src/paginas/PaginaCancelarDocumento.php'; require_once __DIR__ . '/src/paginas/PaginaMoverDocumento.php'; require_once __DIR__ . '/src/paginas/PaginaTramitarProcessoEmLote.php'; +require_once __DIR__ . '/src/paginas/PaginaCadastroMapEnvioCompDigitais.php'; require_once __DIR__ . '/src/paginas/PaginaEnvioParcialListar.php'; require_once __DIR__ . '/tests/CenarioBaseTestCase.php'; +require_once __DIR__ . '/tests/FixtureCenarioBaseTestCase.php'; \ No newline at end of file diff --git a/tests_sei41/funcional/composer.json b/tests_sei41/funcional/composer.json index ee2f2e658..311ec3e96 100755 --- a/tests_sei41/funcional/composer.json +++ b/tests_sei41/funcional/composer.json @@ -6,11 +6,18 @@ }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": [ + "src/", + "sei/modpen/" + ] }, + "autoload-dev": { + "psr-4": { + "Tests\\": "sei/" + } + }, + "require-dev": { "phpunit/phpunit": "8.*", "phpunit/php-code-coverage": "*", diff --git a/tests_sei41/funcional/docker-compose.yml b/tests_sei41/funcional/docker-compose.yml index faf26fa00..bdd44ccb9 100755 --- a/tests_sei41/funcional/docker-compose.yml +++ b/tests_sei41/funcional/docker-compose.yml @@ -51,9 +51,19 @@ services: - ${SEI_PATH}/sei:/opt/sei - ${SEI_PATH}/sip:/opt/sip - ${SEI_PATH}/infra:/opt/infra - - ./assets/config:/opt/sei/config/mod-pen - .:/tests + - ${SEI_PATH}/../tests:/tests/sei + - ${SEI_PATH}/../src:/tests/sei/src + - ./src/fixtures:/tests/sei/modpen/fixtures + - ../../src/dto:/tests/sei/modpen/dto + - ../../src/bd:/tests/sei/modpen/bd + - ./assets/config:/opt/sei/config/mod-pen - /tmp:/tmp + - /tmp/sei_arquivos_1:/var/sei/arquivos/${ORG1_DATABASE_HOST} + - /tmp/sei_arquivos_2:/var/sei/arquivos/${ORG2_DATABASE_HOST} + - ./assets/config/ConfiguracaoSEI.php:/tests/sei/src/sei/config/ConfiguracaoSEI.php:ro + - ../../src:/tests/sei/src/sei/web/modulos/pen + - ./assets/config:/tests/sei/src/sei/config/mod-pen environment: - XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003 start_with_request=0 - XDEBUG_SESSION=default @@ -66,7 +76,16 @@ services: - ORG1_CERTIFICADO_SENHA=${ORG1_CERTIFICADO_SENHA} - ORG2_CERTIFICADO=${ORG2_CERTIFICADO} - ORG2_CERTIFICADO_SENHA=${ORG2_CERTIFICADO_SENHA} - + - DATABASE_IMAGE=${ORG1_DATABASE_IMAGE} + - DATABASE_TYPE=${ORG1_DATABASE_TYPE} + - DATABASE_HOST=${ORG1_DATABASE_HOST} + - DATABASE_PORT=${ORG1_DATABASE_GUEST_PORT} + - SEI_CHAVE_ACESSO=${ORG1_APP_SEI_CHAVE_ACESSO} + - SEI_DATABASE_NAME=${SEI_DATABASE_NAME} + - SIP_CHAVE_ACESSO=${ORG1_APP_SIP_CHAVE_ACESSO} + - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} + - SIP_DATABASE_USER=${SIP_DATABASE_USER} + - SIP_DATABASE_PASSWORD=${SIP_DATABASE_PASSWORD} extra_hosts: - "host.docker.internal:host-gateway" links: @@ -98,7 +117,6 @@ services: - ORG1_CERTIFICADO_SENHA=${ORG1_CERTIFICADO_SENHA} - ORG2_CERTIFICADO=${ORG2_CERTIFICADO} - ORG2_CERTIFICADO_SENHA=${ORG2_CERTIFICADO_SENHA} - extra_hosts: - "host.docker.internal:host-gateway" command: "true" @@ -130,6 +148,7 @@ services: - ../../src/scripts:/opt/sip/scripts/mod-pen - ../../src/bin:/opt/sei/bin/mod-pen - ../../src:/opt/sei/web/modulos/pen + - /tmp/sei_arquivos_1:/var/sei/arquivos environment: - LANG=pt_BR.ISO-8859-1 - HOST_URL=http://${ORG1_HOSTNAME}:${ORG1_PORT} @@ -144,7 +163,6 @@ services: - DATABASE_HOST=${ORG1_DATABASE_HOST} - DATABASE_PORT=${ORG1_DATABASE_GUEST_PORT} - CONTEXTO_ORGAO_A_DB_SEI_DSN=${CONTEXTO_ORGAO_A_DB_SEI_DSN} - - SEI_CHAVE_ACESSO=${ORG1_APP_SEI_CHAVE_ACESSO} - SEI_DATABASE_NAME=${SEI_DATABASE_NAME} - SEI_DATABASE_USER=${SEI_DATABASE_USER} @@ -153,7 +171,6 @@ services: - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} - SIP_DATABASE_USER=${SIP_DATABASE_USER} - SIP_DATABASE_PASSWORD=${SIP_DATABASE_PASSWORD} - extra_hosts: - "host.docker.internal:host-gateway" links: @@ -188,6 +205,7 @@ services: - ../../src:/opt/sei/web/modulos/pen - ./assets/config/ConfiguracaoSEI.php:/opt/sei/config/ConfiguracaoSEI.php:ro - ./assets/config/ConfiguracaoSip.php:/opt/sip/config/ConfiguracaoSip.php:ro + - /tmp/sei_arquivos_2:/var/sei/arquivos environment: - LANG=pt_BR.ISO-8859-1 - HOST_URL=http://${ORG2_HOSTNAME}:${ORG2_PORT} @@ -202,7 +220,6 @@ services: - DATABASE_HOST=${ORG2_DATABASE_HOST} - DATABASE_PORT=${ORG2_DATABASE_GUEST_PORT} - CONTEXTO_ORGAO_B_DB_SEI_DSN=${CONTEXTO_ORGAO_B_DB_SEI_DSN} - - SEI_CHAVE_ACESSO=${ORG2_APP_SEI_CHAVE_ACESSO} - SEI_DATABASE_NAME=${SEI_DATABASE_NAME} - SEI_DATABASE_USER=${SEI_DATABASE_USER} @@ -211,10 +228,9 @@ services: - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} - SIP_DATABASE_USER=${SIP_DATABASE_USER} - SIP_DATABASE_PASSWORD=${SIP_DATABASE_PASSWORD} - extra_hosts: - "host.docker.internal:host-gateway" links: - org2-memcached:memcached - smtp:smtp - - org2-database:${ORG2_DATABASE_HOST} + - org2-database:${ORG2_DATABASE_HOST} \ No newline at end of file diff --git a/tests_sei41/funcional/env_postgresql b/tests_sei41/funcional/env_postgresql index 052469bc5..9a4c694cd 100644 --- a/tests_sei41/funcional/env_postgresql +++ b/tests_sei41/funcional/env_postgresql @@ -25,7 +25,7 @@ ORG1_CERTIFICADO_SENHA=XXXXXXXXXXXXXX ##### BANCO DE DADOS DO ÓRGÃO 1 ##### # Configurações do banco de dados POSTGRESQL do ÓRGÃO 1 -ORG1_DATABASE_IMAGE=processoeletronico/vagrant_sei4_postgresql +ORG1_DATABASE_IMAGE=processoeletronico/vagrant_super41_postgresql ORG1_DATABASE_HOST=org1-database ORG1_DATABASE_TYPE=PostgreSql ORG1_DATABASE_GUEST_PORT=5432 @@ -45,7 +45,7 @@ ORG2_CERTIFICADO=/opt/sei/config/mod-pen/certificado_org2.pem ORG2_CERTIFICADO_SENHA=XXXXXXXXXXXXXX # Configurações do banco de dados POSTGRESQL do ÓRGÃO 2 -ORG2_DATABASE_IMAGE=processoeletronico/vagrant_sei4_postgresql +ORG2_DATABASE_IMAGE=processoeletronico/vagrant_super41_postgresql ORG2_DATABASE_HOST=org2-database ORG2_DATABASE_TYPE=PostgreSql ORG2_DATABASE_GUEST_PORT=5432 diff --git a/tests_sei41/funcional/src/fixtures/BlocoDeTramiteFixture.php b/tests_sei41/funcional/src/fixtures/BlocoDeTramiteFixture.php new file mode 100644 index 000000000..4b37d6633 --- /dev/null +++ b/tests_sei41/funcional/src/fixtures/BlocoDeTramiteFixture.php @@ -0,0 +1,79 @@ +pegarProximaOrdem($dados['IdUnidade'] ?: 110000001); + + $objBlocoDeTramiteDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objBlocoDeTramiteDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objBlocoDeTramiteDTO->setStrDescricao($dados['Descricao'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrIdxBloco($dados['IdxBloco'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrStaTipo($dados['IdxBloco'] ?: 'I'); + $objBlocoDeTramiteDTO->setStrStaEstado($dados['IdxBloco'] ?: 'A'); + $objBlocoDeTramiteDTO->setNumOrdem($ordem); + + $objBlocoDeTramiteDB = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteDB->cadastrar($objBlocoDeTramiteDTO); + + $objUnidadeDTO = $this->consultarUnidadeRelacionada($objBlocoDeTramiteDTO); + $objBlocoDeTramiteDTO->setStrSiglaUnidade($objUnidadeDTO->getStrSigla()); + + return $objBlocoDeTramiteDTO; + } + + protected function consultarUnidadeRelacionada(TramiteEmBlocoDTO $objBlocoDeTramiteDB) + { + $objUnidadeDTO = new \UnidadeDTO(); + $objUnidadeDTO->setNumIdUnidade($objBlocoDeTramiteDB->getNumIdUnidade()); + $objUnidadeDTO->retTodos(); + + $objUnidadeBD = new \UnidadeBD($this->inicializarObjInfraIBanco()); + return $objUnidadeBD->consultar($objUnidadeDTO); + } + + public function excluir($id) + { + $dto = new \TramiteEmBlocoDTO(); + $dto->setNumId($id); + $dto->retNumId(); + + $objBD = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $objBD->excluir($dto); + } + + private function pegarProximaOrdem($unidade) + { + $tramiteEmBlocoDTO = new \TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumIdUnidade($unidade); + $tramiteEmBlocoDTO->setOrdNumOrdem(\InfraDTO::$TIPO_ORDENACAO_DESC); + $tramiteEmBlocoDTO->retNumOrdem(); + $tramiteEmBlocoDTO->setNumMaxRegistrosRetorno(1); + + $objBD = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $tramiteEmBlocoDTO = $objBD->consultar($tramiteEmBlocoDTO); + + if ($tramiteEmBlocoDTO == null) { + $ordem = 1; + } else { + $ordem = $tramiteEmBlocoDTO->getNumOrdem() + 1; + } + + return $ordem; + } +} diff --git a/tests_sei41/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php b/tests_sei41/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php new file mode 100644 index 000000000..a569f1b95 --- /dev/null +++ b/tests_sei41/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php @@ -0,0 +1,85 @@ +objBlocoDeTramiteProtocoloDTO = new \PenBlocoProcessoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: '100000001'); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: '110000001'); + $dthRegistro = date('d/m/Y H:i:s'); + $this->objBlocoDeTramiteProtocoloDTO->setDthRegistro($dados['DthRegistro'] ?: $dthRegistro); + $this->objBlocoDeTramiteProtocoloDTO->setDthAtualizado($dados['DthAtualizado'] ?: $dthRegistro); + + // atualização 3.7.0 + $this->objBlocoDeTramiteProtocoloDTO->setNumIdAndamento($dados['IdAndamento'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setStrUnidadeDestino($dados['UnidadeDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeDestino($dados['IdUnidadeDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdAtividade($dados['IdAtividade'] ?: null); + + $this->objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioOrigem($dados['IdRepositorioOrigem'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioDestino($dados['IdRepositorioDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setDthEnvio($dados['Envio'] ?: $dthRegistro); + + $this->objBlocoDeTramiteProtocoloDTO->setStrRepositorioDestino($dados['RepositorioDestino'] ?: null); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + $objBlocoDeTramiteProtocoloBD->cadastrar($this->objBlocoDeTramiteProtocoloDTO); + + return $this->objBlocoDeTramiteProtocoloDTO; + } + + protected function listar($dados = []) + { + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo']); + $this->objBlocoDeTramiteProtocoloDTO->retTodos(); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + return $objBlocoDeTramiteProtocoloBD->listar($this->objBlocoDeTramiteProtocoloDTO); + } + + protected function alterar($dados = []) + { + + $objBlocoDeTramiteProtocoloDTO = $this->listar($dados)[0]; + + $objBlocoDeTramiteProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdBloco()); + $objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: $objBlocoDeTramiteProtocoloDTO->getNumSequencia()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUsuario()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidade()); + $dthRegistro = date('d/m/Y H:i:s'); + $objBlocoDeTramiteProtocoloDTO->setDthRegistro($dados['DthRegistro'] ?: $objBlocoDeTramiteProtocoloDTO->getDthRegistro()); + $objBlocoDeTramiteProtocoloDTO->setDthAtualizado($dados['DthAtualizado'] ?: $dthRegistro); + + $objBlocoDeTramiteProtocoloDTO->setNumIdAndamento($dados['IdAndamento'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdAndamento()); + $objBlocoDeTramiteProtocoloDTO->setStrUnidadeDestino($dados['UnidadeDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getStrUnidadeDestino()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidadeOrigem()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeDestino($dados['IdUnidadeDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidadeDestino()); + $objBlocoDeTramiteProtocoloDTO->setNumIdAtividade($dados['IdAtividade'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdAtividade()); + + $objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioOrigem($dados['IdRepositorioOrigem'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdRepositorioOrigem()); + $objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioDestino($dados['IdRepositorioDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdRepositorioDestino()); + $objBlocoDeTramiteProtocoloDTO->setDthEnvio($dados['Envio'] ?: $objBlocoDeTramiteProtocoloDTO->getDthEnvio()); + + $objBlocoDeTramiteProtocoloDTO->setStrRepositorioDestino($dados['RepositorioDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getStrRepositorioDestino()); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + return $objBlocoDeTramiteProtocoloBD->alterar($objBlocoDeTramiteProtocoloDTO); + } + +} diff --git a/tests_sei41/funcional/src/fixtures/FixtureBase.php b/tests_sei41/funcional/src/fixtures/FixtureBase.php new file mode 100644 index 000000000..7a0811c2b --- /dev/null +++ b/tests_sei41/funcional/src/fixtures/FixtureBase.php @@ -0,0 +1,96 @@ +cadastrar($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function carregar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->cadastrarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + public function carregarVarios($dados = null, $quantidade = 1){ + $resultado = []; + for ($i=0; $i < $quantidade; $i++) { + $resultado[] = $this->carregar($dados); + } + + return $resultado; + } + + public function carregarVariados($dados){ + $resultado = []; + foreach ($dados as $dado) { + $resultado[] = $this->carregar($dado); + } + + return $resultado; + } + + protected function listarInternoControlado($parametros){ + $dto = $this->listar($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function buscar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->listarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + protected function removerInternoControlado($parametros){ + $dto = $this->excluir($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function remover($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->removerInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + public function atualizarInternoControlado($parametros){ + $dto = $this->alterar($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function atualizar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->atualizarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } +} diff --git a/tests_sei41/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei41/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php index bbd5c017f..0eb1436c5 100644 --- a/tests_sei41/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php +++ b/tests_sei41/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -1,65 +1,78 @@ objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $this->dthRegistro = \InfraData::getStrDataAtual(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $tiposProcessos = $this->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; + $objPenMapTipoProcedimentoDTO = $this->consultar($dados); + if ($objPenMapTipoProcedimentoDTO) { + return $objPenMapTipoProcedimentoDTO; } - - public function deletar($dados = []): void + + $this->objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setStrNomeTipoProcesso($dados['NomeProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?: 110000001)); + $this->objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SinAtivo'] ?: 'S')); + $this->objPenMapTipoProcedimentoDTO->setDthRegistro(\InfraData::getStrDataAtual()); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->cadastrar($this->objPenMapTipoProcedimentoDTO); + } + + public function consultar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?: 110000001)); + $objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SinAtivo'] ?: 'S')); + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); + } - foreach ($tiposProcessos as $tipoProcesso) { - $bancoOrgaoA->execute( - "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", - array($tipoProcesso[0]) - ); - } + public function listar($dados = []) + { + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + if ($dados['IdProcedimento']) { + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + } + if ($dados['IdUnidade']) { + $objPenMapTipoProcedimentoDTO->setNumIdUnidade($dados['IdUnidade']); } + if ($dados['SinAtivo']) { + $objPenMapTipoProcedimentoDTO->setStrAtivo($dados['SinAtivo']); + } + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); + } - public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + public function excluir($dados = []) { - $tiposProcessos = array(); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($dados['Id']); - $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; - } -} + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/src/fixtures/PenMapEnvioParcialFixture.php b/tests_sei41/funcional/src/fixtures/PenMapEnvioParcialFixture.php new file mode 100644 index 000000000..0e6172cf3 --- /dev/null +++ b/tests_sei41/funcional/src/fixtures/PenMapEnvioParcialFixture.php @@ -0,0 +1,58 @@ +objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + $objMapEnvioParcialDTO = $this->consultar($dados); + if ($objMapEnvioParcialDTO) { + return $objMapEnvioParcialDTO; + } + + $this->objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); + $this->objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); + $this->objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); + $this->objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); + + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + $objMapEnvioParcialDB->cadastrar($this->objMapEnvioParcialDTO); + + return $this->objMapEnvioParcialDTO; + } + + public function consultar($dados = []) + { + $objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + $objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); + $objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); + $objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); + $objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); + $objMapEnvioParcialDTO->retTodos(); + + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + return $objMapEnvioParcialDB->consultar($objMapEnvioParcialDTO); + } + + public function excluir($dados = []) + { + $this->$objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + $this->$objMapEnvioParcialDTO->setDblId($dados['Id']); + + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + $objMapEnvioParcialDB->excluir($this->$objMapEnvioParcialDTO); + } +} diff --git a/tests_sei41/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei41/funcional/src/fixtures/PenMapUnidadesFixture.php index 1300aae12..ea698cb2d 100644 --- a/tests_sei41/funcional/src/fixtures/PenMapUnidadesFixture.php +++ b/tests_sei41/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -3,89 +3,46 @@ /** * Responsável por cadastrar novo mapeamento de unidades caso não exista */ -class PenMapUnidadesFixture +class PenMapUnidadesFixture extends \FixtureBase { - private static $bancoOrgaoA; - private static $dados; + protected $objPenUnidadeDTO; - /** - * @param string $contexto - * @param array $dados - */ - public function __construct(string $contexto, array $dados) + public function __construct() { - self::$bancoOrgaoA = new DatabaseUtils($contexto); - self::$dados = $dados; - } + $this->objPenUnidadeDTO = new \PenUnidadeDTO(); + } - /** - * Consulta mapeamento de unidade - * Se existe atualiza sigla e nome - * Se não existe cadastra um novo - * - * @return void - */ - public function gravar(): void + protected function inicializarObjInfraIBanco() { - $penUnidade = $this->consultar(); - if (!empty($penUnidade)) { - $this->atualizar(); - } else { - $this->cadastrar(); - } - } + return \BancoSEI::getInstance(); + } - /** - * Consultar mapeamento de unidade - * - * @return array|null - */ - public function consultar() + public function cadastrar($dados = []) { - 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']) - ); + $objPenUnidadeDTO = $this->consultar($dados); + if ($objPenUnidadeDTO) { + return $objPenUnidadeDTO; } - /** - * 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']) - ); - } + $this->objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $this->objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $this->objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); - /** - * Atualizar mapeamento de unidade - * - * @return void - */ - public function atualizar(): void + $objPenUnidadeBD = new \PenUnidadeBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeBD->cadastrar($this->objPenUnidadeDTO); + } + + public function consultar($dados = []) { - 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']) - ); - } + $objPenUnidadeDTO = new \PenUnidadeDTO(); + $objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); + $objPenUnidadeDTO->retTodos(); - /** - * 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']) - ); - } -} + $objPenUnidadeBD = new \PenUnidadeBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeBD->consultar($objPenUnidadeDTO); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php b/tests_sei41/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php new file mode 100644 index 000000000..087328f64 --- /dev/null +++ b/tests_sei41/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php @@ -0,0 +1,61 @@ +objPenUnidadeRestricaoDTO = new \PenUnidadeRestricaoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + public function cadastrar($dados = []) + { + $objPenUnidadeRestricaoDTO = $this->consultar($dados); + if ($objPenUnidadeRestricaoDTO) { + return $objPenUnidadeRestricaoDTO; + } + + $this->objPenUnidadeRestricaoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($dados['IdUnidadeRH']); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRestricao($dados['IdUnidadeRestricao']); + $this->objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRHRestricao($dados['IdUnidadeRHRestricao']); + $this->objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->cadastrar($this->objPenUnidadeRestricaoDTO); + } + + public function consultar($dados = []) + { + $objPenUnidadeRestricaoDTO = new \PenUnidadeRestricaoDTO(); + + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + $objPenUnidadeRestricaoDTO->retTodos(); + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->consultar($objPenUnidadeRestricaoDTO); + } + + public function excluir($dados = []) + { + + $objPenUnidadeRestricaoDTO = $this->consultar($dados); + if (!$objPenUnidadeRestricaoDTO) { + return false; + } + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->excluir($objPenUnidadeRestricaoDTO); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei41/funcional/src/fixtures/PenOrgaoExternoFixture.php index 5191cb637..474b0b83f 100644 --- a/tests_sei41/funcional/src/fixtures/PenOrgaoExternoFixture.php +++ b/tests_sei41/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -1,43 +1,63 @@ objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $penMapUnidadesFixture = new PenMapUnidadesFixture(self::$contexto, $dados); - $penMapUnidadesFixture->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; + $this->objPenOrgaoExternoDTO = $this->consultar($dados); + if ($this->objPenOrgaoExternoDTO) { + return $this->objPenOrgaoExternoDTO; } - public function deletar(int $id): void + $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $this->objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $this->objPenOrgaoExternoDTO->setStrOrgaoOrigem($dados['NomeOrigem']); + $this->objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($dados['IdRepositorio']); + $this->objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($dados['RepositorioEstruturas']); + + $this->objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $this->objPenOrgaoExternoDTO->setStrOrgaoDestino($dados['Nome']); + + $this->objPenOrgaoExternoDTO->setDthRegistro($dados['DataRegistro'] ?: \InfraData::getStrDataAtual()); + $this->objPenOrgaoExternoDTO->setStrAtivo($dados['SinAtivo'] ?: 'S'); + $this->objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + $this->objPenOrgaoExternoDTO = $objPenOrgaoExternoBD->cadastrar($this->objPenOrgaoExternoDTO); + + return $this->objPenOrgaoExternoDTO; + } + + public function consultar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); - } -} + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objPenOrgaoExternoDTO->retTodos(); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + return $objPenOrgaoExternoBD->consultar($objPenOrgaoExternoDTO); + } + + public function excluir($dados = []) + { + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($dados['Id']); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + return $objPenOrgaoExternoBD->excluir($objPenOrgaoExternoDTO); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/src/fixtures/TipoProcessoPadraoFixture.php b/tests_sei41/funcional/src/fixtures/TipoProcessoPadraoFixture.php new file mode 100644 index 000000000..dad75f16f --- /dev/null +++ b/tests_sei41/funcional/src/fixtures/TipoProcessoPadraoFixture.php @@ -0,0 +1,30 @@ +objPenParametroDTO = new \PenParametroDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + public function cadastrar($dados = []) + { + $objPenParametroDTO = new \PenParametroDTO(); + $objPenParametroDTO->setStrNome($dados['Nome']); + + $objPenParametroBD = new \PenParametroBD($this->inicializarObjInfraIBanco()); + if($objPenParametroBD->contar($objPenParametroDTO) > 0) { + $objPenParametroDTO->setStrValor($dados['Valor']); + $objPenParametroBD->alterar($objPenParametroDTO); + } + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaAnexarProcesso.php b/tests_sei41/funcional/src/paginas/PaginaAnexarProcesso.php index 7e1516bfa..183a933d7 100755 --- a/tests_sei41/funcional/src/paginas/PaginaAnexarProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaAnexarProcesso.php @@ -1,35 +1,35 @@ -test->byId('txtProtocolo'); - - if(isset($protocolo)){ - $protocoloInput->value($protocolo); - $this->test->byId('btnPesquisar')->click(); - } - - return $protocoloInput->value(); - } - - public function anexar() - { - $anexarButton = $this->test->byId('sbmAnexar'); - $anexarButton->click(); - $this->alertTextAndClose(); - } - - - public function anexarProcesso($protocolo) - { - $this->protocolo($protocolo); - $this->anexar(); - } -} +test->byId('txtProtocolo'); + + if(isset($protocolo)){ + $protocoloInput->value($protocolo); + $this->test->byId('btnPesquisar')->click(); + } + + return $protocoloInput->value(); + } + + public function anexar() + { + $anexarButton = $this->test->byId('sbmAnexar'); + $anexarButton->click(); + $this->alertTextAndClose(); + } + + + public function anexarProcesso($protocolo) + { + $this->protocolo($protocolo); + $this->anexar(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaAssinaturaDocumento.php b/tests_sei41/funcional/src/paginas/PaginaAssinaturaDocumento.php index 2a2facffd..cd3de4a1d 100755 --- a/tests_sei41/funcional/src/paginas/PaginaAssinaturaDocumento.php +++ b/tests_sei41/funcional/src/paginas/PaginaAssinaturaDocumento.php @@ -1,67 +1,67 @@ -test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("txtUsuario"); - - if(isset($strAssinante)){ - $input->value($strAssinante); - $this->test->waitUntil(function($testCase) { - $nomeAssinante = $testCase->byId("txtUsuario")->value(); - $testCase->byLinkText($nomeAssinante)->click(); - return true; - }, 8000); - } - - return $input->value(); - } - - public function senha($value) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("pwdSenha"); - return $input->value($value); - } - - public function selecionarOrgaoAssinante($strOrgaoAssinante) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("selOrgao"); - $this->test->select($input)->selectOptionByLabel($strOrgaoAssinante); - return $this->test->select($input)->selectedLabel(); - } - - public function selecionarCargoAssinante($strCargoAssinante) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("selCargoFuncao"); - $this->test->select($input)->selectOptionByLabel($strCargoAssinante); - return $this->test->select($input)->selectedLabel(); - } - - public function assinarComLoginSenha($pwdSenha) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("pwdSenha"); - $input->value($pwdSenha); - $this->test->keys(Keys::ENTER); - } - -} +test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("txtUsuario"); + + if(isset($strAssinante)){ + $input->value($strAssinante); + $this->test->waitUntil(function($testCase) { + $nomeAssinante = $testCase->byId("txtUsuario")->value(); + $testCase->byLinkText($nomeAssinante)->click(); + return true; + }, 8000); + } + + return $input->value(); + } + + public function senha($value) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("pwdSenha"); + return $input->value($value); + } + + public function selecionarOrgaoAssinante($strOrgaoAssinante) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("selOrgao"); + $this->test->select($input)->selectOptionByLabel($strOrgaoAssinante); + return $this->test->select($input)->selectedLabel(); + } + + public function selecionarCargoAssinante($strCargoAssinante) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("selCargoFuncao"); + $this->test->select($input)->selectOptionByLabel($strCargoAssinante); + return $this->test->select($input)->selectedLabel(); + } + + public function assinarComLoginSenha($pwdSenha) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("pwdSenha"); + $input->value($pwdSenha); + $this->test->keys(Keys::ENTER); + } + +} diff --git a/tests_sei41/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_sei41/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php new file mode 100644 index 000000000..c808508ee --- /dev/null +++ b/tests_sei41/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -0,0 +1,253 @@ +test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Blocos de Trâmite Externo', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='md_pen_tramita_em_bloco']")->click(); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem) + { + $this->selectRepositorio($estrutura); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @return string + */ + private function selectRepositorio($siglaRepositorio) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->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'); + $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')->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(); + } + + public function novoBlocoDeTramite() + { + $this->test->byId("bntNovo")->click(); + } + + + public function criarNovoBloco() + { + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } + + public function editarBlocoDeTramite($descricao = null) + { + $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); + + if ($descricao != null) { + $this->test->byId('txtDescricao')->clear(); + $this->test->byId('txtDescricao')->value($descricao); + } + } + + public function selecionarExcluirBloco() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + public function buscarQuantidadeProcessosRecusados() + { + $linhasDaTabelaRecusadas = $this->test->elements($this->test->using('xpath')->value("//img[@title='Recusado']")); + return count($linhasDaTabelaRecusadas); + } + + public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) + { + // Preencher parâmetros do trâmite + $this->selectRepositorio($repositorio); + $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); + $this->btnEnviar(); + + if ($callbackEnvio == null) { + $mensagemAlerta = null; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if ($mensagemAlerta) { + throw new Exception($mensagemAlerta); + } + } + + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + + if (isset($mensagemAlerta)) { + throw new Exception($mensagemAlerta); + } + + $callbackEnvio = $callbackEnvio ?: function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Trâmite externo do processo finalizado com sucesso!', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + }; + + try { + $this->test->waitUntil($callbackEnvio, $timeout); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + sleep(1); + } + + public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) + { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + + $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + } + + public function retornarTextoColunaDaTabelaDeBlocos() + { + $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); + $terceiraColuna = $tabela->byXPath('./td[3]'); + + return $terceiraColuna->text(); + } + + public function retornarQuantidadeDeProcessosNoBloco() + { + // Localiza todas as linhas da tabela com o XPath + $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + // Obtém o número de linhas + return count($linhasDaTabela); + } + + + public function bntTramitarBloco() + { + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } + + public function bntVisualizarProcessos() + { + $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); + } + + public function btnSelecionarTodosProcessos() + { + $this->test->byXPath("//*[@id='imgInfraCheck']")->click(); + } + + public function btnComandoSuperiorExcluir() + { + $this->test->byXPath('//*[@id="divInfraBarraComandosSuperior"]/button[@value="Excluir"]')->click(); + $this->test->acceptAlert(); + } + + public function btnComandoSuperiorFechar() + { + $this->test->byXPath('//*[@id="divInfraBarraComandosSuperior"]/button[@value="Fechar"]')->click(); + } + + public function btnSalvar() + { + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } + + public function btnEnviar() + { + $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); + $buttonElement->click(); + } + +} \ No newline at end of file diff --git a/tests_sei41/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php b/tests_sei41/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php index 0b711688c..78385e129 100644 --- a/tests_sei41/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php +++ b/tests_sei41/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php @@ -13,20 +13,20 @@ class PaginaCadastroMapEnvioCompDigitais extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } /** * Clicar no botão novo * * @return void */ - public function novo() + public function novo() { - $this->test->byId("btnNovo")->click(); - } + $this->test->byId("btnNovo")->click(); + } /** * Selecionar repositório @@ -36,11 +36,11 @@ public function novo() * @param string $unidade * @return void */ - public function setarParametros($estrutura, $unidade) + public function setarParametros($estrutura, $unidade) { - $this->selectRepositorio($estrutura); - $this->selectUnidade($unidade); - } + $this->selectRepositorio($estrutura); + $this->selectUnidade($unidade); + } /** * Seleciona repositório por sigla @@ -48,17 +48,17 @@ public function setarParametros($estrutura, $unidade) * @param string $siglaRepositorio * @return string */ - private function selectRepositorio($siglaRepositorio) + private function selectRepositorio($siglaRepositorio) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } - - return $this->test->byId('selRepositorioEstruturas')->value(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas')->value(); + } + /** * Seleciona unidade por nome * @@ -66,92 +66,93 @@ private function selectRepositorio($siglaRepositorio) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $hierarquia = null) + private function selectUnidade($nomeUnidade, $hierarquia = null) { - $this->unidadeInput = $this->test->byId('txtUnidade'); - $this->unidadeInput->clear(); - $this->unidadeInput->value($nomeUnidade); - $this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($hierarquia) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->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(); - } + $this->unidadeInput = $this->test->byId('txtUnidade'); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->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(); + } /** * Clicar no botão salvar * * @return void */ - public function salvar() + public function salvar() { - $this->test->byId("btnSalvar")->click(); - } + $this->test->byId("btnSalvar")->click(); + } /** * Seleciona botão editar da primeira linha de tabela * * @return void */ - public function editar() + public function editar() { - $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); + } /** * Exluir mapeamentos existentes * * @return void */ - public function excluirMapeamentosExistentes() + public function excluirMapeamentosExistentes() { - try{ - $lnkInfraCheck=$this->test->byXPath('//*[@id="lnkInfraCheck"]'); - $lnkInfraCheck->click(); - $this->excluirSelecionados(); - sleep(1); - $mensagem = $this->buscarMensagemAlerta(); - $this->test->assertStringContainsString( - utf8_encode('Mapeamento excluído com sucesso.'), - $mensagem - ); - } catch (Exception $e) { - } + try{ + $lnkInfraCheck=$this->test->byXPath('//*[@id="lnkInfraCheck"]'); + $lnkInfraCheck->click(); + $this->excluirSelecionados(); + sleep(1); + $mensagem = $this->buscarMensagemAlerta(); + $this->test->assertStringContainsString( + mb_convert_encoding('Mapeamento excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } catch (Exception $e) { } + } /** * Selecionar todos os resultados * * @return void */ - public function selecionarTodos() + public function selecionarTodos() { - $this->test->byXPath('//*[@id="lnkInfraCheck"]')->click(); - } + $this->test->byXPath('//*[@id="lnkInfraCheck"]')->click(); + } /** * Excluir selecionados * * @return void */ - public function excluirSelecionados() + public function excluirSelecionados() { - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } /** * Selecionar primeira checkbox de exclusão @@ -160,12 +161,12 @@ public function excluirSelecionados() * * @return void */ - public function selecionarExcluir() + public function selecionarExcluir() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } /** * Lispar campo de pesquisa @@ -175,23 +176,23 @@ public function selecionarExcluir() * @param string $textoPesquisa * @return void */ - public function selecionarPesquisa($textoPesquisa) + public function selecionarPesquisa($textoPesquisa) { - $this->test->byId('txtNomeEstrutura')->clear(); - $this->test->byId('txtNomeEstrutura')->value($textoPesquisa); - $this->test->byId("btnPesquisar")->click(); - } + $this->test->byId('txtNomeEstrutura')->clear(); + $this->test->byId('txtNomeEstrutura')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } /** * Selecionar todos os intens para impressão * * @return void */ - public function selecionarImprimir() + public function selecionarImprimir() { - $this->test->byId("lnkInfraCheck")->click(); - // $this->test->byId("btnImprimir")->click(); - } + $this->test->byId("lnkInfraCheck")->click(); + // $this->test->byId("btnImprimir")->click(); + } /** * Buscar item de tabela por nome @@ -199,26 +200,26 @@ public function selecionarImprimir() * @param string $nome * @return string|null */ - public function buscarNome($nome) + 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; - } + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; } + } /** * Buscar mensagem de alerta da página * * @return string */ - public function buscarMensagemAlerta() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } } \ No newline at end of file diff --git a/tests_sei41/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei41/funcional/src/paginas/PaginaCadastroOrgaoExterno.php index e3a880d51..d33cc9da2 100644 --- a/tests_sei41/funcional/src/paginas/PaginaCadastroOrgaoExterno.php +++ b/tests_sei41/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -9,28 +9,28 @@ class PaginaCadastroOrgaoExterno extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarCadastroOrgaoExterno() + public function navegarCadastroOrgaoExterno() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Unidades')); - $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1')); + $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) + 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 - } + $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 @@ -39,17 +39,17 @@ public function setarParametros($estrutura, $origem, $destino) * @param string $origemDestino * @return string */ - private function selectRepositorio($siglaRepositorio, $origemDestino) + private function selectRepositorio($siglaRepositorio, $origemDestino) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $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(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + /** * Seleciona unidade por nome * @@ -58,30 +58,31 @@ private function selectRepositorio($siglaRepositorio, $origemDestino) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + 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; - } + $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); + 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(); - } + return $this->unidadeInput->value(); + } /** * Seleciona unidade por nome @@ -91,50 +92,51 @@ private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) * @param ?string $hierarquia * @return string */ - private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + 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; - } + $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); + 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(); - } + return $this->unidadeInput->value(); + } /** * Seleciona botão novo da página * * @return void */ - public function novoMapOrgao() + public function novoMapOrgao() { - $this->test->byId("btnNovo")->click(); - } + $this->test->byId("btnNovo")->click(); + } /** * Seleciona botão editar da primeira linha de tabela * * @return void */ - public function editarMapOrgao() + public function editarMapOrgao() { - $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } /** * Selecionar primeira checkbox de exclusão @@ -143,37 +145,37 @@ public function editarMapOrgao() * * @return void */ - public function selecionarExcluirMapOrgao() + public function selecionarExcluirMapOrgao() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $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() + public function salvar() { - $this->test->byId("btnSalvar")->click(); - } + $this->test->byId("btnSalvar")->click(); + } - public function abrirSelecaoDeArquivoParaImportacao() + 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; - }); - } + $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 @@ -181,17 +183,17 @@ public function abrirSelecaoDeArquivoParaImportacao() * @param string $origem * @return string|null */ - public function buscarOrgaoOrigem($origem) + 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; - } + 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 @@ -199,28 +201,28 @@ public function buscarOrgaoOrigem($origem) * @param string $origem * @return string|null */ - public function buscarOrgaoDestino($destino) + 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; - } + 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() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } /** * Lispar campo de pesquisa @@ -230,12 +232,12 @@ public function buscarMensagemAlerta() * @param string $textoPesquisa * @return void */ - public function selecionarPesquisa($textoPesquisa) + public function selecionarPesquisa($textoPesquisa) { - $this->test->byId('txtSiglaOrigem')->clear(); - $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); - $this->test->byId("btnPesquisar")->click(); - } + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } /** * Buscar item de tabela por nome @@ -243,15 +245,15 @@ public function selecionarPesquisa($textoPesquisa) * @param string $nome * @return string|null */ - public function buscarNome($nome) + 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; - } + 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_sei41/funcional/src/paginas/PaginaCancelarDocumento.php b/tests_sei41/funcional/src/paginas/PaginaCancelarDocumento.php index 60371be5a..f992b5a7e 100755 --- a/tests_sei41/funcional/src/paginas/PaginaCancelarDocumento.php +++ b/tests_sei41/funcional/src/paginas/PaginaCancelarDocumento.php @@ -1,33 +1,33 @@ -motivoCancelamento($motivoCancelamento); - $this->salvar(); - } - - private function motivoCancelamento($value) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $input = $this->test->byId("txaMotivo"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - private function salvar() - { - $this->test->byId("sbmSalvar")->click(); - } -} +motivoCancelamento($motivoCancelamento); + $this->salvar(); + } + + private function motivoCancelamento($value) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $input = $this->test->byId("txaMotivo"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + private function salvar() + { + $this->test->byId("sbmSalvar")->click(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaConsultarAndamentos.php b/tests_sei41/funcional/src/paginas/PaginaConsultarAndamentos.php index d07be6823..b34caf2ae 100755 --- a/tests_sei41/funcional/src/paginas/PaginaConsultarAndamentos.php +++ b/tests_sei41/funcional/src/paginas/PaginaConsultarAndamentos.php @@ -1,43 +1,43 @@ -test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoEmTramitacao($strUnidadeDestino) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "Processo em tramitação externa para $strUnidadeDestino"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoRecebido($strUnidadeDestino) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "Recebido em $strUnidadeDestino"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoRejeitado($strUnidadeDestino, $strMotivo) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "O processo foi recusado pelo orgão $strUnidadeDestino pelo seguinte motivo: $strMotivo"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } -} +test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoEmTramitacao($strUnidadeDestino) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "Processo em tramitação externa para $strUnidadeDestino"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoRecebido($strUnidadeDestino) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "Recebido em $strUnidadeDestino"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoRejeitado($strUnidadeDestino, $strMotivo) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "O processo foi recusado pelo orgão $strUnidadeDestino pelo seguinte motivo: $strMotivo"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaControleProcesso.php b/tests_sei41/funcional/src/paginas/PaginaControleProcesso.php index 227f998e0..bbbf1d6c4 100755 --- a/tests_sei41/funcional/src/paginas/PaginaControleProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaControleProcesso.php @@ -1,97 +1,101 @@ -test->byId($painel)->elements($this->test->using('css selector')->value('tr'))); - } catch (\Exception $th) { } - } - - return $resultado; - } - - protected function listarProcessos($processosGerados, $processosRecebidos) - { - $listaProtocolos = array(); - $processosRows = $this->obterLinhasProcessos($processosGerados, $processosRecebidos); - if(isset($processosRows) && count($processosRows) > 0){ - for ($i=1; $i < count($processosRows); $i++) { - $listaProtocolos[] = trim($processosRows[$i]->text()); - } - } - - return $listaProtocolos; - } - - public function processosGerados() - { - return $this->listarProcessos(true, false); - } - - public function processosRecebidos() - { - return $this->listarProcessos(false, true); - } - - public function contemProcesso($numeroProcesso, $processosGerados = true, $processosRecebidos = true) - { - $listaProcessos = $this->listarProcessos($processosGerados, $processosRecebidos); - return ($listaProcessos != null) ? in_array($numeroProcesso, $listaProcessos) : false; - } - - public function contemAlertaProcessoRecusado($numeroProcesso) - { - $processosRows = $this->obterLinhasProcessos(true, true); - foreach ($processosRows as $row) { - try{ - if(strpos($row->text(), $numeroProcesso) !== false){ - foreach ($row->elements($this->test->using('css selector')->value('img')) as $icone) { - if(strpos($icone->attribute("src"), 'pen_tramite_recusado.png') !== false) - return true; - } - } - } - catch(\Exception $e) { - return false; - } - } - - return false; - } - - public function localizarProcessoPelaDescricao($descricao) - { - $processosRows = $this->obterLinhasProcessos(true, true); - foreach ($processosRows as $row) { - try{ - foreach ($row->elements($this->test->using('css selector')->value('a')) as $link) { - if(strpos($link->attribute("onmouseover"), $descricao) !== false) - return $link->text(); - } - } - catch(\Exception $e) { - return false; - } - } - - return false; - } - - public function abrirProcesso($strProtocolo) - { - $this->test->byLinkText($strProtocolo)->click(); - } -} +test->byId($painel)->elements($this->test->using('css selector')->value('tr'))); + } catch (\Exception $th) { } + } + + return $resultado; + } + + protected function listarProcessos($processosGerados, $processosRecebidos) + { + $listaProtocolos = array(); + $processosRows = $this->obterLinhasProcessos($processosGerados, $processosRecebidos); + if(isset($processosRows) && count($processosRows) > 0){ + for ($i=1; $i < count($processosRows); $i++) { + $listaProtocolos[] = trim($processosRows[$i]->text()); + } + } + + return $listaProtocolos; + } + + public function processosGerados() + { + return $this->listarProcessos(true, false); + } + + public function processosRecebidos() + { + return $this->listarProcessos(false, true); + } + + public function contemProcesso($numeroProcesso, $processosGerados = true, $processosRecebidos = true) + { + $listaProcessos = $this->listarProcessos($processosGerados, $processosRecebidos); + return ($listaProcessos != null) ? in_array($numeroProcesso, $listaProcessos) : false; + } + + public function contemAlertaProcessoRecusado($numeroProcesso) + { + $processosRows = $this->obterLinhasProcessos(true, true); + foreach ($processosRows as $row) { + try{ + if(strpos($row->text(), $numeroProcesso) !== false){ + foreach ($row->elements($this->test->using('css selector')->value('img')) as $icone) { + if(strpos($icone->attribute("src"), 'pen_tramite_recusado.png') !== false) { + return true; + } + } + } + } + catch(\Exception $e) { + return false; + } + } + + return false; + } + + public function localizarProcessoPelaDescricao($descricao) + { + $processosRows = $this->obterLinhasProcessos(true, true); + foreach ($processosRows as $row) { + try{ + foreach ($row->elements($this->test->using('css selector')->value('a')) as $link) { + if(strpos($link->attribute("onmouseover"), $descricao) !== false) { + return $link->text(); + } + } + } + catch(\Exception $e) { + return false; + } + } + + return false; + } + + public function abrirProcesso($strProtocolo) + { + $this->test->byLinkText($strProtocolo)->click(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaDocumento.php b/tests_sei41/funcional/src/paginas/PaginaDocumento.php index 1f18d963d..ec51f4137 100755 --- a/tests_sei41/funcional/src/paginas/PaginaDocumento.php +++ b/tests_sei41/funcional/src/paginas/PaginaDocumento.php @@ -1,182 +1,186 @@ -test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[@alt='Assinar Documento']")->click(); - } - - public function navegarParaConsultarDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Consultar/Alterar Documento')]")->click(); - } - - public function navegarParaCancelarDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Cancelar Documento')]")->click(); - } - - public function navegarParaMoverDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Mover Documento para outro Processo')]")->click(); - } - - public function ehProcessoAnexado() - { - sleep(2); - - try { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Desanexar Processo')]"); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//div[@id='divArvoreInformacao']/a[contains(@href, 'acao=procedimento_trabalhar')]"); - return true; - } catch (\Exception $e) { - return false; - } - } - - public function descricao($value = null) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $input = $this->test->byId("txtDescricao"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoesNaTabela($value = null) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - return $this->test->byXPath("//table[@class='infraTable']//tr[2]/td[2]")->text(); - } - - public function dataElaboracao($value = null) - { - $input = $this->test->byId("txtDataElaboracao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function nomeAnexo() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - return $this->test->byXPath("//table[@id='tblAnexos']/tbody/tr/td[2]/div")->text(); - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); - return array_map(function($opt) {return $opt->text();}, $options); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("optPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("optRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("optSigiloso")->click(); - } - } - - if($this->test->byId("optPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("optRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("optSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function recuperarHipoteseLegal() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - return $select->selectedLabel(); - } - - public function salvarDocumento() - { - $this->test->byId("btnSalvar")->click(); - } -} +test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[@alt='Assinar Documento']")->click(); + } + + public function navegarParaConsultarDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Consultar/Alterar Documento')]")->click(); + } + + public function navegarParaCancelarDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Cancelar Documento')]")->click(); + } + + public function navegarParaMoverDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Mover Documento para outro Processo')]")->click(); + } + + public function ehProcessoAnexado() + { + sleep(2); + + try { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Desanexar Processo')]"); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//div[@id='divArvoreInformacao']/a[contains(@href, 'acao=procedimento_trabalhar')]"); + return true; + } catch (\Exception $e) { + return false; + } + } + + public function descricao($value = null) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $input = $this->test->byId("txtDescricao"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoesNaTabela($value = null) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + return $this->test->byXPath("//table[@class='infraTable']//tr[2]/td[2]")->text(); + } + + public function dataElaboracao($value = null) + { + $input = $this->test->byId("txtDataElaboracao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function nomeAnexo() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + return $this->test->byXPath("//table[@id='tblAnexos']/tbody/tr/td[2]/div")->text(); + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); + return array_map(function($opt) {return $opt->text(); + }, $options); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("optPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("optRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("optSigiloso")->click(); + } + } + + if($this->test->byId("optPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("optRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("optSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function recuperarHipoteseLegal() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + return $select->selectedLabel(); + } + + public function salvarDocumento() + { + $this->test->byId("btnSalvar")->click(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaEditarProcesso.php b/tests_sei41/funcional/src/paginas/PaginaEditarProcesso.php index 5819f8499..3beea8be9 100755 --- a/tests_sei41/funcional/src/paginas/PaginaEditarProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaEditarProcesso.php @@ -1,134 +1,140 @@ -test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $input = $this->test->byId("txtDescricao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function protocoloInformado($value = null) - { - $input = $this->test->byId("txtProtocoloInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function dataGeracaoProtocolo($value = null) - { - $input = $this->test->byId("txtDtaGeracaoInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("optPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("optRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("optSigiloso")->click(); - } - } - - if($this->test->byId("optPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("optRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("optSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); - return array_map(function($opt) {return $opt->text();}, $options); - } - - public function salvarProcesso() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function recuperarHipoteseLegal() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - return $select->selectedLabel(); - } - - public function gerarProtocolo() - { - $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); - return '999990.' . $strSequencia . '/2015-00'; - } -} +test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $input = $this->test->byId("txtDescricao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function protocoloInformado($value = null) + { + $input = $this->test->byId("txtProtocoloInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function dataGeracaoProtocolo($value = null) + { + $input = $this->test->byId("txtDtaGeracaoInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("optPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("optRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("optSigiloso")->click(); + } + } + + if($this->test->byId("optPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("optRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("optSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); + return array_map(function($opt) {return $opt->text(); + }, $options); + } + + public function salvarProcesso() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function recuperarHipoteseLegal() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + return $select->selectedLabel(); + } + + public function gerarProtocolo() + { + $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); + return '999990.' . $strSequencia . '/2015-00'; + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaEnviarProcesso.php b/tests_sei41/funcional/src/paginas/PaginaEnviarProcesso.php index 32eba51a6..2221bc6fe 100755 --- a/tests_sei41/funcional/src/paginas/PaginaEnviarProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaEnviarProcesso.php @@ -1,34 +1,34 @@ -unidadeInput = $test->byId('txtUnidade'); - $this->manterAbertoCheck = $test->byId('chkSinManterAberto'); - $this->removerAnotacoesCheck = $test->byId('chkSinRemoverAnotacoes'); - $this->enviarNotificacaoCheck = $test->byId('chkSinEnviarEmailNotificacao'); - $this->dataCertaOption = $test->byId('optDataCerta'); - $this->prazoInput = $test->byId('txtPrazo'); - $this->diasOption = $test->byId('optDias'); - $this->diasInput = $test->byId('txtDias'); - $this->diasUteisInput = $test->byId('chkSinDiasUteis'); - $this->enviarButton = $test->byId('sbmEnviar'); - } - - public function adicionarUnidade($nomeUnidade) - { - $this->unidadeInput->value($nomeUnidade); - $this->test->waitUntil(function($testCase) { - $nomeUnidade = $testCase->byId('txtUnidade')->value(); - $testCase->byLinkText($nomeUnidade)->click(); - return true; - }, 8000); - } - - public function salvar() - { - $this->enviarButton->click(); - } -} +unidadeInput = $test->byId('txtUnidade'); + $this->manterAbertoCheck = $test->byId('chkSinManterAberto'); + $this->removerAnotacoesCheck = $test->byId('chkSinRemoverAnotacoes'); + $this->enviarNotificacaoCheck = $test->byId('chkSinEnviarEmailNotificacao'); + $this->dataCertaOption = $test->byId('optDataCerta'); + $this->prazoInput = $test->byId('txtPrazo'); + $this->diasOption = $test->byId('optDias'); + $this->diasInput = $test->byId('txtDias'); + $this->diasUteisInput = $test->byId('chkSinDiasUteis'); + $this->enviarButton = $test->byId('sbmEnviar'); + } + + public function adicionarUnidade($nomeUnidade) + { + $this->unidadeInput->value($nomeUnidade); + $this->test->waitUntil(function($testCase) { + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + $testCase->byLinkText($nomeUnidade)->click(); + return true; + }, 8000); + } + + public function salvar() + { + $this->enviarButton->click(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaEnvioParcialListar.php b/tests_sei41/funcional/src/paginas/PaginaEnvioParcialListar.php index 8e55ffbbe..e605ebda3 100644 --- a/tests_sei41/funcional/src/paginas/PaginaEnvioParcialListar.php +++ b/tests_sei41/funcional/src/paginas/PaginaEnvioParcialListar.php @@ -10,15 +10,15 @@ class PaginaEnvioParcialListar extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarEnvioParcialListar() + public function navegarEnvioParcialListar() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Mapeamento de Envio Parcial')); - $this->test->byXPath("//a[@link='pen_map_envio_parcial_listar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Mapeamento de Envio Parcial', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_envio_parcial_listar']")->click(); + } } diff --git a/tests_sei41/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei41/funcional/src/paginas/PaginaExportarTiposProcesso.php index e9b4f2f31..c48790dfc 100644 --- a/tests_sei41/funcional/src/paginas/PaginaExportarTiposProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -9,55 +9,55 @@ class PaginaExportarTiposProcesso extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarExportarTiposProcessos() + public function navegarExportarTiposProcessos() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo')); - $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Exportação de Tipos de Processo', 'UTF-8', 'ISO-8859-1')); + $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() + 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(); - } + $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) + public function verificarExisteBotao($nomeBtn) { - try { - return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); - } catch (Exception $e) { - return null; - } + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; } + } - public function verificarQuantidadeDeLinhasSelecionadas() + 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; - }); - } + $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() + public function btnExportar() { - $this->test->byId("btnExportarModal")->click(); - sleep(5); - } + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } /** * Lispar campo de pesquisa @@ -65,25 +65,25 @@ public function btnExportar() * * @return void */ - public function selecionarPesquisa() + public function selecionarPesquisa() { - $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); - $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); - $this->test->byId("sbmPesquisar")->click(); - } + $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() + public function buscarPesquisa() { - try { - $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); - return !empty($elementos) && !is_null($elementos); - } catch (Exception $e) { - return false; - } + try { + $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); + return !empty($elementos) && !is_null($elementos); + } catch (Exception $e) { + return false; } + } } diff --git a/tests_sei41/funcional/src/paginas/PaginaIncluirDocumento.php b/tests_sei41/funcional/src/paginas/PaginaIncluirDocumento.php index 719fc19d3..658d22d3d 100755 --- a/tests_sei41/funcional/src/paginas/PaginaIncluirDocumento.php +++ b/tests_sei41/funcional/src/paginas/PaginaIncluirDocumento.php @@ -1,197 +1,198 @@ -test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - - $this->test->byId('txtFiltro')->value($tipoDocumento); - sleep(2); - $this->test->byLinkText($tipoDocumento)->click(); - } - catch (Exception $e){ - $this->test->byXPath("//img[@id='imgExibirSeries'] | //a[@id='ancExibirSeries']")->click(); - $this->test->byId('txtFiltro')->value($tipoDocumento); - sleep(2); - $this->test->byLinkText($tipoDocumento)->click(); - } - } - - public function selecionarTipoDocumentoExterno() - { - $this->selecionarTipoDocumento('Externo'); - } - - public function descricao($value) - { - $input = $this->test->byId("txtDescricao"); - return $input->value($value); - } - - public function tipoDocumento($value) - { - $input = $this->test->byId("selSerie"); - $this->test->select($input)->selectOptionByLabel($value); - } - - public function formato($value) - { - if($value != self::STA_FORMATO_NATO_DIGITAL) - throw new Exception("Outros formatos não implementados em PaginaIncluirDocumento"); - - $this->test->byId("divOptNato")->click(); - } - - public function anexo($arquivo) - { - $input = $this->test->byId("filArquivo"); - $input->value($arquivo); - $this->test->waitUntil(function($testCase) use($arquivo) { - $testCase->assertStringContainsString(basename($arquivo), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function dataElaboracao($value) - { - $input = $this->test->byId("txtDataElaboracao"); - return $input->value($value); - } - - public function observacoes($value) - { - $input = $this->test->byId("txaObservacoes"); - return $input->value($value); - } - - public function adicionarInteressado($nomeInteressado) - { - $input = $this->test->byId("txtInteressado"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - - sleep(2); - } - - public function salvarDocumento() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $input = $this->test->byId("lblPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $input = $this->test->byId("lblRestrito")->click(); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $input = $this->test->byId("lblSigiloso")->click(); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - $select = $this->test->select($this->test->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function gerarDocumentoTeste(array $dadosDocumento = null) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); - sleep(2); - - $dadosDocumento = $dadosDocumento ?: array(); - $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; - $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); - $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); - $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); - $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; - $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; - - //$paginaIncluirDocumento = new PaginaIncluirDocumento($test); - $this->selecionarTipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); - $this->descricao($dadosDocumento["DESCRICAO"]); - $this->observacoes($dadosDocumento["OBSERVACOES"]); - $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); - $this->salvarDocumento(); - - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - sleep(10); - $url = parse_url($this->test->byId("ifrVisualizacao")->attribute("src")); - parse_str($url['query'], $query); - $dadosDocumento["ID_DOCUMENTO"] = $query["id_documento"]; - - // $this->test->frame(null); - // $this->test->frame("ifrVisualizacao"); - $this->test->window($this->test->windowHandles()[1]); - $this->test->closeWindow(); - $this->test->window(''); - - $this->test->frame(NULL); - $this->test->frame("ifrArvore"); - - return trim($this->test->byId('anchor' . $query["id_documento"])->text()); - } - - public function gerarDocumentoExternoTeste(array $dadosDocumento, $comAnexo) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); - sleep(2); - - $dadosDocumento = $dadosDocumento ?: array(); - $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; - $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); - $dadosDocumento["DATA_ELABORACAO"] = @$dadosDocumento["DATA_ELABORACAO"] ?: date("d/m/Y"); - $dadosDocumento["FORMATO_DOCUMENTO"] = @$dadosDocumento["FORMATO_DOCUMENTO"] ?: self::STA_FORMATO_NATO_DIGITAL; - $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); - $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); - $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; - $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; - - $this->selecionarTipoDocumentoExterno(); - sleep(2); - $this->tipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); - sleep(2); - - $this->dataElaboracao($dadosDocumento["DATA_ELABORACAO"]); - $this->formato($dadosDocumento["FORMATO_DOCUMENTO"]); - if($comAnexo){ - $this->anexo($dadosDocumento["ARQUIVO"]); - } - $this->observacoes($dadosDocumento["OBSERVACOES"]); - $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); - $this->salvarDocumento(); - - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - } -} +test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + + $this->test->byId('txtFiltro')->value($tipoDocumento); + sleep(2); + $this->test->byLinkText($tipoDocumento)->click(); + } + catch (Exception $e){ + $this->test->byXPath("//img[@id='imgExibirSeries'] | //a[@id='ancExibirSeries']")->click(); + $this->test->byId('txtFiltro')->value($tipoDocumento); + sleep(2); + $this->test->byLinkText($tipoDocumento)->click(); + } + } + + public function selecionarTipoDocumentoExterno() + { + $this->selecionarTipoDocumento('Externo'); + } + + public function descricao($value) + { + $input = $this->test->byId("txtDescricao"); + return $input->value($value); + } + + public function tipoDocumento($value) + { + $input = $this->test->byId("selSerie"); + $this->test->select($input)->selectOptionByLabel($value); + } + + public function formato($value) + { + if($value != self::STA_FORMATO_NATO_DIGITAL) { + throw new Exception("Outros formatos não implementados em PaginaIncluirDocumento"); + } + + $this->test->byId("divOptNato")->click(); + } + + public function anexo($arquivo) + { + $input = $this->test->byId("filArquivo"); + $input->value($arquivo); + $this->test->waitUntil(function($testCase) use($arquivo) { + $testCase->assertStringContainsString(basename($arquivo), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function dataElaboracao($value) + { + $input = $this->test->byId("txtDataElaboracao"); + return $input->value($value); + } + + public function observacoes($value) + { + $input = $this->test->byId("txaObservacoes"); + return $input->value($value); + } + + public function adicionarInteressado($nomeInteressado) + { + $input = $this->test->byId("txtInteressado"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + + sleep(2); + } + + public function salvarDocumento() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $input = $this->test->byId("lblPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $input = $this->test->byId("lblRestrito")->click(); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $input = $this->test->byId("lblSigiloso")->click(); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + $select = $this->test->select($this->test->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function gerarDocumentoTeste(array $dadosDocumento = null) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); + sleep(2); + + $dadosDocumento = $dadosDocumento ?: array(); + $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; + $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); + $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); + $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); + $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; + $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; + + //$paginaIncluirDocumento = new PaginaIncluirDocumento($test); + $this->selecionarTipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); + $this->descricao($dadosDocumento["DESCRICAO"]); + $this->observacoes($dadosDocumento["OBSERVACOES"]); + $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); + $this->salvarDocumento(); + + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + sleep(10); + $url = parse_url($this->test->byId("ifrVisualizacao")->attribute("src")); + parse_str($url['query'], $query); + $dadosDocumento["ID_DOCUMENTO"] = $query["id_documento"]; + + // $this->test->frame(null); + // $this->test->frame("ifrVisualizacao"); + $this->test->window($this->test->windowHandles()[1]); + $this->test->closeWindow(); + $this->test->window(''); + + $this->test->frame(null); + $this->test->frame("ifrArvore"); + + return trim($this->test->byId('anchor' . $query["id_documento"])->text()); + } + + public function gerarDocumentoExternoTeste(array $dadosDocumento, $comAnexo) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); + sleep(2); + + $dadosDocumento = $dadosDocumento ?: array(); + $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; + $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); + $dadosDocumento["DATA_ELABORACAO"] = @$dadosDocumento["DATA_ELABORACAO"] ?: date("d/m/Y"); + $dadosDocumento["FORMATO_DOCUMENTO"] = @$dadosDocumento["FORMATO_DOCUMENTO"] ?: self::STA_FORMATO_NATO_DIGITAL; + $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); + $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); + $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; + $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; + + $this->selecionarTipoDocumentoExterno(); + sleep(2); + $this->tipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); + sleep(2); + + $this->dataElaboracao($dadosDocumento["DATA_ELABORACAO"]); + $this->formato($dadosDocumento["FORMATO_DOCUMENTO"]); + if($comAnexo){ + $this->anexo($dadosDocumento["ARQUIVO"]); + } + $this->observacoes($dadosDocumento["OBSERVACOES"]); + $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); + $this->salvarDocumento(); + + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaIniciarProcesso.php b/tests_sei41/funcional/src/paginas/PaginaIniciarProcesso.php index 08ff93988..4eebcde16 100755 --- a/tests_sei41/funcional/src/paginas/PaginaIniciarProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaIniciarProcesso.php @@ -1,170 +1,175 @@ -test->byId('txtFiltro')->value($tipoProcesso); - sleep(2); - $this->test->byLinkText($tipoProcesso)->click(); - } - catch (Exception $e){ - $this->test->byId("ancExibirTiposProcedimento")->click(); - $this->test->byId('txtFiltro')->value($tipoProcesso); - sleep(2); - $this->test->byLinkText($tipoProcesso)->click(); - } - } - - public function descricao($value = null) - { - $input = $this->test->byId("txtDescricao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function selecionarProtocoloManual() - { - $this->test->byId("optProtocoloManual")->click(); - } - - public function protocoloInformado($value = null) - { - $input = $this->test->byId("txtProtocoloInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function dataGeracaoProtocolo($value = null) - { - $input = $this->test->byId("txtDtaGeracaoInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("lblPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("lblRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("lblSigiloso")->click(); - } - } - - if($this->test->byId("lblPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("lblRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("lblSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - return $this->test->select($this->test->byId('selInteressadosProcedimento'))->selectedLabels(); - } - - public function salvarProcesso() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->test->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function gerarProtocolo() - { - $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); - return '999990.' . $strSequencia . '/2015-00'; - } - - public static function gerarProcessoTeste($test, array $dadosProcesso = null) - { - $test->byLinkText("Iniciar Processo")->click(); - - $dadosProcesso = $dadosProcesso ?: array(); - $dadosProcesso["TIPO_PROCESSO"] = @$dadosProcesso["TIPO_PROCESSO"] ?: "Licitação: Pregão Eletrônico"; - $dadosProcesso["DESCRICAO"] = @$dadosProcesso["DESCRICAO"] ?: util::random_string(20); - $dadosProcesso["OBSERVACOES"] = @$dadosProcesso["OBSERVACOES"] ?: util::random_string(100); - $dadosProcesso["INTERESSADOS"] = @$dadosProcesso["INTERESSADOS"] ?: util::random_string(40); - $dadosProcesso["RESTRICAO"] = @$dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO; - $dadosProcesso["HIPOTESE_LEGAL"] = @$dadosProcesso["HIPOTESE_LEGAL"] ?: ""; - - $paginaIniciarProcesso = new PaginaIniciarProcesso($test); - $paginaIniciarProcesso->selecionarTipoProcesso($dadosProcesso["TIPO_PROCESSO"]); - $paginaIniciarProcesso->descricao($dadosProcesso["DESCRICAO"]); - $paginaIniciarProcesso->observacoes($dadosProcesso["OBSERVACOES"]); - $paginaIniciarProcesso->selecionarRestricao($dadosProcesso["RESTRICAO"], $dadosProcesso["HIPOTESE_LEGAL"]); - $paginaIniciarProcesso->adicionarInteressado($dadosProcesso["INTERESSADOS"]); - - $paginaIniciarProcesso->salvarProcesso(); - - $test->frame(null); - $test->frame("ifrArvore"); - $protocoloProcesso = trim($test->byXPath("//a[@title='". $dadosProcesso["TIPO_PROCESSO"] ."'] | //span[@title='". $dadosProcesso["TIPO_PROCESSO"] ."']")->text()); - - return $protocoloProcesso; - } -} +test->byId('txtFiltro')->value($tipoProcesso); + sleep(2); + $this->test->byLinkText($tipoProcesso)->click(); + } + catch (Exception $e){ + $this->test->byId("ancExibirTiposProcedimento")->click(); + $this->test->byId('txtFiltro')->value($tipoProcesso); + sleep(2); + $this->test->byLinkText($tipoProcesso)->click(); + } + } + + public function descricao($value = null) + { + $input = $this->test->byId("txtDescricao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function selecionarProtocoloManual() + { + $this->test->byId("optProtocoloManual")->click(); + } + + public function protocoloInformado($value = null) + { + $input = $this->test->byId("txtProtocoloInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function dataGeracaoProtocolo($value = null) + { + $input = $this->test->byId("txtDtaGeracaoInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("lblPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("lblRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("lblSigiloso")->click(); + } + } + + if($this->test->byId("lblPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("lblRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("lblSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + return $this->test->select($this->test->byId('selInteressadosProcedimento'))->selectedLabels(); + } + + public function salvarProcesso() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->test->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function gerarProtocolo() + { + $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); + return '999990.' . $strSequencia . '/2015-00'; + } + + public static function gerarProcessoTeste($test, array $dadosProcesso = null) + { + $test->byLinkText("Iniciar Processo")->click(); + + $dadosProcesso = $dadosProcesso ?: array(); + $dadosProcesso["TIPO_PROCESSO"] = @$dadosProcesso["TIPO_PROCESSO"] ?: "Licitação: Pregão Eletrônico"; + $dadosProcesso["DESCRICAO"] = @$dadosProcesso["DESCRICAO"] ?: util::random_string(20); + $dadosProcesso["OBSERVACOES"] = @$dadosProcesso["OBSERVACOES"] ?: util::random_string(100); + $dadosProcesso["INTERESSADOS"] = @$dadosProcesso["INTERESSADOS"] ?: util::random_string(40); + $dadosProcesso["RESTRICAO"] = @$dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO; + $dadosProcesso["HIPOTESE_LEGAL"] = @$dadosProcesso["HIPOTESE_LEGAL"] ?: ""; + + $paginaIniciarProcesso = new PaginaIniciarProcesso($test); + $paginaIniciarProcesso->selecionarTipoProcesso($dadosProcesso["TIPO_PROCESSO"]); + $paginaIniciarProcesso->descricao($dadosProcesso["DESCRICAO"]); + $paginaIniciarProcesso->observacoes($dadosProcesso["OBSERVACOES"]); + $paginaIniciarProcesso->selecionarRestricao($dadosProcesso["RESTRICAO"], $dadosProcesso["HIPOTESE_LEGAL"]); + $paginaIniciarProcesso->adicionarInteressado($dadosProcesso["INTERESSADOS"]); + + $paginaIniciarProcesso->salvarProcesso(); + + $test->frame(null); + $test->frame("ifrArvore"); + $protocoloProcesso = trim($test->byXPath("//a[@title='". $dadosProcesso["TIPO_PROCESSO"] ."'] | //span[@title='". $dadosProcesso["TIPO_PROCESSO"] ."']")->text()); + + return $protocoloProcesso; + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaLogin.php b/tests_sei41/funcional/src/paginas/PaginaLogin.php index 68d417a4f..e08808fd8 100755 --- a/tests_sei41/funcional/src/paginas/PaginaLogin.php +++ b/tests_sei41/funcional/src/paginas/PaginaLogin.php @@ -1,56 +1,58 @@ -usuarioInput = $test->byId('txtUsuario'); - $this->passwordInput = $test->byId('pwdSenha'); - try{ - $this->loginButton = $test->byId('Acessar'); - } - //SEI 4.0.12 alterou para sbmAcessar - catch (WebDriverException $wde){ - $this->loginButton = $test->byId('sbmAcessar'); - } - } - - public function usuario($value) - { - if(isset($value)) - $this->usuarioInput->value($value); - - return $this->usuarioInput->value(); - } - - public function senha($value) - { - if(isset($value)) - $this->passwordInput->value($value); - - return $this->passwordInput->value(); - } - - public function orgao() - { - return $this->test->byId('divInfraBarraSuperior')->text(); - } - - public function submit() - { - $this->loginButton->click(); - return $this->test; - } - - public static function executarAutenticacao($test, $usuario="teste", $senha="teste") - { - $paginaLogin = new PaginaLogin($test); - $paginaLogin->usuario($usuario); - $paginaLogin->senha($senha); - $paginaLogin->submit(); - } -} \ No newline at end of file +usuarioInput = $test->byId('txtUsuario'); + $this->passwordInput = $test->byId('pwdSenha'); + try{ + $this->loginButton = $test->byId('Acessar'); + } + //SEI 4.0.12 alterou para sbmAcessar + catch (WebDriverException $wde){ + $this->loginButton = $test->byId('sbmAcessar'); + } + } + + public function usuario($value) + { + if(isset($value)) { + $this->usuarioInput->value($value); + } + + return $this->usuarioInput->value(); + } + + public function senha($value) + { + if(isset($value)) { + $this->passwordInput->value($value); + } + + return $this->passwordInput->value(); + } + + public function orgao() + { + return $this->test->byId('divInfraBarraSuperior')->text(); + } + + public function submit() + { + $this->loginButton->click(); + return $this->test; + } + + public static function executarAutenticacao($test, $usuario = "teste", $senha = "teste") + { + $paginaLogin = new PaginaLogin($test); + $paginaLogin->usuario($usuario); + $paginaLogin->senha($senha); + $paginaLogin->submit(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaMapUnidades.php b/tests_sei41/funcional/src/paginas/PaginaMapUnidades.php new file mode 100644 index 000000000..283060074 --- /dev/null +++ b/tests_sei41/funcional/src/paginas/PaginaMapUnidades.php @@ -0,0 +1,147 @@ +test->byId("txtInfraPesquisarMenu")->value('Listar'); + $this->test->byXPath("//a[@link='pen_map_unidade_listar']")->click(); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function pesquisarUnidade($textoPesquisa) + { + $this->test->byId('txtSiglaUnidade')->clear(); + $this->test->byId('txtSiglaUnidade')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarEditar() + { + $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); + } + + public function selecionarRepoEstruturas($textoEstruturas) + { + $this->repoEstruturaInput = $this->test->byId('txtRepoEstruturas'); + $this->repoEstruturaInput->clear(); + $this->repoEstruturaInput->value($textoEstruturas); + $this->test->keys(Keys::ENTER); + $sucesso = $this->test->waitUntil(function($testCase) { + $bolExisteAlerta=null; + $nomeEstrutura = $testCase->byId('txtRepoEstruturas')->value(); + + try{ + $bolExisteAlerta = $this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){} + $testCase->byPartialLinkText($nomeEstrutura)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->test->assertTrue($sucesso); + } + + public function selecionarUnidade($textoUnidade) + { + $this->repoUnidadeInput = $this->test->byId('txtUnidade'); + $this->repoUnidadeInput->clear(); + $this->repoUnidadeInput->value($textoUnidade); + $this->test->keys(Keys::ENTER); + $sucesso = $this->test->waitUntil(function($testCase) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + + try{ + $bolExisteAlerta = $this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){} + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->test->assertTrue($sucesso); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function limparRestricoes() + { + $options = $this->test->byId('selRepoEstruturas') + ->elements($this->test->using('css selector')->value('option')); + if (count($options)) { + $this->test->byXPath("//img[@title='Remover Estruturas Selecionadas']")->click(); + } + } + + /** + * 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() : ""; + } + + public function validarRepositorio($siglaRepositorio) + { + $repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + $options = $repositorioSelect + ->elements($this->test->using('css selector')->value('option')); + + $contador = 0; + foreach ($options as $option) { + $value = trim($option->value()); + if (empty($value) || is_null($value) || $value == "null") { + continue; + } + + $contador++; + } + + if(isset($siglaRepositorio)){ + $repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + $this->test->assertEquals(1, $contador); + + return $this->test->byId('selRepositorioEstruturas')->value(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaMoverDocumento.php b/tests_sei41/funcional/src/paginas/PaginaMoverDocumento.php index 40b883015..cd0d42299 100755 --- a/tests_sei41/funcional/src/paginas/PaginaMoverDocumento.php +++ b/tests_sei41/funcional/src/paginas/PaginaMoverDocumento.php @@ -1,49 +1,49 @@ -processoDestino($protocoloDestino); - $this->motivoMovimentacao($motivoMovimentacao); - $this->mover(); - } - - private function processoDestino($value) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $input = $this->test->byId("txtProcedimentoDestino"); - if(isset($value)) { - $input->value($value); - sleep(2); - $this->test->keys(Keys::ENTER); - } - - sleep(2); - return $input->value(); - } - - private function motivoMovimentacao($value) - { - $input = $this->test->byId("txaMotivo"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - private function mover() - { - $this->test->byId("sbmMover")->click(); - } -} +processoDestino($protocoloDestino); + $this->motivoMovimentacao($motivoMovimentacao); + $this->mover(); + } + + private function processoDestino($value) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $input = $this->test->byId("txtProcedimentoDestino"); + if(isset($value)) { + $input->value($value); + sleep(2); + $this->test->keys(Keys::ENTER); + } + + sleep(2); + return $input->value(); + } + + private function motivoMovimentacao($value) + { + $input = $this->test->byId("txaMotivo"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + private function mover() + { + $this->test->byId("sbmMover")->click(); + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php b/tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php new file mode 100644 index 000000000..2d62e6424 --- /dev/null +++ b/tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php @@ -0,0 +1,45 @@ +test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Listar', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_hipotese_legal_envio_listar']")->click(); + } + + /** + * Verificar se a tabela de hipótese legal é exibida + * + * @return bool + */ + public function existeTabela() + { + try { + $trTh = $this->test->byXPath('//*[@id="divInfraAreaTabela"]/table/tbody/tr[1]/th[2]')->text(); + return !empty($trTh) && !is_null($trTh) && count($trTh) >= 1; + } catch (Exception $ex) { + return false; + } + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaProcesso.php b/tests_sei41/funcional/src/paginas/PaginaProcesso.php index 2b2990670..76da9beca 100755 --- a/tests_sei41/funcional/src/paginas/PaginaProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaProcesso.php @@ -1,253 +1,289 @@ -test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $concluirProcessoButton = $this->test->byXPath("//img[@alt='Concluir Processo']"); - $concluirProcessoButton->click(); - } - - public function incluirDocumento() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $incluirDocumentoButton = $this->test->byXPath("//img[@alt='Incluir Documento']"); - $incluirDocumentoButton->click(); - } - - public function enviarProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[@alt='Enviar Processo']")->click(); - } - - public function cancelarTramitacaoExterna() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath(utf8_encode("//img[@alt='Cancelar Tramitação Externa']"))->click(); - } - - public function navegarParaEditarProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar/Alterar Processo']"); - $this->editarProcessoButton->click(); - } - - public function navegarParaTramitarProcesso() - { - $this->test->waitUntil(function($testCase) { - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo']"); - $this->editarProcessoButton->click(); - sleep(2); - - $this->test->frame("ifrVisualizacao"); - $testCase->assertStringContainsString('Envio Externo de Processo', $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaConsultarAndamentos() - { - $this->test->waitUntil(function($testCase) { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $testCase->byLinkText('Consultar Andamento')->click(); - - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - sleep(2); - $testCase->assertStringContainsString(utf8_encode('Histórico do Processo'), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaConsultarRecibos() - { - $this->test->waitUntil(function($testCase) { - // Selecionar processo na árvore - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar Recibos']"); - $this->editarProcessoButton->click(); - sleep(2); - - $this->test->frame("ifrVisualizacao"); - $testCase->assertStringContainsString('Consultar Recibos', $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaAnexarProcesso() - { - $this->test->waitUntil(function($testCase) { - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Anexar Processo']"); - $this->editarProcessoButton->click(); - sleep(2); - - $this->test->frame("ifrVisualizacao"); - $testCase->assertStringContainsString(utf8_encode('Anexação de Processos'), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaTramitarProcessoInterno() - { - $this->enviarProcesso(); - } - - public function informacao() - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - sleep(10); - $this->test->frame("ifrVisualizacao"); - return $this->test->byId('divArvoreInformacao')->text(); - } - - public function processoAberto() - { - try - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->byXPath("//img[@alt='Reabrir Processo']"); - return false; - } - catch(Exception $e) - { - return true; - } - } - - public function processoBloqueado() - { - try - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byXPath("//img[@title='Processo Bloqueado']"); - return true; - } - catch(Exception $e) - { - return false; - } - } - - public function deveSerDocumentoAnexo($bolDevePossuir, $nomeDocumentoArvore) - { - try - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - if($bolDevePossuir){ - $idAnexo=$this->test->byXPath("//span[contains(text(),'" . $nomeDocumentoArvore . "')]")->attribute('id'); - $idAnexo=str_replace("span","",$idAnexo); - $this->test->byXPath("//img[contains(@id,'iconMD_PEN_DOC_REF" . $idAnexo . "')]"); - } - return true; - } - catch(Exception $e) - { - return false; - } - } - - public function ehDocumentoCancelado($nomeDocumentoArvore) - { - try - { - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); - return true; - } - catch(Exception $e) - { - return false; - }finally{ - $this->test->timeouts()->implicitWait($to); - } - } - - public function ehDocumentoMovido($nomeDocumentoArvore) - { - try - { - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); - return true; - } - catch(Exception $e) - { - return false; - }finally{ - $this->test->timeouts()->implicitWait($to); - } - } - - private function selecionarItemArvore($nomeArvore) - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeArvore)->click(); - } - - public function selecionarDocumento($nomeDocumentoArvore) - { - $this->selecionarItemArvore($nomeDocumentoArvore); - } - - public function selecionarProcesso() - { - $this->selecionarItemArvore($this->listarArvoreProcesso()[0]); - sleep(1); - } - - public function listarDocumentos() - { - $itens = $this->listarArvoreProcesso(); - return (count($itens) > 1) ? array_slice($itens, 1) : null; - } - - private function listarArvoreProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $itens = $this->test->elements($this->test->using('css selector')->value('div.infraArvore > a > span[id]')); - return array_map(function($item) {return $item->text();}, $itens); - } - -} +test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $concluirProcessoButton = $this->test->byXPath("//img[@alt='Concluir Processo']"); + $concluirProcessoButton->click(); + $this->test->frame("ifrVisualizacao"); + $confirmarConcluirProcessoButton = $this->test->byId('sbmSalvar'); + $confirmarConcluirProcessoButton->click(); + } + + public function incluirDocumento() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $incluirDocumentoButton = $this->test->byXPath("//img[@alt='Incluir Documento']"); + $incluirDocumentoButton->click(); + } + + public function enviarProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[@alt='Enviar Processo']")->click(); + } + + public function cancelarTramitacaoExterna() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath(mb_convert_encoding("//img[@alt='Cancelar Tramitação Externa']", 'UTF-8', 'ISO-8859-1'))->click(); + } + + public function navegarParaEditarProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar/Alterar Processo']"); + $this->editarProcessoButton->click(); + } + + public function navegarParaOrdenarDocumentos() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $button = $this->test->byXPath(mb_convert_encoding("//img[@alt='Ordenar Árvore do Processo']", 'UTF-8', 'ISO-8859-1')); + $button->click(); + } + + public function trocarOrdenacaoDocumentos() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//*[@id='selRelProtocoloProtocolo']/option[1]")->click(); + sleep(1); + $this->test->byXPath("//*[@id='imgRelProtocoloProtocoloAbaixo']")->click(); + sleep(1); + $this->test->byXPath("//*[@id='divInfraBarraComandosSuperior']/button[@value='Salvar']")->click(); + } + + public function navegarParaTramitarProcesso() + { + $this->test->waitUntil(function($testCase) { + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo']"); + $this->editarProcessoButton->click(); + sleep(2); + + $this->test->frame("ifrVisualizacao"); + $testCase->assertStringContainsString('Envio Externo de Processo', $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaConsultarAndamentos() + { + $this->test->waitUntil(function($testCase) { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $testCase->byLinkText('Consultar Andamento')->click(); + + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + sleep(2); + $testCase->assertStringContainsString(mb_convert_encoding('Histórico do Processo', 'UTF-8', 'ISO-8859-1'), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaConsultarRecibos() + { + $this->test->waitUntil(function($testCase) { + // Selecionar processo na árvore + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar Recibos']"); + $this->editarProcessoButton->click(); + sleep(2); + + $this->test->frame("ifrVisualizacao"); + $testCase->assertStringContainsString('Consultar Recibos', $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaAnexarProcesso() + { + $this->test->waitUntil(function($testCase) { + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Anexar Processo']"); + $this->editarProcessoButton->click(); + sleep(2); + + $this->test->frame("ifrVisualizacao"); + $testCase->assertStringContainsString(mb_convert_encoding('Anexação de Processos', 'UTF-8', 'ISO-8859-1'), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaTramitarProcessoInterno() + { + $this->enviarProcesso(); + } + + public function informacao() + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + sleep(10); + $this->test->frame("ifrVisualizacao"); + return $this->test->byId('divArvoreInformacao')->text(); + } + + public function processoAberto() + { + try + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->byXPath("//img[@alt='Reabrir Processo']"); + return false; + } + catch(Exception $e) + { + return true; + } + } + + public function processoBloqueado() + { + try + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byXPath("//img[@title='Processo Bloqueado']"); + return true; + } + catch(Exception $e) + { + return false; + } + } + + public function deveSerDocumentoAnexo($bolDevePossuir, $nomeDocumentoArvore) + { + try + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + if($bolDevePossuir){ + $idAnexo=$this->test->byXPath("//span[contains(text(),'" . $nomeDocumentoArvore . "')]")->attribute('id'); + $idAnexo=str_replace("span", "", $idAnexo); + $this->test->byXPath("//img[contains(@id,'iconMD_PEN_DOC_REF" . $idAnexo . "')]"); + } + return true; + } + catch(Exception $e) + { + return false; + } + } + + public function ehDocumentoCancelado($nomeDocumentoArvore) + { + try + { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); + return true; + } + catch(Exception $e) + { + return false; + }finally{ + $this->test->timeouts()->implicitWait($to); + } + } + + public function ehDocumentoMovido($nomeDocumentoArvore) + { + try + { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); + return true; + } + catch(Exception $e) + { + return false; + }finally{ + $this->test->timeouts()->implicitWait($to); + } + } + + private function selecionarItemArvore($nomeArvore) + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeArvore)->click(); + } + + public function selecionarDocumento($nomeDocumentoArvore) + { + $this->selecionarItemArvore($nomeDocumentoArvore); + } + + public function selecionarProcesso() + { + $this->selecionarItemArvore($this->listarArvoreProcesso()[0]); + sleep(1); + } + + public function listarDocumentos() + { + $itens = $this->listarArvoreProcesso(); + return (count($itens) > 1) ? array_slice($itens, 1) : null; + } + + private function listarArvoreProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $itens = $this->test->elements($this->test->using('css selector')->value('div.infraArvore > a > span[id]')); + return array_map(function($item) {return $item->text(); + }, $itens); + } + + public function validarBotaoExiste($botao) + { + try { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $botao = $this->test->byXPath("//img[@alt='$botao']"); + return true; + } catch (\Exception $e) { + return false; + } + } + +} diff --git a/tests_sei41/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php b/tests_sei41/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php index 410edf20e..fe588cf97 100755 --- a/tests_sei41/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php +++ b/tests_sei41/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php @@ -2,13 +2,13 @@ class PaginaProcessosTramitadosExternamente extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function contemProcesso($numeroProcesso) + public function contemProcesso($numeroProcesso) { - return strpos($this->test->byCssSelector('body')->text(), $numeroProcesso) !== false; - } + return strpos($this->test->byCssSelector('body')->text(), $numeroProcesso) !== false; + } } \ No newline at end of file diff --git a/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php b/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php index 412a64f86..bc7f019d3 100755 --- a/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php +++ b/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php @@ -1,59 +1,59 @@ -test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - - //Localiza colunas com dados da tramitação - $linhasResumoTramite = $this->test->elements($this->test->using('css selector')->value('div.infraAreaTabela > table tr')); - if(count($linhasResumoTramite) > 0) { - foreach ($linhasResumoTramite as $linha) { - $colunas = $linha->elements($this->test->using('css selector')->value('td')); - - if(count($colunas) == 2){ - //Verifica se trâmite informado foi localizado no histórico - $result = strpos($colunas[0]->text(), $mensagemTramite) !== false; - - //Verifica se recibo de envio do processo foi localizado - if($result && $verificaReciboEnvio) { - try{ - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Confirmação de Envio\']'))); - } - catch(Exception $e){ $result = false; } - finally{ $this->test->timeouts()->implicitWait($to); } - } - - //Verifica se recibo de conclusão do trâmite processo foi localizado - if($result && $verificaReciboConclusao) { - try{ - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Conclusão de Trâmite\']'))); - } - catch(Exception $e){ $result = false; } - finally{ $this->test->timeouts()->implicitWait($to); } - } - - if($result) { - break; - } - } - - } - } - - return $result; - } -} +test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + + //Localiza colunas com dados da tramitação + $linhasResumoTramite = $this->test->elements($this->test->using('css selector')->value('div.infraAreaTabela > table tr')); + if(count($linhasResumoTramite) > 0) { + foreach ($linhasResumoTramite as $linha) { + $colunas = $linha->elements($this->test->using('css selector')->value('td')); + + if(count($colunas) == 2){ + //Verifica se trâmite informado foi localizado no histórico + $result = strpos($colunas[0]->text(), $mensagemTramite) !== false; + + //Verifica se recibo de envio do processo foi localizado + if($result && $verificaReciboEnvio) { + try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $colunas[1]->element($this->test->using('css selector')->value(mb_convert_encoding('a > img[title=\'Recibo de Confirmação de Envio\']', 'UTF-8', 'ISO-8859-1'))); + } + catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } + } + + //Verifica se recibo de conclusão do trâmite processo foi localizado + if($result && $verificaReciboConclusao) { + try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $colunas[1]->element($this->test->using('css selector')->value(mb_convert_encoding('a > img[title=\'Recibo de Conclusão de Trâmite\']', 'UTF-8', 'ISO-8859-1'))); + } + catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } + } + + if($result) { + break; + } + } + + } + } + + return $result; + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaTeste.php b/tests_sei41/funcional/src/paginas/PaginaTeste.php index 9a2bc71c2..90e57bc09 100755 --- a/tests_sei41/funcional/src/paginas/PaginaTeste.php +++ b/tests_sei41/funcional/src/paginas/PaginaTeste.php @@ -1,67 +1,73 @@ -test = $test; - $this->test->timeouts()->implicitWait(10000); - } - - public function titulo() - { - return $this->test->title(); - } - - public function alertTextAndClose($confirm=true) - { - sleep(2); - $result = $this->test->alertText(); - $result = (!is_array($result) ? $result : null); - - if(isset($confirm) && $confirm) - $this->test->acceptAlert(); - else - $this->dismissAlert(); - - #var_dump($result); - return $result; - } - - public function unidadeContexto($unidadeContexto) - { - $this->test->frame(null); - $this->test->byXPath("(//a[@id='lnkInfraUnidade'])[2]")->click(); - $this->test->byXPath("//td[contains(.,'" . $unidadeContexto . "')]")->click(); - - } - - public function navegarParaControleProcesso() - { - $this->test->frame(null); - $this->test->byXPath("//img[@title='Controle de Processos']")->click(); - - } - - public function sairSistema() - { - $this->test->frame(null); - $this->test->byXPath("//a[@id='lnkInfraSairSistema'] | //a[@id='lnkSairSistema']")->click(); - } - - public static function selecionarUnidadeContexto($test, $unidadeContexto) - { - $paginaTeste = new PaginaTeste($test); - $paginaTeste->unidadeContexto($unidadeContexto); - } - - public function pesquisar($termoPesquisa) - { - $this->test->frame(null); - $this->test->byId("txtPesquisaRapida")->value($termoPesquisa); - $this->test->keys(Keys::ENTER); - } - -} +test = $test; + $this->test->timeouts()->implicitWait(10000); + } + + public function titulo() + { + return $this->test->title(); + } + + public function alertTextAndClose($confirm = true) + { + sleep(2); + $result = $this->test->alertText(); + $result = (!is_array($result) ? $result : null); + + if(isset($confirm) && $confirm) { + $this->test->acceptAlert(); + } else { + $this->dismissAlert(); + } + + #var_dump($result); + return $result; + } + + public function unidadeContexto($unidadeContexto) + { + $this->test->frame(null); + $this->test->byXPath("(//a[@id='lnkInfraUnidade'])[2]")->click(); + $this->test->byXPath("//td[contains(.,'" . $unidadeContexto . "')]")->click(); + + } + + public function navegarParaControleProcesso() + { + $this->test->frame(null); + $this->test->byXPath("//img[@title='Controle de Processos']")->click(); + + } + + public function sairSistema() + { + $this->test->frame(null); + $this->test->byXPath("//a[@id='lnkInfraSairSistema'] | //a[@id='lnkSairSistema']")->click(); + } + + public static function selecionarUnidadeContexto($test, $unidadeContexto) + { + $paginaTeste = new PaginaTeste($test); + $paginaTeste->unidadeContexto($unidadeContexto); + } + + public function pesquisar($termoPesquisa) + { + $this->test->frame(null); + $this->test->byId("txtPesquisaRapida")->value($termoPesquisa); + $this->test->keys(Keys::ENTER); + } + + public function refresh() + { + $this->test->refresh(); + } + +} diff --git a/tests_sei41/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei41/funcional/src/paginas/PaginaTipoProcessoReativar.php index 1829b985b..08825a270 100644 --- a/tests_sei41/funcional/src/paginas/PaginaTipoProcessoReativar.php +++ b/tests_sei41/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -4,30 +4,32 @@ class PaginaTipoProcessoReativar extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarTipoProcessoReativar() + public function navegarTipoProcessoReativar() { - $this->test->byId("txtInfraPesquisarMenu")->value("Reativar Mapeamento de Tipos de Processo"); + $this->test->byId("txtInfraPesquisarMenu")->value("Reativar Mapeamento de Tipos de Processo"); - $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); - } + $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); + } - public function reativarMapeamento() + public function reativarMapeamento() { - $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); - $bolExisteAlerta=$this->alertTextAndClose(); - if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); } + } - public function reativarMapeamentoCheckbox() + 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); + $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_sei41/funcional/src/paginas/PaginaTramitarProcesso.php b/tests_sei41/funcional/src/paginas/PaginaTramitarProcesso.php index 193ff330d..17daacb2b 100755 --- a/tests_sei41/funcional/src/paginas/PaginaTramitarProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaTramitarProcesso.php @@ -1,122 +1,132 @@ -repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } - - return $this->test->byId('selRepositorioEstruturas')->value(); - } - - public function unidade($nomeUnidade, $hierarquia=null) - { - try{ - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $this->unidadeInput =$this->test->byId('txtUnidade'); - } - catch (Exception $e){ - $this->unidadeInput =$this->test->byId('txtUnidade'); - } - - $this->unidadeInput =$this->test->byId('txtUnidade'); - $this->unidadeInput->value($nomeUnidade); - $this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($hierarquia) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->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(); - } - - public function urgente($urgente) - { - $this->urgenteCheck = $this->test->byId('chkSinUrgente'); - if(isset($urgente) && ((!$urgente && $this->urgenteCheck->selected()) || ($urgente && !$this->urgenteCheck->selected()))) - $this->urgenteCheck->click(); - - return $this->urgenteCheck->selected(); - } - - public function tramitar() - { - $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); - $tramitarButton->click(); - } - - public function fecharBarraProgresso() - { - $btnFechar = $this->test->byXPath("//input[@id='btnFechar']"); - $btnFechar->click(); - } - - public function unidadeInterna($nomeUnidade) - { - $this->test->frame(null); - $this->test->frame("ifrConteudoVisualizacao"); - $this->test->frame("ifrVisualizacao"); - $this->unidadeInput =$this->test->byId('txtUnidade'); - $this->unidadeInput->value($nomeUnidade); - //$this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($nomeUnidade) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->value(); - sleep(1); - try{ - $bolExisteAlerta=$this->alertTextAndClose(); - if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); - }catch(Exception $e){ - } - $testCase->byPartialLinkText($nomeUnidade)->click(); - return true; - }, PEN_WAIT_TIMEOUT); - - sleep(1); - return $this->unidadeInput->value(); - } - - public function tramitarInterno() - { - $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); - $tramitarButton->click(); - } - - public function alertTextAndClose($confirm=true) - { - sleep(5); - $result = $this->test->alertText(); - $result = (!is_array($result) ? $result : null); - - if(isset($confirm) && $confirm) - $this->test->acceptAlert(); - else - $this->dismissAlert(); - return $result; - } -} +repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + public function unidade($nomeUnidade, $hierarquia = null) + { + try{ + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $this->unidadeInput =$this->test->byId('txtUnidade'); + } + catch (Exception $e){ + $this->unidadeInput =$this->test->byId('txtUnidade'); + } + + $this->unidadeInput =$this->test->byId('txtUnidade'); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->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(); + } + + public function urgente($urgente) + { + $this->urgenteCheck = $this->test->byId('chkSinUrgente'); + if(isset($urgente) && ((!$urgente && $this->urgenteCheck->selected()) || ($urgente && !$this->urgenteCheck->selected()))) { + $this->urgenteCheck->click(); + } + + return $this->urgenteCheck->selected(); + } + + public function tramitar() + { + $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); + $tramitarButton->click(); + } + + public function fecharBarraProgresso() + { + $btnFechar = $this->test->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } + + public function unidadeInterna($nomeUnidade) + { + $this->test->frame(null); + $this->test->frame("ifrConteudoVisualizacao"); + $this->test->frame("ifrVisualizacao"); + $this->unidadeInput =$this->test->byId('txtUnidade'); + $this->unidadeInput->value($nomeUnidade); + //$this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($nomeUnidade) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + sleep(1); + try{ + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){ + } + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(1); + return $this->unidadeInput->value(); + } + + public function manterAbertoNaUnidadeAtual() + { + $manterAbertoCheckBox = $this->test->byXPath("//label[@id='lblSinManterAberto']"); + $manterAbertoCheckBox->click(); + } + + public function tramitarInterno() + { + $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); + $tramitarButton->click(); + } + + public function alertTextAndClose($confirm = true) + { + sleep(10); + $result = $this->test->alertText(); + $result = (!is_array($result) ? $result : null); + + if(isset($confirm) && $confirm) { + $this->test->acceptAlert(); + } else { + $this->dismissAlert(); + } + return $result; + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaTramitarProcessoEmLote.php b/tests_sei41/funcional/src/paginas/PaginaTramitarProcessoEmLote.php index 572668ea2..3f2124e8c 100755 --- a/tests_sei41/funcional/src/paginas/PaginaTramitarProcessoEmLote.php +++ b/tests_sei41/funcional/src/paginas/PaginaTramitarProcessoEmLote.php @@ -1,64 +1,64 @@ -test->byXPath("//*[@id='imgGeradosCheck']"); - $chkGerados->click(); - } catch(Exception $e){} - - try{ - $chkRecebidos = $this->test->byXPath("//*[@id='imgRecebidosCheck']"); - $chkRecebidos->click(); - } catch(Exception $e){} - }else{ - $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); - $chkProtocolo->click(); - } - - } - - public function navegarControleProcessos() - { - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo em Lote']"); - $this->editarProcessoButton->click(); - } - - public function informacaoLote() - { - return $this->test->byId('divInfraAreaTelaD')->text(); - } - - public function navegarProcessoEmLote($selAndamento, $numProtocolo=null) - { - if(!is_null($selAndamento)){ - $select = $this->test->select($this->test->byId('selAndamento')); - $select->selectOptionByLabel($selAndamento); - } - - if(!is_null($numProtocolo)){ - $this->protocoloInput=$this->test->byId('txtProcedimentoFormatado'); - $this->protocoloInput->value($numProtocolo); - } - - $this->presquisarProcessoButton = $this->test->byXPath("//*[@id='sbmPesquisar']"); - $this->presquisarProcessoButton->click(); - - } -} +test->byXPath("//*[@id='imgGeradosCheck']"); + $chkGerados->click(); + } catch(Exception $e){} + + try{ + $chkRecebidos = $this->test->byXPath("//*[@id='imgRecebidosCheck']"); + $chkRecebidos->click(); + } catch(Exception $e){} + }else{ + $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); + } + + } + + public function navegarControleProcessos() + { + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo em Lote']"); + $this->editarProcessoButton->click(); + } + + public function informacaoLote() + { + return $this->test->byId('divInfraAreaTelaD')->text(); + } + + public function navegarProcessoEmLote($selAndamento, $numProtocolo = null) + { + if(!is_null($selAndamento)){ + $select = $this->test->select($this->test->byId('selAndamento')); + $select->selectOptionByLabel($selAndamento); + } + + if(!is_null($numProtocolo)){ + $this->protocoloInput=$this->test->byId('txtProcedimentoFormatado'); + $this->protocoloInput->value($numProtocolo); + } + + $this->presquisarProcessoButton = $this->test->byXPath("//*[@id='sbmPesquisar']"); + $this->presquisarProcessoButton->click(); + + } +} diff --git a/tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php new file mode 100644 index 000000000..f3b0eec38 --- /dev/null +++ b/tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -0,0 +1,124 @@ +test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); + } + } + + /** + * Selecionar tramite em bloco + * @return void + */ + public function selecionarTramiteEmBloco() + { + $btnTramiteEmBloco = $this->test->byXPath( + "//img[@alt='". mb_convert_encoding("Incluir Processos no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1') ."']" + ); + $btnTramiteEmBloco->click(); + } + + /** + * Seleciona a visualização detalhada do processo. + * + * Este método simula o clique no botão que troca a visualização para + * a opção detalhada. Ele utiliza o XPath para encontrar o botão + * correspondente na interface da aplicação. + * + * @return void + */ + public function selecionarVisualizacaoDetalhada() + { + $btnTramiteEmBloco = $this->test->byXPath('//a[@onclick="trocarVisualizacao(\'D\');"]'); + $btnTramiteEmBloco->click(); + } + + /** + * Seleciona um processo específico com base no número do protocolo formatado. + * + * Este método busca o rótulo que contém o número do protocolo + * fornecido e simula um clique sobre ele para selecionar o processo. + * + * @param string $numProtocoloFormatado O número do protocolo formatado a ser selecionado. + * @return void + */ + public function selecionarProcesso($numProtocoloFormatado) + { + $btnTramiteEmBloco = $this->test->byXPath('//label[@title="' . $numProtocoloFormatado . '"]'); + $btnTramiteEmBloco->click(); + } + + /** + * Verifica o título da página atual. + * + * Este método busca e retorna o texto do título da página + * atual, comparando-o com o título fornecido. Ele é útil para + * garantir que a navegação ocorreu corretamente. + * + * @param string $titulo O título esperado da página. + * @return string O título da página atual. + */ + public function verificarTituloDaPagina($titulo) + { + $tituloDaPagina = $this->test->byXPath('//div[text()="' . $titulo . '"]'); + return $tituloDaPagina->text(); + } + + /** + * Selecionar bloco + * @param string $selAndamento + * @return void + */ + public function selecionarBloco($selAndamento) + { + $select = $this->test->select($this->test->byId('selBlocos')); + $select->selectOptionByValue($selAndamento); + } + + /** + * Clicar em salvar + * @return void + */ + public function clicarSalvar() + { + $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); + $btnSalvar->click(); + } + + /** + * 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() : ""; + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei41/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php index 011872e2a..4666cf75c 100644 --- a/tests_sei41/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php +++ b/tests_sei41/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -4,51 +4,55 @@ class PaginaTramiteMapeamentoOrgaoExterno extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); + parent::__construct($test); - } + } - public function navegarRelacionamentoEntreOrgaos() + public function navegarRelacionamentoEntreOrgaos() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Unidades')); + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1')); - $this->test->byLinkText(utf8_encode('Relacionamento entre Unidades'))->click(); - $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); - } + $this->test->byLinkText(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1'))->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 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 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 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 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); - } + public function selectEstado($estado) { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } } diff --git a/tests_sei41/funcional/src/utils/DatabaseUtils.php b/tests_sei41/funcional/src/utils/DatabaseUtils.php index 6c43f4bd4..a5df11180 100755 --- a/tests_sei41/funcional/src/utils/DatabaseUtils.php +++ b/tests_sei41/funcional/src/utils/DatabaseUtils.php @@ -1,33 +1,33 @@ -connection = new PDO($dns, $user, $password); - } - - - public function execute($sql, $params){ - $statement = $this->connection->prepare($sql); - $result = $statement->execute($params); - return $result; - } - - - public function query($sql, $params){ - $statement = $this->connection->prepare($sql); - $statement->execute($params); - return $statement->fetchAll(); - } - - - public function getBdType(){ - return $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME); - } -} +connection = new PDO($dns, $user, $password); + } + + + public function execute($sql, $params){ + $statement = $this->connection->prepare($sql); + $result = $statement->execute($params); + return $result; + } + + + public function query($sql, $params){ + $statement = $this->connection->prepare($sql); + $statement->execute($params); + return $statement->fetchAll(); + } + + + public function getBdType(){ + return $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME); + } +} diff --git a/tests_sei41/funcional/src/utils/ParameterUtils.php b/tests_sei41/funcional/src/utils/ParameterUtils.php index d91d90ead..6366c7e0b 100755 --- a/tests_sei41/funcional/src/utils/ParameterUtils.php +++ b/tests_sei41/funcional/src/utils/ParameterUtils.php @@ -1,35 +1,35 @@ -databaseUtils = new DatabaseUtils($nomeContexto); - } - - public function getParameter($parameter){ - $result = null; - $query = "SELECT valor FROM md_pen_parametro WHERE nome = ?"; - $values = $this->databaseUtils->query($query, array($parameter)); - - if(isset($values)){ - $result = $values[0]["valor"]; - } - - return $result; - } - - public function setParameter($parameter, $value){ - $query = "UPDATE md_pen_parametro SET valor = ? WHERE nome = ?"; - return $this->databaseUtils->execute($query, array($value, $parameter)); - } -} +databaseUtils = new DatabaseUtils($nomeContexto); + } + + public function getParameter($parameter){ + $result = null; + $query = "SELECT valor FROM md_pen_parametro WHERE nome = ?"; + $values = $this->databaseUtils->query($query, array($parameter)); + + if(isset($values)){ + $result = $values[0]["valor"]; + } + + return $result; + } + + public function setParameter($parameter, $value){ + $query = "UPDATE md_pen_parametro SET valor = ? WHERE nome = ?"; + return $this->databaseUtils->execute($query, array($value, $parameter)); + } +} diff --git a/tests_sei41/funcional/tests/CenarioBaseTestCase.php b/tests_sei41/funcional/tests/CenarioBaseTestCase.php index a6c877908..241afa5d0 100755 --- a/tests_sei41/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei41/funcional/tests/CenarioBaseTestCase.php @@ -43,7 +43,11 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaCadastroMapEnvioCompDigitais = null; protected $paginaExportarTiposProcesso = null; protected $paginaTipoProcessoReativar = null; + protected $paginaCadastrarProcessoEmBloco = null; + protected $paginaTramiteEmBloco = null; protected $paginaEnvioParcialListar = null; + protected $paginaPenHipoteseLegalListar = null; + protected $paginaMapUnidades = null; public function setUpPage(): void { @@ -62,12 +66,17 @@ public function setUpPage(): void $this->paginaCancelarDocumento = new PaginaCancelarDocumento($this); $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); + $this->paginaCadastroMapEnvioCompDigitais = new PaginaCadastroMapEnvioCompDigitais($this); $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this); $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); $this->paginaCadastroMapEnvioCompDigitais = new PaginaCadastroMapEnvioCompDigitais($this); $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); + $this->paginaCadastrarProcessoEmBloco = new PaginaCadastrarProcessoEmBloco($this); + $this->paginaTramiteEmBloco = new PaginaTramiteEmBloco($this); $this->paginaEnvioParcialListar = new PaginaEnvioParcialListar($this); + $this->paginaPenHipoteseLegalListar = new PaginaPenHipoteseLegalListar($this); + $this->paginaMapUnidades = new PaginaMapUnidades($this); $this->currentWindow()->maximize(); } @@ -85,17 +94,26 @@ public static function setUpBeforeClass(): void $bancoOrgaoA->execute("update unidade set sin_envio_processo=? where sigla=?", array('S', 'TESTE_1_2')); // Configuração do mapeamento de unidades - $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000001', CONTEXTO_ORGAO_A_ID_ESTRUTURA)); + putenv("DATABASE_HOST=org1-database"); + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $penMapUnidadesFixture->carregar([ + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, + 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, + ]); + $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); // Configuração do prefíxo de processos $bancoOrgaoA->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_A_NUMERO_SEI, CONTEXTO_ORGAO_A_SIGLA_ORGAO)); $bancoOrgaoA->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_A_SIGLA_UNIDADE)); - $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasPEN'", null); + $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasEnvioPEN'", null); + $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasRecebimentoPEN'", null); // Remoção de mapeamento de espécie não mapeada na origem - $nomeSerieNaoMapeada = utf8_encode(CONTEXTO_ORGAO_A_TIPO_DOCUMENTO_NAO_MAPEADO); + $nomeSerieNaoMapeada = mb_convert_encoding(CONTEXTO_ORGAO_A_TIPO_DOCUMENTO_NAO_MAPEADO, 'UTF-8', 'ISO-8859-1'); $serieNaoMapeadaOrigem = $bancoOrgaoA->query('select ID_SERIE from serie where nome = ?', array($nomeSerieNaoMapeada)); $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); + $bancoOrgaoA->execute("delete from md_pen_rel_doc_map_enviado where id_serie = ?", array($serieNaoMapeadaOrigem[0]["ID_SERIE"])); $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(1, 3, 3, 'E', 'S')); $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(2, 4, 4, 'E', 'S')); @@ -116,18 +134,28 @@ public static function setUpBeforeClass(): void $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); $bancoOrgaoB->execute("update unidade set sin_envio_processo=? where sigla=?", array('S', 'TESTE_1_2')); - $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000001', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA)); + putenv("DATABASE_HOST=org2-database"); + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $penMapUnidadesFixture->carregar([ + 'Id' => CONTEXTO_ORGAO_B_ID_ESTRUTURA, + 'Sigla' => CONTEXTO_ORGAO_B_SIGLA_ESTRUTURA, + 'Nome' => CONTEXTO_ORGAO_B_NOME_UNIDADE, + ]); + putenv("DATABASE_HOST=org1-database"); + $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000002', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)); $bancoOrgaoB->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_B_NUMERO_SEI, CONTEXTO_ORGAO_B_SIGLA_ORGAO)); $bancoOrgaoB->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_B_SIGLA_UNIDADE)); - $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasPEN'", null); + $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasEnvioPEN'", null); + $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasRecebimentoPEN'", null); $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); // Remoção de mapeamento de espécie não mapeada na origem - $nomeSerieNaoMapeada = utf8_encode(CONTEXTO_ORGAO_B_TIPO_DOCUMENTO_NAO_MAPEADO); + $nomeSerieNaoMapeada = mb_convert_encoding(CONTEXTO_ORGAO_B_TIPO_DOCUMENTO_NAO_MAPEADO, 'UTF-8', 'ISO-8859-1'); $serieNaoMapeadaOrigem = $bancoOrgaoB->query('select ID_SERIE from serie where nome = ?', array($nomeSerieNaoMapeada)); $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); + $bancoOrgaoB->execute("delete from md_pen_rel_doc_map_recebido where id_serie = ?", array($serieNaoMapeadaOrigem[0]["ID_SERIE"])); $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(4, 3, 3, 'E', 'S')); $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(5, 3, 3, 'R', 'S')); @@ -200,6 +228,7 @@ protected function definirContextoTeste($nomeContexto) 'SIGLA_UNIDADE_SECUNDARIA' => constant($nomeContexto . '_SIGLA_UNIDADE_SECUNDARIA'), 'SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA' => constant($nomeContexto . '_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'), 'NOME_UNIDADE_SECUNDARIA' => constant($nomeContexto . '_NOME_UNIDADE_SECUNDARIA'), + 'HIPOTESE_RESTRICAO_ID' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_ID'), 'HIPOTESE_RESTRICAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO'), 'HIPOTESE_RESTRICAO_NAO_MAPEADO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_NAO_MAPEADO'), 'REP_ESTRUTURAS' => constant($nomeContexto . '_REP_ESTRUTURAS'), @@ -249,15 +278,6 @@ protected function sairSistema() $this->paginaBase->sairSistema(); } - protected function cadastrarProcesso(&$dadosProcesso) - { - $this->paginaBase->navegarParaControleProcesso(); - $protocoloGerado = PaginaIniciarProcesso::gerarProcessoTeste($this, $dadosProcesso); - $dadosProcesso['PROTOCOLO'] = $protocoloGerado; - sleep(2); - return $protocoloGerado; - } - protected function abrirProcesso($protocolo) { $this->paginaBase->navegarParaControleProcesso(); @@ -274,19 +294,6 @@ protected function abrirProcessoPelaDescricao($descricao) return $protocolo; } - protected function cadastrarDocumentoInterno($dadosDocumentoInterno) - { - $this->paginaProcesso->selecionarProcesso(); - $this->paginaIncluirDocumento->gerarDocumentoTeste($dadosDocumentoInterno); - sleep(2); - } - - protected function cadastrarDocumentoExterno($dadosDocumentoExterno, $comAnexo = true) - { - $this->paginaProcesso->selecionarProcesso(); - $this->paginaIncluirDocumento->gerarDocumentoExternoTeste($dadosDocumentoExterno, $comAnexo); - sleep(2); - } protected function assinarDocumento($siglaOrgao, $cargoAssinante, $loginSenha) { @@ -302,12 +309,6 @@ protected function assinarDocumento($siglaOrgao, $cargoAssinante, $loginSenha) sleep(2); } - protected function anexarProcesso($protocoloProcessoAnexado) - { - $this->paginaProcesso->navegarParaAnexarProcesso(); - $this->paginaAnexarProcesso->anexarProcesso($protocoloProcessoAnexado); - } - protected function tramitarProcessoExternamente($protocolo, $repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) { // Acessar funcionalidade de trâmite externo @@ -345,7 +346,7 @@ protected function tramitarProcessoExternamente($protocolo, $repositorio, $unida $callbackEnvio = $callbackEnvio ?: function ($testCase) { try { $testCase->frame('ifrEnvioProcesso'); - $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); + $mensagemSucesso = mb_convert_encoding('Trâmite externo do processo finalizado com sucesso!', 'UTF-8', 'ISO-8859-1'); $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); $btnFechar->click(); @@ -374,13 +375,16 @@ protected function tramitarProcessoExternamente($protocolo, $repositorio, $unida sleep(1); } - protected function tramitarProcessoInternamente($unidadeDestino) + protected function tramitarProcessoInternamente($unidadeDestino, $manterAbertoNaUnidadeAtual = false) { // Acessar funcionalidade de trâmite interno $this->paginaProcesso->navegarParaTramitarProcessoInterno(); // Preencher parâmetros do trâmite $this->paginaTramitar->unidadeInterna($unidadeDestino); + if ($manterAbertoNaUnidadeAtual) { + $this->paginaTramitar->manterAbertoNaUnidadeAtual(); + } $this->paginaTramitar->tramitarInterno(); sleep(1); @@ -418,7 +422,7 @@ protected function tramitarProcessoInternamenteParaCancelamento($unidadeOrigem, protected function validarRecibosTramite($mensagem, $verificarReciboEnvio, $verificarReciboConclusao) { - $mensagem = utf8_encode($mensagem); + $mensagem = mb_convert_encoding($mensagem, 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($mensagem, $verificarReciboEnvio, $verificarReciboConclusao) { sleep(5); $testCase->refresh(); @@ -447,7 +451,7 @@ protected function validarHistoricoTramite( if ($verificarProcessoRejeitado) { - $motivoRecusa = utf8_encode($motivoRecusa); + $motivoRecusa = mb_convert_encoding($motivoRecusa, 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($unidadeDestino, $motivoRecusa) { sleep(5); $testCase->refresh(); @@ -463,7 +467,7 @@ protected function validarDadosProcesso($descricao, $restricao, $observacoes, $l sleep(2); $this->paginaProcesso->navegarParaEditarProcesso(); $this->paginaEditarProcesso = new PaginaEditarProcesso($this); - $this->assertEquals(utf8_encode($descricao), $this->paginaEditarProcesso->descricao()); + $this->assertEquals(mb_convert_encoding($descricao, 'UTF-8', 'ISO-8859-1'), $this->paginaEditarProcesso->descricao()); $this->assertEquals($restricao, $this->paginaEditarProcesso->restricao()); $listaInteressados = is_array($listaInteressados) ? $listaInteressados : array($listaInteressados); @@ -533,8 +537,8 @@ protected function validarProcessosTramitados($protocolo, $deveExistir) { $this->frame(null); $this->paginaBase->navegarParaControleProcesso(); - $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados Externamente')); - $this->byLinkText("Processos Tramitados Externamente")->click(); + $this->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Processos em Tramitação Externa', 'UTF-8', 'ISO-8859-1')); + $this->byLinkText(mb_convert_encoding("Processos em Tramitação Externa", 'UTF-8', 'ISO-8859-1'))->click(); $this->assertEquals($deveExistir, $this->paginaProcessosTramitadosExternamente->contemProcesso($protocolo)); } @@ -618,74 +622,6 @@ public function gerarDadosDocumentoExternoGrandeTeste($contextoProducao, $nomesA ); } - protected function realizarTramiteExterno(&$processoTeste, $documentosTeste, $remetente, $destinatario, $validarTramite) - { - $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; - - // 1 - Acessar sistema do REMETENTE do processo - $this->acessarSistema($remetente['URL'], $remetente['SIGLA_UNIDADE'], $remetente['LOGIN'], $remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - if (isset($processoTeste['PROTOCOLO'])) { - $strProtocoloTeste = $processoTeste['PROTOCOLO']; - $this->abrirProcesso($strProtocoloTeste); - } else { - $strProtocoloTeste = $this->cadastrarProcesso($processoTeste); - $processoTeste['PROTOCOLO'] = $strProtocoloTeste; - } - - // 3 - Incluir Documentos no Processo - $documentosTeste = array_key_exists('TIPO', $documentosTeste) ? array($documentosTeste) : $documentosTeste; - foreach ($documentosTeste as $doc) { - if ($doc['TIPO'] == 'G') { - $this->cadastrarDocumentoInterno($doc); - $this->assinarDocumento($remetente['ORGAO'], $remetente['CARGO_ASSINATURA'], $remetente['SENHA']); - } else if ($doc['TIPO'] == 'R') { - $this->cadastrarDocumentoExterno($doc); - } - } - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $paginaTramitar = $this->paginaTramitar; - $this->tramitarProcessoExternamente($strProtocoloTeste, $destinatario['REP_ESTRUTURAS'], $destinatario['NOME_UNIDADE'], $destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - - if ($validarTramite) { - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding($destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", $strProtocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$nomeUnidadeDestinatario, true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $deveExistir = $remetente['URL'] != $destinatario['URL']; - $this->validarProcessosTramitados($strProtocoloTeste, $deveExistir); - } - } - - public function realizarTramiteExternoSemvalidacaoNoRemetente(&$processoTeste, $documentosTeste, $remetente, $destinatario) - { - $this->realizarTramiteExterno($processoTeste, $documentosTeste, $remetente, $destinatario, false); - } - - public function realizarTramiteExternoComValidacaoNoRemetente(&$processoTeste, $documentosTeste, $remetente, $destinatario) - { - $this->realizarTramiteExterno($processoTeste, $documentosTeste, $remetente, $destinatario, true); - } - public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste, $documentosTeste, $destinatario, $devolucao = false, $unidadeSecundaria = false) { $strProtocoloTeste = $processoTeste['PROTOCOLO']; @@ -704,7 +640,7 @@ public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTest // 12 - Validar dados do processo $devolucao = $processoTeste['ORIGEM'] == $destinatario['URL']; - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= $processoTeste['TIPO_PROCESSO']; $processoTeste['OBSERVACOES'] = (!$devolucao) ? $strTipoProcesso : $processoTeste['OBSERVACOES']; $this->validarDadosProcesso($processoTeste['DESCRICAO'], $processoTeste['RESTRICAO'], $processoTeste['OBSERVACOES'], $processoTeste['INTERESSADOS']); @@ -781,7 +717,7 @@ protected function selecionarProcessos($numProtocolo=null) protected function visualizarProcessoTramitadosEmLote($test) { $this->paginaBase->navegarParaControleProcesso(); - $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados em Bloco')); + $this->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Processos Tramitados em Bloco', 'UTF-8', 'ISO-8859-1')); $this->byLinkText("Processos Tramitados em Bloco")->click(); } @@ -797,16 +733,4 @@ protected function navegarProcessoEmLote($selAndamento, $numProtocolo=null) $this->paginaTramitarProcessoEmLote->navegarProcessoEmLote($selAndamento, $numProtocolo); } - public function atualizarTramitesPEN($bolOrg1 = true, $bolOrg2 = true, $org2Primeiro = true, $quantidade = 1) - { - /*for($i=0;$i<$quantidade;$i++){ - if($org2Primeiro){ - if($bolOrg2)exec(PEN_SCRIPT_MONITORAMENTO_ORG2); - if($bolOrg1)exec(PEN_SCRIPT_MONITORAMENTO_ORG1); - }else{ - if($bolOrg1)exec(PEN_SCRIPT_MONITORAMENTO_ORG1); - if($bolOrg2)exec(PEN_SCRIPT_MONITORAMENTO_ORG2); - } - }*/ - } -} +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/FixtureCenarioBaseTestCase.php b/tests_sei41/funcional/tests/FixtureCenarioBaseTestCase.php new file mode 100755 index 000000000..8daf39101 --- /dev/null +++ b/tests_sei41/funcional/tests/FixtureCenarioBaseTestCase.php @@ -0,0 +1,331 @@ +buscarHipoteseLegal($dadosProcesso); + } + + $parametros = [ + 'Descricao' => $dadosProcesso['DESCRICAO'] ?: util::random_string(20), + 'Interessados' => $dadosProcesso['INTERESSADOS'] ?: util::random_string(40), + 'IdHipoteseLegal' => $dadosProcesso['HIPOTESE_LEGAL'] ? $objHipLegalDTO->getNumIdHipoteseLegal() : null, + 'StaNivelAcessoLocal' => $dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO, + 'StaNivelAcessoGlobal' => $dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO + ]; + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloDTO = $objProtocoloFixture->carregar($parametros); + $objProcedimentoFixture = new ProcedimentoFixture(); + + $parametrosProcedimento = [ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]; + if (!is_null($dadosProcesso['ID_TIPO_PROCESSO'])) { + $parametrosProcedimento['IdTipoProcedimento'] = $dadosProcesso['ID_TIPO_PROCESSO']; + } + $objProcedimentoDTO = $objProcedimentoFixture->carregar($parametrosProcedimento); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdTarefa' => \TarefaRN::$TI_GERACAO_PROCEDIMENTO, + 'IdUsuarioConclusao' => 100000001 + ]); + + $objContatoFixture = new ContatoFixture(); + $objContatoDTO = $objContatoFixture->carregar([ + 'Nome' => $parametros['Interessados'] + ]); + + if ($cadastrarParticipante) { + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteDTO = $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdContato' => $objContatoDTO->getNumIdContato() + ]); + } + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdAssunto' => 377 + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $dadosProcesso['PROTOCOLO'] = $objProtocoloDTO->getStrProtocoloFormatado(); + + return $objProtocoloDTO; + } + + protected function buscarHipoteseLegal($dados) + { + $param = [ + 'Nome' => trim(explode('(',$dados['HIPOTESE_LEGAL'])[0]), + 'BaseLegal' => explode(')',trim(explode('(',$dados['HIPOTESE_LEGAL'])[1]))[0] + ]; + $objHipLegalFixture = new HipoteseLegalFixture(); + return $objHipLegalFixture->buscar($param)[0]; + } + + protected function cadastrarDocumentoInternoFixture($dadosDocumentoInterno, $idProtocolo, $assinarDocumento = true) + { + + if (!is_null($dadosDocumentoInterno['HIPOTESE_LEGAL'])){ + $objHipLegalDTO = $this->buscarHipoteseLegal($dadosDocumentoInterno); + } + + $dadosDocumentoDTO = [ + 'IdProtocolo' => $idProtocolo, + 'IdProcedimento' => $idProtocolo, + 'Descricao' => $dadosDocumentoInterno['DESCRICAO'], + 'IdHipoteseLegal' => $dadosDocumentoInterno["HIPOTESE_LEGAL"] ? $objHipLegalDTO->getNumIdHipoteseLegal() : null, + 'StaNivelAcessoGlobal' => $dadosDocumentoInterno["RESTRICAO"] ?: \ProtocoloRN::$NA_PUBLICO, + 'StaNivelAcessoLocal' => $dadosDocumentoInterno["RESTRICAO"] ?: \ProtocoloRN::$NA_PUBLICO, + 'IdUnidadeResponsavel' => $dadosDocumentoInterno["UNIDADE_RESPONSAVEL"] ?: null + ]; + + if ($serieDTO = $this->buscarIdSerieDoDocumento($dadosDocumentoInterno['TIPO_DOCUMENTO'])) { + $dadosDocumentoDTO['IdSerie'] = $serieDTO->getNumIdSerie(); + } + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar($dadosDocumentoDTO); + + if ($assinarDocumento) { + //Adicionar assinatura ao documento + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $idProtocolo, + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + } + + return $objDocumentoDTO; + + } + + protected function cadastrarDocumentoExternoFixture($dadosDocumentoExterno, $idProtocolo) + { + $dadosDocumentoDTO = [ + 'IdProtocolo' => $idProtocolo, + 'IdProcedimento' => $idProtocolo, + 'Descricao' => $dadosDocumentoExterno['DESCRICAO'], + 'StaProtocolo' => \ProtocoloRN::$TP_DOCUMENTO_RECEBIDO, + 'StaDocumento' => \DocumentoRN::$TD_EXTERNO, + 'IdConjuntoEstilos' => NULL, + ]; + + if ($serieDTO = $this->buscarIdSerieDoDocumento($dadosDocumentoExterno['TIPO_DOCUMENTO'])) { + $dadosDocumentoDTO['IdSerie'] = $serieDTO->getNumIdSerie(); + } + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar($dadosDocumentoDTO); + + //Adicionar anexo ao documento + $objAnexoFixture = new AnexoFixture(); + $objAnexoFixture->carregar([ + 'IdProtocolo' => $objDocumentoDTO->getDblIdDocumento(), + 'Nome' => basename($dadosDocumentoExterno['ARQUIVO']), + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $idProtocolo, + 'Conclusao' => \InfraData::getStrDataHoraAtual(), + 'IdTarefa' => \TarefaRN::$TI_ARQUIVO_ANEXADO, + 'IdUsuarioConclusao' => 100000001 + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), + 'Nome' => 'ANEXO' + ]); + + return $objDocumentoDTO; + } + + protected function anexarProcessoFixture($protocoloPrincipalId, $protocoloProcessoAnexadoId) + { + // Realizar a anexação de processos + $objAnexoProcessoFixture = new AnexoProcessoFixture(); + $objAnexoProcessoFixture->carregar([ + 'IdProtocolo' => $protocoloPrincipalId, + 'IdDocumento' => $protocoloProcessoAnexadoId, + ]); + } + + protected function consultarProcessoFixture($protocoloFormatado, $staProtocolo = null) + { + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloDTO = $objProtocoloFixture->buscar([ + 'ProtocoloFormatado' => $protocoloFormatado, + 'StaProtocolo' => $staProtocolo ?: \ProtocoloRN::$TP_DOCUMENTO_GERADO, + ]); + return $objProtocoloDTO[0]; + } + + protected function realizarTramiteExternoFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario, $validarTramite) + { + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; + + // 1 - Cadastrar novo processo de teste + if (isset($processoTeste['PROTOCOLO'])) { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + $objProtocoloDTO = $this->consultarProcessoFixture($strProtocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + + } else { + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $strProtocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + $processoTeste['PROTOCOLO'] = $strProtocoloTeste; + } + + // 2 - Incluir Documentos no Processo + $documentosTeste = array_key_exists('TIPO', $documentosTeste) ? array($documentosTeste) : $documentosTeste; + foreach ($documentosTeste as $doc) { + if ($doc['TIPO'] == 'G') { + // cadastra e assina documento interno + $this->cadastrarDocumentoInternoFixture($doc,$objProtocoloDTO->getDblIdProtocolo()); + } else if ($doc['TIPO'] == 'R') { + $this->cadastrarDocumentoExternoFixture($doc, $objProtocoloDTO->getDblIdProtocolo()); + } + } + + // 3 - Acessar sistema do REMETENTE do processo + $this->acessarSistema($remetente['URL'], $remetente['SIGLA_UNIDADE'], $remetente['LOGIN'], $remetente['SENHA']); + + // 4 - Abrir processo + $this->abrirProcesso($strProtocoloTeste); + + // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + $paginaTramitar = $this->paginaTramitar; + $this->tramitarProcessoExternamente($strProtocoloTeste, $destinatario['REP_ESTRUTURAS'], $destinatario['NOME_UNIDADE'], $destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + + if ($validarTramite) { + // 6 - Verificar se situação atual do processo está como bloqueado + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + $unidade = mb_convert_encoding($destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", $strProtocoloTeste, $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + + // 8 - Validar histórico de trâmite do processo + $this->validarHistoricoTramite(self::$nomeUnidadeDestinatario, true, true); + + // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + $deveExistir = $remetente['URL'] != $destinatario['URL']; + $this->validarProcessosTramitados($strProtocoloTeste, $deveExistir); + } + } + + public function realizarTramiteExternoComValidacaoNoRemetenteFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario) + { + $this->realizarTramiteExternoFixture($processoTeste, $documentosTeste, $remetente, $destinatario, true); + } + + public function realizarTramiteExternoSemValidacaoNoRemetenteFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario) + { + $this->realizarTramiteExternoFixture($processoTeste, $documentosTeste, $remetente, $destinatario, false); + } + + protected function buscarIdSerieDoDocumento($tipoDocumento) + { + $serieDTO = new \SerieDTO(); + $serieDTO->setStrNome($tipoDocumento); + $serieDTO->retNumIdSerie(); + $serieDTO->setNumMaxRegistrosRetorno(1); + + $objBD = new \SerieBD(\BancoSEI::getInstance()); + return $objBD->consultar($serieDTO); + } + + protected function atualizarProcessoFixture($objProtocoloDTO, $dadosProcesso = []) + { + if (!is_null($dadosProcesso['DESCRICAO'])) { + $parametros['Descricao'] = $dadosProcesso['DESCRICAO']; + } + + if (!is_null($dadosProcesso['INTERESSADOS'])) { + $parametros['Interessados'] = $dadosProcesso['INTERESSADOS']; + } + + $parametros['IdProtocolo'] = $objProtocoloDTO->getDblIdProtocolo(); + $objProtocoloFixture = new ProtocoloFixture(); + + return $objProtocoloFixture->atualizar($parametros); + } + /** + * Método cadastrarHipoteseLegal + * + * Este método realiza o cadastro de uma hipótese legal para testes de trâmite de processos e documentos. + * Ele recebe um array com os dados da hipótese legal, cria uma nova instância de `HipoteseLegalFixture`, + * e utiliza esses dados para carregar a hipótese legal no sistema. + * + * @param array $hipotesLegal Um array contendo os dados da hipótese legal a ser cadastrada, com as seguintes chaves: + * - `HIPOTESE_LEGAL` (string): O nome da hipótese legal. + * - `HIPOTESE_LEGAL_BASE_LEGAL` (string): A base legal associada à hipótese. + * - `HIPOTESE_LEGAL_DESCRICAO` (string) [opcional]: Uma descrição para a hipótese legal (padrão: 'Nova hipotese legal para testes'). + * - `HIPOTESE_LEGAL_STA_NIVEL_ACESSO` (int) [opcional]: O nível de acesso para a hipótese legal (padrão: nível restrito). + * - `HIPOTESE_LEGAL_SIN_ATIVO` (string) [opcional]: Indicador de atividade da hipótese legal ('S' para ativo por padrão). + * + * @return object $objHipoteseLegalDTO Retorna um objeto `HipoteseLegalDTO` contendo os dados da hipótese legal cadastrada. + */ + protected function cadastrarHipoteseLegal($hipotesLegal) + { + // Criação de uma nova instância de HipoteseLegalFixture + $objHipLegalFixture = new HipoteseLegalFixture(); + + // Definição dos parâmetros para cadastro da hipótese legal + $param = [ + 'Nome' => $hipotesLegal['HIPOTESE_LEGAL'], + 'BaseLegal' => $hipotesLegal['HIPOTESE_LEGAL_BASE_LEGAL'], + 'Descricao' => $hipotesLegal['HIPOTESE_LEGAL_DESCRICAO'] ?? 'Nova hipotese legal para testes', + 'StaNivelAcesso' => $hipotesLegal['HIPOTESE_LEGAL_STA_NIVEL_ACESSO'] ?? \ProtocoloRN::$NA_RESTRITO, + 'SinAtivo' => $hipotesLegal['HIPOTESE_LEGAL_SIN_ATIVO'] ?? "S" + ]; + + // Carregar a hipótese legal com os parâmetros fornecidos + $objHipoteseLegalDTO = $objHipLegalFixture->carregar($param); + + // Retorna o objeto DTO da hipótese legal cadastrada + return $objHipoteseLegalDTO; + } + + protected function cadastrarTipoProcedimentoFixture($dados = []) + { + $objTipoProcedimentoFixture = new TipoProcedimentoFixture(); + $objTipoProcedimentoDTO = $objTipoProcedimentoFixture->carregar([ + 'Nome' => $dados['NOME'] + ]); + + return $objTipoProcedimentoDTO; + } + +} diff --git a/tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php b/tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php new file mode 100644 index 000000000..f7f85352a --- /dev/null +++ b/tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php @@ -0,0 +1,123 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $this->penMapUnidadesFixture = $penMapUnidadesFixture->carregar([ + 'Id' => self::$remetente['ID_ESTRUTURA'], + 'Sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'Nome' => self::$remetente['NOME_UNIDADE'] + ]); + } + + /** + * Teste mapeamento de unidades e limitação dos repositórios para tramite + * + * @return void + */ + public function test_mapeamento_unidades_com_limitacao_de_repositorios() + { + $this->removerRestricaoUnidade(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaMapUnidades->navegarPenMapeamentoUnidades(); + $this->paginaMapUnidades->pesquisarUnidade(self::$remetente['SIGLA_UNIDADE']); + sleep(2); + + $this->paginaMapUnidades->selecionarEditar(); + $this->paginaMapUnidades->limparRestricoes(); + + $this->paginaMapUnidades->selecionarRepoEstruturas(self::$remetente['REP_ESTRUTURAS']); + $this->paginaMapUnidades->selecionarUnidade(self::$remetente['NOME_UNIDADE']); + + $this->paginaMapUnidades->salvar(); + sleep(2); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + 'Mapeamento de Unidade gravado com sucesso.', + $mensagem + ); + $this->sairSistema(); + } + + /** + * Teste para validar se aplicou a restrição de mapeamento de unidades no tramite + * + * @return void + */ + public function test_tramitar_com_limitacao_de_repositorios() + { + $this->criarProcesso(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->abrirProcesso($this->objProtocoloDTO->getStrProtocoloFormatado()); + + $this->paginaProcesso->navegarParaTramitarProcesso(); + $this->paginaMapUnidades->validarRepositorio(self::$remetente['REP_ESTRUTURAS']); + $this->paginaMapUnidades->selecionarUnidade(self::$remetente['NOME_UNIDADE']); + + $this->removerRestricaoUnidade(); + + $this->sairSistema(); + } + + /** + * Criar processo para validar tramitação por Fixture + * + * @return void + */ + private function criarProcesso() + { + // Definição de dados de teste do processo principal + $processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + $this->objProtocoloDTO = $this->cadastrarProcessoFixture($processoTestePrincipal); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $this->objProtocoloDTO->getDblIdProtocolo()); + + } + + /** + * Remover restricao para limpar teste + * + * @return void + */ + private function removerRestricaoUnidade() + { + $penUnidadeRestricaoFixture = new \PenUnidadeRestricaoFixture(); + $penUnidadeRestricaoFixture->remover([ + 'NomeUnidadeRestricao' => self::$remetente['REP_ESTRUTURAS'], + 'NomeUnidadeRHRestricao' => self::$remetente['NOME_UNIDADE'] + ]); + } + +} diff --git a/tests_sei41/funcional/tests/MapeamentoEnvioParcialTest.php b/tests_sei41/funcional/tests/MapeamentoEnvioParcialTest.php index 1aef741ec..309e7b77c 100644 --- a/tests_sei41/funcional/tests/MapeamentoEnvioParcialTest.php +++ b/tests_sei41/funcional/tests/MapeamentoEnvioParcialTest.php @@ -2,8 +2,11 @@ /** * Testes de mapeamento de envio de envio parcial + * + * Execution Groups + * @group execute_alone_group1 */ -class MapeamentoEnvioParcialTest extends CenarioBaseTestCase +class MapeamentoEnvioParcialTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $remetenteB; @@ -43,7 +46,7 @@ public function test_novo_mapeamento_envio_parcial_test() $this->assertNotNull($nomeUnidadeCadastrado); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial cadastrado com sucesso.'), + mb_convert_encoding('Mapeamento de Envio Parcial cadastrado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } @@ -84,7 +87,7 @@ public function test_editar_mapeamento_envio_parcial_test() $this->assertNotNull($nomeUnidadeCadastrado); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial atualizado com sucesso.'), + mb_convert_encoding('Mapeamento de Envio Parcial atualizado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } @@ -172,7 +175,7 @@ public function test_excluir_mapeamento_envio_parcial_test() sleep(1); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento excluído com sucesso.'), + mb_convert_encoding('Mapeamento excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } diff --git a/tests_sei41/funcional/tests/MapeamentoHipoteseLegalTest.php b/tests_sei41/funcional/tests/MapeamentoHipoteseLegalTest.php new file mode 100644 index 000000000..bb93e2fef --- /dev/null +++ b/tests_sei41/funcional/tests/MapeamentoHipoteseLegalTest.php @@ -0,0 +1,37 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaPenHipoteseLegalListar->navegarMapeamentoHipoteseLegalListar(); + $this->assertTrue($this->paginaPenHipoteseLegalListar->existeTabela()); + + $this->sairSistema(); + } +} diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php index a67bd64aa..696b26a21 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoDesativarReativarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoDesativarReativarTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -23,16 +23,18 @@ function setUp(): void self::$remetente = $this->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'] + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -44,10 +46,6 @@ function setUp(): void */ public function test_desativacao_mapeamento_orgao_externo() { - $this->markTestIncomplete( - 'Teste refatorado a partir da entrega 3.7.0.' - ); - $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -60,10 +58,12 @@ public function test_desativacao_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi desativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi desativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -75,10 +75,6 @@ public function test_desativacao_mapeamento_orgao_externo() */ public function test_reativacao_mapeamento_orgao_externo() { - $this->markTestIncomplete( - 'Teste refatorado a partir da entrega 3.7.0.' - ); - $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -91,10 +87,12 @@ public function test_reativacao_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -106,10 +104,6 @@ public function test_reativacao_mapeamento_orgao_externo() */ public function test_desativacao_checkbox_mapeamento_orgao_externo() { - $this->markTestIncomplete( - 'Teste refatorado a partir da entrega 3.7.0.' - ); - $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -122,10 +116,12 @@ public function test_desativacao_checkbox_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi desativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi desativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -137,9 +133,6 @@ public function test_desativacao_checkbox_mapeamento_orgao_externo() */ public function test_reativar_checkbox_mapeamento_orgao_externo() { - $this->markTestIncomplete( - 'Teste refatorado a partir da entrega 3.7.0.' - ); $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -152,9 +145,32 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->buscar([ + 'IdMapeamento' => self::$penOrgaoExternoId + ]); + + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $importacaoTiposProcessoFixture->remover([ + 'Id' => $objPenMapTipoProcedimentoDTO->getDblId() + ]); + } + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); + + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php index 7b439db37..0276282ae 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoExcluirTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoExcluirTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -22,17 +22,19 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -44,10 +46,6 @@ function setUp(): void */ public function test_excluir_mapeamento_orgao_externo() { - $this->markTestIncomplete( - 'Teste refatorado a partir da entrega 3.7.0.' - ); - // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); @@ -57,22 +55,22 @@ public function test_excluir_mapeamento_orgao_externo() self::$remetente['LOGIN'], self::$remetente['SENHA'] ); - $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + sleep(5); $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre unidades foi excluído com sucesso.'), + mb_convert_encoding('Relacionamento entre unidades foi excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); + + $this->sairSistema(); } - function tearDown(): void + public static function tearDownAfterClass(): void { - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); - - parent::tearDown(); + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php index cdc81f23a..9524d5c5c 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -8,7 +8,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoExportarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoExportarTest extends FixtureCenarioBaseTestCase { public static $remetente; @@ -41,6 +41,8 @@ public function test_exportar_tipos_de_processo() ); $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); $this->paginaExportarTiposProcesso->btnExportar(); + + $this->sairSistema(); } /** @@ -62,5 +64,7 @@ public function test_pesquisar_tipos_de_processos() $this->paginaExportarTiposProcesso->selecionarPesquisa(); sleep(1); $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + + $this->sairSistema(); } -} +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php index 11cf7b222..d171c163d 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -7,11 +7,12 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoReativarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoReativarTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; public static $penOrgaoExternoId; + public static $arrImportacaoTiposProcessoId; /** * @inheritdoc @@ -22,23 +23,27 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); - $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); - $importacaoTiposProcessoFixture->cadastrar([ - 'idMapeamento' => self::$penOrgaoExternoId, - 'sinAtivo' => 'N' - ]); + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $tiposProcessos = $this->getTiposProcessos($objPenOrgaoExternoDTO->getDblId(), 'N'); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->carregarVariados($tiposProcessos); + + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + self::$arrImportacaoTiposProcessoId[] = $objPenMapTipoProcedimentoDTO->getDblId(); + } } /** @@ -50,10 +55,6 @@ function setUp(): void */ public function test_reativacao_mapeamento_orgao_externo() { - $this->markTestIncomplete( - 'Teste refatorado a partir da entrega 3.7.0.' - ); - $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -62,14 +63,15 @@ public function test_reativacao_mapeamento_orgao_externo() ); $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.'); + $menssagemValidacao = mb_convert_encoding('Mapeamento de Tipo de Processo foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -81,10 +83,6 @@ public function test_reativacao_mapeamento_orgao_externo() */ public function test_reativar_checkbox_mapeamento_orgao_externo() { - $this->markTestIncomplete( - 'Teste refatorado a partir da entrega 3.7.0.' - ); - $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -93,24 +91,53 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() ); $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.'); + $menssagemValidacao = mb_convert_encoding('Mapeamento de Tipo de Processo foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } public static function tearDownAfterClass(): void { - $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); - $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->buscar([ + 'IdMapeamento' => self::$penOrgaoExternoId + ]); - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $importacaoTiposProcessoFixture->remover([ + 'Id' => $objPenMapTipoProcedimentoDTO->getDblId() + ]); + } + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); + parent::tearDownAfterClass(); } -} + + private function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + return array( + array( + 'IdMapeamento' => $idMapeamento, + 'IdProcedimento' => 100000348, + 'NomeProcedimento' => mb_convert_encoding('Acompanhamento Legislativo: Congresso Nacional', 'UTF-8', 'ISO-8859-1'), + 'SinAtivo' => $sinAtivo + ), + array( + 'IdMapeamento' => $idMapeamento, + 'IdProcedimento' => 100000425, + 'NomeProcedimento' => mb_convert_encoding('mauro teste', 'UTF-8', 'ISO-8859-1'), + 'SinAtivo' => $sinAtivo + ) + ); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php index c307a93ea..bf15fc0b7 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -20,13 +20,6 @@ function setUp(): void { parent::setUp(); self::$remetente = $this->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(); } /** @@ -62,9 +55,11 @@ public function test_cadastrar_novo_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre Unidades cadastrado com sucesso.'), + mb_convert_encoding('Relacionamento entre Unidades cadastrado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); + + $this->sairSistema(); } /** @@ -96,9 +91,11 @@ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Cadastro de relacionamento entre unidades já existente.'), + mb_convert_encoding('Cadastro de relacionamento entre unidades já existente.', 'UTF-8', 'ISO-8859-1'), $mensagem ); + + $this->sairSistema(); } /** @@ -136,13 +133,15 @@ public function test_editar_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre Unidades atualizado com sucesso.'), + mb_convert_encoding('Relacionamento entre Unidades atualizado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); + + $this->sairSistema(); } public static function tearDownAfterClass(): void { parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php index 00dd0b47c..3ad753e1f 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -8,7 +8,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -23,17 +23,19 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -63,13 +65,17 @@ public function test_pesquisar_mapeamento_orgao_externo() $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']); $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); $this->assertNotNull($nomeRepositorioCadastrado); + + $this->sairSistema(); } - function tearDown(): void + public static function tearDownAfterClass(): void { - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); - parent::tearDown(); + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php b/tests_sei41/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php new file mode 100644 index 000000000..2912e6c6a --- /dev/null +++ b/tests_sei41/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php @@ -0,0 +1,96 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $processoTeste = $this->gerarDadosProcessoTeste($remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste($remetente); + + // Cadastrar novo processo de teste e documento + self::$objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, self::$objProtocoloDTO->getDblIdProtocolo()); + + // Cadastrar novo bloco de tramite e insere protocolo + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre processo e tramita internamente ele para a unidade secundária, deixando ele aberto na atual + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + try { + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + } catch (Exception $ex) { + $this->assertStringContainsString( + utf8_encode('Não é possível tramitar um processo aberto em mais de uma unidade.'), + $ex->getMessage() + ); + } + } + + /** + * Teste seguinte que finaliza o processo na unidade atual deixando-o aberto apenas na unidade secundaria + * e tenta executar o tramite em bloco para receber a mensagem de erro + * + * @group mapeamento + * + * @return void + */ + public function test_validar_tramite_bloco_mensagem_nao_possui_andamento_aberto() + { + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre e conclui processo na unidade atual, desta forma ficando aberto apenas na unidade secundaria + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->paginaProcesso->concluirProcesso(); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + try { + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + } catch (Exception $ex) { + $this->assertStringContainsString( + utf8_encode('O processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() . ' não possui andamento aberto nesta unidade'), + $ex->getMessage() + ); + } + } + +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index dfe3006c0..ba6aafd51 100755 --- a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group4 */ -class RecebimentoRecusaJustificativaGrandeTest extends CenarioBaseTestCase +class RecebimentoRecusaJustificativaGrandeTest extends FixtureCenarioBaseTestCase { protected $destinatarioWs; @@ -47,7 +47,7 @@ public function test_tramitar_processo_da_origem() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); @@ -97,7 +97,7 @@ private function recusarTramite($servicoPEN, $id_tramite) $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $id_tramite; - $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); + $parametros->recusaDeTramite->justificativa = mb_convert_encoding($justificativa, 'UTF-8', 'ISO-8859-1'); $parametros->recusaDeTramite->motivo = "99"; return $servicoPEN->recusarTramite($parametros); } diff --git a/tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php b/tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php new file mode 100755 index 000000000..f3eb491a8 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php @@ -0,0 +1,234 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(6, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_situacao_do_processo_no_bloco_status7() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->abrirProcesso($objProtocoloDTO->getStrProtocoloFormatado()); + $this->paginaProcesso->cancelarTramitacaoExterna(); + $this->paginaTramitar->alertTextAndClose(true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(7, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_situacao_do_processo_no_bloco_status9() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoExternoTeste($remetente, 'arquivo_extensao_nao_permitida.docx'); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(9, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + +} diff --git a/tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php b/tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php new file mode 100755 index 000000000..c76e5b886 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php @@ -0,0 +1,95 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals("Aguardando Processamento", $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ])[0]; + + $statusEmAndamento = in_array($objBlocoDeTramiteProtocoloFixtureDTO->getNumIdAndamento(), self::$idsEmAndamento); + $this->assertTrue($statusEmAndamento); + return true; + }, PEN_WAIT_TIMEOUT); + } + +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoCadastroTest.php new file mode 100644 index 000000000..7e37d24e1 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -0,0 +1,74 @@ +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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Bloco de Trâmite externo criado com sucesso!', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + /** + * Teste para editar bloco de trâmite externo já criado + * + * @return void + */ + public function test_editar_bloco_de_tramite() + { + 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->editarBlocoDeTramite('Bloco editado para teste automatizado'); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Bloco de trâmite externo alterado com sucesso!', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php new file mode 100644 index 000000000..8967980f4 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php @@ -0,0 +1,240 @@ +carregar([ + 'Nome' => 'PEN_TIPO_PROCESSO_EXTERNO', + 'Valor' => null + ]); + putenv("DATABASE_HOST=org1-database"); + } + + public function test_tramite_bloco_externo_com_processo_nao_mapeado() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $this->prepararCenariosFixtures(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + // Saída do sistema + $this->sairSistema(); + } + + public function test_verificar_envio_processo() + { + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalEmProcessamento = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + try { + $statusImg = $statusTd->byXPath(mb_convert_encoding(".//img[@title='Aguardando Processamento']", 'UTF-8', 'ISO-8859-1')); + if ($statusImg){ + $totalEmProcessamento++; + } + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada + } + } + $this->assertEquals($totalEmProcessamento,0); // Todos processos enviados + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(5); + } + + public function test_verificar_envio_tramite_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); + + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $quantidadeLinhasRecusadas = $this->paginaCadastrarProcessoEmBloco->buscarQuantidadeProcessosRecusados(); + + $this->assertEquals($quantidadeLinhasRecusadas, 1); + + // Saída do sistema + $this->sairSistema(); + } + + public function test_incluir_processo_recusado_em_novo_bloco() + { + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + self::$objBlocoDeTramiteDTO2 = $objBlocoDeTramiteFixture->carregar(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = self::$objProtocoloDTO3->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Verificação do título da página + $titulo = mb_convert_encoding("Incluir Processo(s) no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'); + $tituloRetorno = $this->paginaTramiteEmBloco->verificarTituloDaPagina($titulo); + $this->assertEquals($titulo, $tituloRetorno); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO2->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Espera para a mensagem de sucesso aparecer + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . self::$objBlocoDeTramiteDTO2->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } + + private function prepararCenariosFixtures() + { + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + self::$objBlocoDeTramiteDTO1 = $objBlocoDeTramiteFixture->carregar(); + + // Geração dos dados para o processo e documento de teste 1 + self::$processoTeste1 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + // Cadastro do processo e documento 1 + self::$objProtocoloDTO1 = $this->cadastrarProcessoFixture(self::$processoTeste1); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, self::$objProtocoloDTO1->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO1->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + + // Geração dos dados para o processo e documento de teste 2 + self::$processoTeste2 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento 2 + self::$objProtocoloDTO2 = $this->cadastrarProcessoFixture(self::$processoTeste2); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$objProtocoloDTO2->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO2->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + + // Geração dos dados para o processo e documento de teste 3 recusa + self::$processoTeste3 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objTipoProcedimentoDTO = $this->cadastrarTipoProcedimentoFixture([ + 'NOME' => 'Recusa: Teste Funcional', + ]); + self::$processoTeste3['ID_TIPO_PROCESSO'] = $objTipoProcedimentoDTO->getNumIdTipoProcedimento(); + + // Cadastro do processo e documento 3 recusa + self::$objProtocoloDTO3 = $this->cadastrarProcessoFixture(self::$processoTeste3); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, self::$objProtocoloDTO3->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO3->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + } + + public static function tearDownAfterClass(): void + { + putenv("DATABASE_HOST=org2-database"); + parent::tearDownAfterClass(); + $objTipoProcessoPadraoFixture = new \TipoProcessoPadraoFixture(); + $objTipoProcessoPadraoFixture->carregar([ + 'Nome' => 'PEN_TIPO_PROCESSO_EXTERNO', + 'Valor' => '100000256' + ]); + putenv("DATABASE_HOST=org1-database"); + } +} diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php new file mode 100644 index 000000000..6ed68cd23 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php @@ -0,0 +1,177 @@ +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'] + ); + + $arrProcessosTestes = $this->cadastrarBlocoComProcessosComEstadoDeTramite(); + + $arrNupsProcessosTestes = array_keys($arrProcessosTestes); + + $strProcessoNaoEnviado = $arrNupsProcessosTestes[0]; + $strProcessoSucesso = $arrNupsProcessosTestes[1]; + $strProcessoCancelado = $arrNupsProcessosTestes[2]; + $strProcessoRecusado = $arrNupsProcessosTestes[3]; + $strProcessoAguardandoProcessamento = $arrNupsProcessosTestes[4]; + + // Testar Inclusão de processo com estado de NÃO ENVIADO no bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoNaoEnviado, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding( + "Prezado(a) usuário(a), o processo " . $strProcessoNaoEnviado + . " encontra-se inserido no bloco" + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de SUCESSO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoSucesso, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de CANCELADO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoCancelado, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de AGUARDANDO PROCESSAMENTO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoAguardandoProcessamento, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding( + "Prezado(a) usuário(a), o processo " . $strProcessoAguardandoProcessamento + . " encontra-se inserido no bloco" + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } + + /** + * Registra um bloco contendo um processo, atribuindo-lhe o estado especificado do processo em um tramite em bloco. + * Estados possíveis: Aberto, Em processamento, Recusado, Cancelado, Sucesso + * + * @return array + */ + private function cadastrarBlocoComProcessosComEstadoDeTramite() + { + $arrEstados = [ + null, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, + ]; + + $arrProcessosComEstado = []; + for ($i = 0; $i < count($arrEstados); $i++) { + + $objProtocoloDTO = $this->cadastrarProcessos(); + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $dadosBlocoProcesso = []; + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + + $arrProcessosComEstado[$protocoloFormatado] = $arrEstados[$i]; + + // Popula o array com os dados necessários para esta iteração + $dadosBlocoProcesso['IdUnidadeOrigem'] = self::$remetente['ID_ESTRUTURA']; + $dadosBlocoProcesso['IdUnidadeDestino'] = self::$destinatario['ID_ESTRUTURA']; + $dadosBlocoProcesso['UnidadeDestino'] = self::$destinatario['NOME_UNIDADE']; + $dadosBlocoProcesso['IdBloco'] = $objBlocoDeTramiteDTO->getNumId(); + $dadosBlocoProcesso['IdProtocolo'] = $objProtocoloDTO->getDblIdProtocolo(); + $dadosBlocoProcesso['IdAndamento'] = $arrEstados[$i]; + + $dadosBlocoProcesso['IdRepositorioOrigem'] = self::$remetente['ID_ESTRUTURA'] ?: null; + $dadosBlocoProcesso['IdRepositorioDestino'] = self::$destinatario['ID_REP_ESTRUTURAS'] ?: null; + $dadosBlocoProcesso['RepositorioDestino'] = self::$remetente['NOME_UNIDADE'] ?: null; + + $this->cadastrarProcessoBlocoDeTramite($dadosBlocoProcesso); + } + + return $arrProcessosComEstado; + } + + private function inserirProcessoEmUmBloco($strProtocoloFormatado, $numIdBloco) + { + $this->paginaBase->navegarParaControleProcesso(); + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + $this->paginaTramiteEmBloco->selecionarProcessos([$strProtocoloFormatado]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($numIdBloco); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + return $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php new file mode 100644 index 000000000..ff03308d5 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php @@ -0,0 +1,172 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar Hipótese Legal não mapeada para tramitar o processo + $objHipoteseLegalDTO = $this->cadastrarHipoteseLegal([ + 'HIPOTESE_LEGAL' => 'Hipotese Legal Recusa Processo', + 'HIPOTESE_LEGAL_BASE_LEGAL' => 'Base Hipotese Legal Recusa Processo' + ]); + $processoTeste["HIPOTESE_LEGAL"] = $objHipoteseLegalDTO->getStrNome(). '('. $objHipoteseLegalDTO->getStrBaseLegal().')'; + $processoTeste["RESTRICAO"] = PaginaIniciarProcesso::STA_NIVEL_ACESSO_RESTRITO; + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Verificar se a mensagem de sucesso foi exibida + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + // Validação: a mensagem de alerta deve conter a hipótese legal não mapeada + $this->assertStringContainsString( + mb_convert_encoding('Hipótese legal "'. $objHipoteseLegalDTO->getStrNome() . '" do processo '.$protocoloFormatado.' não mapeada', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } + + /** + * Teste: Inclusão de documento restrito com hipótese legal não mapeada + * + * Este método testa a inclusão de um documento restrito em um processo com + * uma hipótese legal não mapeada. + * + * Passos do teste: + * - Configuração do cenário de teste com remetente e destinatário. + * - Geração de dados do processo e documento para o teste. + * - Cadastro de uma hipótese legal não mapeada para o documento. + * - Inclusão do documento no bloco de trâmite e verificação da mensagem de alerta. + */ + public function teste_inclusao_de_processo_em_bloco_com_documento_restrito_com_hipotese_legal_nao_mapeada() + { + // Configuração dos dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Cadastrar Hipótese Legal não mapeada para tramitar o documento + $objHipoteseLegalDTO = $this->cadastrarHipoteseLegal([ + 'HIPOTESE_LEGAL' => 'Hipotese Legal Recusa Documento', + 'HIPOTESE_LEGAL_BASE_LEGAL' => 'Base Hipotese Legal Recusa Documento' + ]); + + $documentoTeste["HIPOTESE_LEGAL"] = $objHipoteseLegalDTO->getStrNome(). '('. $objHipoteseLegalDTO->getStrBaseLegal().')'; + $documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; + + // Cadastro do documento restrito + $objDocummentoDTO = $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Verificar se a mensagem de sucesso foi exibida + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + // Validação: a mensagem de alerta deve conter a hipótese legal não mapeada + $numeroDocumento = str_pad($objDocummentoDTO->getDblIdDocumento(), 6, "0", STR_PAD_LEFT); + $this->assertStringContainsString( + mb_convert_encoding('Hipótese legal "'. $objHipoteseLegalDTO->getStrNome() . '" do documento Ofício '.$numeroDocumento.' não mapeada', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } +} diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php new file mode 100644 index 000000000..5cad66c85 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php @@ -0,0 +1,80 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarVisualizacaoDetalhada(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Verificação do título da página + $titulo = mb_convert_encoding("Incluir Processo(s) no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'); + $tituloRetorno = $this->paginaTramiteEmBloco->verificarTituloDaPagina($titulo); + $this->assertEquals($titulo, $tituloRetorno); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Espera para a mensagem de sucesso aparecer + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } +} diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoTest.php new file mode 100644 index 000000000..8f9df00e5 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoTest.php @@ -0,0 +1,156 @@ +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->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + $dados = [ + 'IdUnidade' => 110000002, + 'Descricao' => 'bloco_criado_' . self::$remetente['SIGLA_UNIDADE_SECUNDARIA'] + ]; + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite($dados); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + // etapa 1 + $arrColunaDescricao = $this->elements($this->using('xpath')->value("//td[4]")); + $bolEncontrado = false; + foreach ($arrColunaDescricao as $elemento) { + if (trim($elemento->text()) === self::$objBlocoDeTramiteDTO->getStrDescricao()) { + $bolEncontrado = true; + break; + } + } + + $this->assertTrue($bolEncontrado); + + // etapa 2 + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE']); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + $arrColunaDescricao = $this->elements($this->using('xpath')->value("//td[4]")); + + $bolEncontrado = false; + foreach ($arrColunaDescricao as $elemento) { + if (trim($elemento->text()) === self::$objBlocoDeTramiteDTO->getStrDescricao()) { + $bolEncontrado = true; + break; + } + } + + $this->assertFalse($bolEncontrado); + + $this->sairSistema(); + } + + /** + * Teste Incluir processo já adicionado em outro bloco + * + * @return void + */ + public function test_incluir_processo_em_mais_de_um_bloco() + { + 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'] + ); + self::$objProtocoloDTO = $this->cadastrarProcessos(); + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $dados = [ + 'IdProtocolo' => self::$objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]; + + $this->cadastrarProcessoBlocoDeTramite($dados); + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $this->paginaBase->navegarParaControleProcesso(); + + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding( + 'Prezado(a) usuário(a), o processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem() . ' - ' + . self::$objBlocoDeTramiteDTO->getStrDescricao() + . ' da unidade ' . self::$remetente['SIGLA_UNIDADE'] + . '. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php new file mode 100644 index 000000000..ae069d57f --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php @@ -0,0 +1,147 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + } + + /** + * Teste inicial de trâmite de um processo contendo outro anexado + * + * @group envio + * @large + * + * @return void + */ + public function test_tramitar_processo_anexado_da_origem() + { + // Definição de dados de teste do processo principal + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + } + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + if (self::$tramitar == true) { + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + sleep(10); + } else { + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtyProcessos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtyProcessos, self::$numQtyProcessos); + } + + $this->sairSistema(); + } + + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + if (self::$tramitar == true) { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Concluído'])", 'UTF-8', 'ISO-8859-1')); + } else { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Em aberto'])", 'UTF-8', 'ISO-8859-1')); + } + $totalConcluidos++; + } + $this->assertEquals($totalConcluidos, self::$numQtyProcessos); + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(5); + } + + public function test_verificar_envio_tramite_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); + } else { + $this->assertEquals(mb_convert_encoding("Aberto", 'UTF-8', 'ISO-8859-1'), $novoStatus); + } + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoLimiteTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoLimiteTest.php new file mode 100644 index 000000000..0afa56e49 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoLimiteTest.php @@ -0,0 +1,163 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + public function teste_tramite_bloco_externo() + { + // Definição de dados de teste do processo principal + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + } + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + if (self::$tramitar == true) { + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + sleep(5); + + } else { + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtyProcessos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtyProcessos, self::$numQtyProcessos); + } + + $this->sairSistema(); + } + + /** + * Verificar se o bloco foi enviado + * + * + * @return void + */ + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + if (self::$tramitar == true) { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Concluído'])", 'UTF-8', 'ISO-8859-1')); + } else { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Em aberto'])", 'UTF-8', 'ISO-8859-1')); + } + $totalConcluidos++; + } + $this->assertEquals($totalConcluidos, self::$numQtyProcessos); + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(5); + + $this->sairSistema(); + } + + /** + * Verificar atualização do bloco + * + * + * @return void + */ + public function test_verificar_envio_tramite_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->waitUntil(function ($testCase) { + sleep(5); + $testCase->refresh(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertNotEquals('Aguardando Processamento', $novoStatus); + return true; + }, PEN_WAIT_TIMEOUT); + + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); + } else { + $this->assertEquals("Aberto", $novoStatus); + } + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php new file mode 100644 index 000000000..01902c8da --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php @@ -0,0 +1,113 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + } + + /** + * Teste de inclusão de processo em bloco + * @return void + */ + public function teste_incluir_processo_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + self::$objProtocoloDTO = $this->cadastrarProcessos(); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . self::$objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->paginaBase->sairSistema(); + } + + /** + * Teste de inclusão do mesmo processo em bloco + * @return void + */ + public function teste_mesmo_processo_em_bloco() + { + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + mb_convert_encoding( + 'Prezado(a) usuário(a), o processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco ' . self::$objBlocoDeTramiteDTO->getNumOrdem() . ' - ' + . self::$objBlocoDeTramiteDTO->getStrDescricao() + . ' da unidade ' . self::$objBlocoDeTramiteDTO->getStrSiglaUnidade() + . '. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->paginaBase->sairSistema(); + } + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite() + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar(); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoTest.php new file mode 100644 index 000000000..8fcf31a76 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoTest.php @@ -0,0 +1,69 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + sleep(1); + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoUnidadeTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoUnidadeTest.php new file mode 100644 index 000000000..546b099fc --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoUnidadeTest.php @@ -0,0 +1,103 @@ +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'] + ); + + self::$objProtocoloDTO = $this->cadastrarProcessos(); + + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->assertTrue($this->paginaProcesso->processoAberto()); + + // enviar processo e criar documento na unidade secundária + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + + $this->paginaControleProcesso->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $documentoTeste['UNIDADE_RESPONSAVEL'] = 110000002; + $this->cadastrarDocumentoInternoFixture($documentoTeste, self::$objProtocoloDTO->getDblIdProtocolo()); + + // devolver processo com novo documento + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE']); + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE']); + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + sleep(2); + + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding( + "Processo(s) incluído(s) com sucesso no bloco " . self::$objBlocoDeTramiteDTO->getNumOrdem() + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/tests/TramiteEnvioParcialTest.php b/tests_sei41/funcional/tests/TramiteEnvioParcialTest.php index b207542e4..43f5fd9eb 100644 --- a/tests_sei41/funcional/tests/TramiteEnvioParcialTest.php +++ b/tests_sei41/funcional/tests/TramiteEnvioParcialTest.php @@ -6,216 +6,259 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteEnvioParcialTest extends CenarioBaseTestCase +class TramiteEnvioParcialTest extends FixtureCenarioBaseTestCase { - public static $remetente; - public static $destinatario; - public static $processoTestePrincipal; - public static $protocoloTestePrincipal; - public static $documentoTeste1; - public static $documentoTeste2; - - /** - * @inheritdoc - * @return void - */ - function setUp(): void - { - parent::setUp(); - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - } + private $objProtocoloFixture; + public static $remetente; + public static $destinatario; + public static $processoTestePrincipal; + public static $protocoloTestePrincipal; + public static $documentoTeste1; + public static $documentoTeste2; + public static $arrIdMapEnvioParcialOrgaoA; + public static $arrIdMapEnvioParcialOrgaoB; - /** - * Mapeamento do Envio Parcial no Remetente (Orgão 1) e Destinatário (Orgão 2) - * - * @group mapeamento - * - * @return void - */ - public function test_novo_mapeamento_envio_parcial_test() - { - - // Mapeamento do Envio Parcial no Remetente - $this->acessarSistema( - self::$remetente['URL'], - self::$remetente['SIGLA_UNIDADE'], - self::$remetente['LOGIN'], - self::$remetente['SENHA'] - ); - - $this->paginaEnvioParcialListar->navegarEnvioParcialListar(); - $this->paginaCadastroMapEnvioCompDigitais->excluirMapeamentosExistentes(); - - $this->paginaCadastroMapEnvioCompDigitais->novo(); - $this->paginaCadastroMapEnvioCompDigitais->setarParametros( - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'] - ); - $this->paginaCadastroMapEnvioCompDigitais->salvar(); - - sleep(1); - // buscar e fechar mensagem de sucesso antes de validar os elementos de tela - // frame/alert sobrepõem os elementos da tela - $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); - $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial cadastrado com sucesso.'), - $mensagem - ); - - // valida se o mapeamento foi realizado no Órgão 1 - $nomeRepositorioCadastrado = $this->paginaCadastroMapEnvioCompDigitais->buscarNome(self::$destinatario['REP_ESTRUTURAS']); - $nomeUnidadeCadastrado = $this->paginaCadastroMapEnvioCompDigitais->buscarNome(self::$destinatario['NOME_UNIDADE']); - $this->assertNotNull($nomeRepositorioCadastrado); - $this->assertNotNull($nomeUnidadeCadastrado); - - // Mapeamento do Envio Parcial no Destinatário - $this->acessarSistema( - self::$destinatario['URL'], - self::$destinatario['SIGLA_UNIDADE'], - self::$destinatario['LOGIN'], - self::$destinatario['SENHA'] - ); - - $this->paginaEnvioParcialListar->navegarEnvioParcialListar(); - $this->paginaCadastroMapEnvioCompDigitais->excluirMapeamentosExistentes(); - - $this->paginaCadastroMapEnvioCompDigitais->novo(); - $this->paginaCadastroMapEnvioCompDigitais->setarParametros( - self::$remetente['REP_ESTRUTURAS'], - self::$remetente['NOME_UNIDADE'] - ); - $this->paginaCadastroMapEnvioCompDigitais->salvar(); - - sleep(1); - // buscar e fechar mensagem de sucesso antes de validar os elementos de tela - // frame/alert sobrepõem os elementos da tela - $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); - $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial cadastrado com sucesso.'), - $mensagem - ); - - // valida se o mapeamento foi realizado no Órgão 2 - $nomeRepositorioCadastrado = $this->paginaCadastroMapEnvioCompDigitais->buscarNome(self::$remetente['REP_ESTRUTURAS']); - $nomeUnidadeCadastrado = $this->paginaCadastroMapEnvioCompDigitais->buscarNome(self::$remetente['NOME_UNIDADE']); - $this->assertNotNull($nomeRepositorioCadastrado); - $this->assertNotNull($nomeUnidadeCadastrado); - } + /** + * @inheritdoc + * @return void + */ + function setUp(): void + { + parent::setUp(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } - /* + /* * Tramitar processo para o Órgão 2 com envio parcial mapeado * @group mapeamento * * @return void */ - public function test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial() - { - $this->acessarSistema( - self::$remetente['URL'], - self::$remetente['SIGLA_UNIDADE'], - self::$remetente['LOGIN'], - self::$remetente['SENHA'] - ); - - self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - - self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste1); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - } + public function test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial() + { + $this->criarCenarioTramiteEnvioParcialTest(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTestePrincipal->getStrProtocoloFormatado()); + $this->tramitarProcessoExternamente( + self::$protocoloTestePrincipal, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); - /* - * Verificação de processo recebido no Órgão 2 com envio parcial mapeado + $this->sairSistema(); + } + + /* + * Verificar processo recebido no Órgão 2 com envio parcial mapeado * @group mapeamento * + * @depends test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial * @return void */ - public function test_verificar_processo_recebido_tramitar_destinatario_envio_parcial() - { - $documentos = array(self::$documentoTeste1); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTestePrincipal, $documentos, self::$destinatario); - } + public function test_verificar_processo_recebido_tramitar_destinatario_envio_parcial() + { + $strProtocoloTeste = self::$protocoloTestePrincipal->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); - /* - * Devolução do processo ao Órgão 1 com envio parcial mapeado + $this->paginaBase->navegarParaControleProcesso(); + $this->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $testCase->refresh(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; + self::$processoTestePrincipal['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTestePrincipal['DESCRICAO'], + self::$processoTestePrincipal['RESTRICAO'], + self::$processoTestePrincipal['OBSERVACOES'], + array(self::$processoTestePrincipal['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + $this->assertTrue(count($listaDocumentos) == 1); + + $this->sairSistema(); + } + + /* + * Devolver processo ao Órgão 1 com envio parcial mapeado * @group mapeamento * + * @depends test_verificar_processo_recebido_tramitar_destinatario_envio_parcial * @return void */ - public function test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial() - { - $this->acessarSistema( - self::$destinatario['URL'], - self::$destinatario['SIGLA_UNIDADE'], - self::$destinatario['LOGIN'], - self::$destinatario['SENHA'] - ); - - $this->abrirProcesso(self::$protocoloTestePrincipal); - - self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$destinatario); - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$destinatario['ORGAO'], self::$destinatario['CARGO_ASSINATURA'], self::$destinatario['SENHA']); - - $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$remetente['REP_ESTRUTURAS'], self::$remetente['NOME_UNIDADE'], self::$remetente['SIGLA_UNIDADE_HIERARQUIA'], false); - } + public function test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial() + { + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + putenv("DATABASE_HOST=org2-database"); + + $this->paginaBase->navegarParaControleProcesso(); + + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$destinatario); + $protocoloTestePrincipalOrg2 = $this->consultarProcessoFixture(self::$protocoloTestePrincipal->getStrProtocoloFormatado(), \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $protocoloTestePrincipalOrg2->getDblIdProtocolo()); + + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTestePrincipal->getStrProtocoloFormatado()); + + sleep(5); - /* - * Verificação de processo recebido no Órgão 1 com envio parcial mapeado + $this->tramitarProcessoExternamente( + self::$protocoloTestePrincipal, + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE'], + self::$remetente['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + + $this->sairSistema(); + } + + /* + * Verificar processo recebido no Órgão 1 com envio parcial mapeado * @group mapeamento * + * @depends test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial * @return void */ - public function test_verificar_processo_recebido_tramitar_remetente_envio_parcial() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTestePrincipal, $documentos, self::$remetente); + public function test_verificar_processo_recebido_tramitar_remetente_envio_parcial() + { + $strProtocoloTeste = self::$protocoloTestePrincipal->getStrProtocoloFormatado(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $testCase->refresh(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; + self::$processoTestePrincipal['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTestePrincipal['DESCRICAO'], + self::$processoTestePrincipal['RESTRICAO'], + self::$processoTestePrincipal['OBSERVACOES'], + array(self::$processoTestePrincipal['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + $this->assertTrue(count($listaDocumentos) == 2); + + $documentosTeste = array(self::$documentoTeste1, self::$documentoTeste2); + for ($i = 0; $i < count($listaDocumentos); $i++) { + $this->validarDadosDocumento($listaDocumentos[$i], $documentosTeste[$i], self::$remetente, false, null); } + + $this->sairSistema(); + } - /** - * Excluir mapeamento de envio parcial no remetente e destinatário - * + /** + * Excluir mapeamentos de Envio Parcial no Remetente e Destinatário + * @group mapeamento + */ + public static function tearDownAfterClass(): void + { + $penMapEnvioParcialFixture = new \PenMapEnvioParcialFixture(); + + putenv("DATABASE_HOST=org1-database"); + foreach (self::$arrIdMapEnvioParcialOrgaoA as $idMapEnvioParcial) { + $penMapEnvioParcialFixture->remover([ + 'Id' => $idMapEnvioParcial + ]); + } + + putenv("DATABASE_HOST=org2-database"); + foreach (self::$arrIdMapEnvioParcialOrgaoB as $idMapEnvioParcial) { + $penMapEnvioParcialFixture->remover([ + 'Id' => $idMapEnvioParcial + ]); + } + putenv("DATABASE_HOST=org1-database"); + parent::tearDownAfterClass(); + } + + /* + * Criar processo e mapear Envio Parcial no Remetente e Destinatário * @group mapeamento * * @return void */ - public function test_excluir_mapeamento_envio_parcial_test() - { - // Excluir mapeamento de envio parcial no remetente - $this->acessarSistema( - self::$remetente['URL'], - self::$remetente['SIGLA_UNIDADE'], - self::$remetente['LOGIN'], - self::$remetente['SENHA'] - ); - - $this->paginaEnvioParcialListar->navegarEnvioParcialListar(); - $this->paginaCadastroMapEnvioCompDigitais->excluirMapeamentosExistentes(); - - // Excluir mapeamento de envio parcial no destinatário - $this->acessarSistema( - self::$destinatario['URL'], - self::$destinatario['SIGLA_UNIDADE'], - self::$destinatario['LOGIN'], - self::$destinatario['SENHA'] - ); - - $this->paginaEnvioParcialListar->navegarEnvioParcialListar(); - $this->paginaCadastroMapEnvioCompDigitais->excluirMapeamentosExistentes(); - - $this->sairSistema(); - } + private function criarCenarioTramiteEnvioParcialTest() + { + self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - /** - * @group mapeamento - */ - public static function tearDownAfterClass(): void - { - parent::tearDownAfterClass(); - } -} \ No newline at end of file + self::$protocoloTestePrincipal = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, self::$protocoloTestePrincipal->getDblIdProtocolo()); + + // Mapear Envio Parcial no Remetente + self::$arrIdMapEnvioParcialOrgaoA = array(); + putenv("DATABASE_HOST=org1-database"); + $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); + $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ + 'IdEstrutura' => self::$destinatario['ID_REP_ESTRUTURAS'], + 'StrEstrutura' => self::$destinatario['REP_ESTRUTURAS'], + 'IdUnidadePen' => self::$destinatario['ID_ESTRUTURA'], + 'StrUnidadePen' => self::$destinatario['NOME_UNIDADE'] + ]); + self::$arrIdMapEnvioParcialOrgaoA[] = $objMapEnvioParcial->getDblId(); + + // Mapear Envio Parcial no Destinatário + self::$arrIdMapEnvioParcialOrgaoB = array(); + putenv("DATABASE_HOST=org2-database"); + $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); + $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ + 'IdEstrutura' => self::$remetente['ID_REP_ESTRUTURAS'], + 'StrEstrutura' => self::$remetente['REP_ESTRUTURAS'], + 'IdUnidadePen' => self::$remetente['ID_ESTRUTURA'], + 'StrUnidadePen' => self::$remetente['NOME_UNIDADE'] + ]); + self::$arrIdMapEnvioParcialOrgaoB[] = $objMapEnvioParcial->getDblId(); + + putenv("DATABASE_HOST=org1-database"); + } +} diff --git a/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php b/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php index e9604e732..1223a42fe 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteProcessoAnexadoComDevolucaoTest extends CenarioBaseTestCase +class TramiteProcessoAnexadoComDevolucaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -37,31 +37,37 @@ public function test_tramitar_processo_anexado_da_origem() // Definição de dados de teste do processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Definição de dados de teste do processo a ser anexado self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento1DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + $objDocumento2DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento3DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $objDocumento4DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + + // Preencher variaveis que serão usadas posteriormente nos testes + self::$documentoTeste1['ARQUIVO'] = str_pad($objDocumento1DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste2['ARQUIVO'] = str_pad($objDocumento2DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste3['ARQUIVO'] = str_pad($objDocumento3DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste4['ARQUIVO'] = str_pad($objDocumento4DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + // Realizar a anexação de processos + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste anexado e incluir documentos relacionados - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); - - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -71,9 +77,9 @@ public function test_tramitar_processo_anexado_da_origem() self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false ); + } - /** * Teste de verificação do correto envio do processo anexado no sistema remetente * @@ -94,10 +100,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -127,8 +132,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -144,7 +148,7 @@ public function test_verificar_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(3, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->paginaProcesso->selecionarDocumento(self::$protocoloTesteAnexado); $this->assertTrue($this->paginaDocumento->ehProcessoAnexado()); @@ -157,7 +161,6 @@ public function test_verificar_destino_processo_anexado() $this->validarDadosDocumento($listaDocumentosProcessoAnexado[1], self::$documentoTeste4, self::$destinatario); } - /** * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem * @@ -172,18 +175,29 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - + // Definição de dados de teste do processo principal self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente,'arquivo_pequeno_A.pdf'); + + // Selecionar banco do org2 para fazer inserção dos documentos + putenv("DATABASE_HOST=org2-database"); + + // Busca ID que Protocolo principal recebeu no org2 + $objProtocoloPrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + + //Incluir novos documentos relacionados + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloPrincipalOrg2DTO->getDblIdProtocolo()); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste6, $objProtocoloPrincipalOrg2DTO->getDblIdProtocolo()); + + + //Fim das operações no BD do org2 + putenv("DATABASE_HOST=org1-database"); // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Incluir novos documentos relacionados $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); - $this->cadastrarDocumentoExterno(self::$documentoTeste6); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -209,15 +223,15 @@ public function test_devolucao_processo_para_origem() public function test_verificar_devolucao_origem_processo_anexado() { $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -243,10 +257,8 @@ public function test_verificar_devolucao_origem_processo_anexado() public function test_verificar_devolucao_destino_processo_anexado() { $strProtocoloTeste = self::$protocoloTestePrincipal; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); + $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); $this->validarDadosProcesso( @@ -262,7 +274,7 @@ public function test_verificar_devolucao_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(5, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[3], self::$documentoTeste5, self::$destinatario); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[4], self::$documentoTeste6, self::$destinatario); diff --git a/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php b/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php index 5ebaa1cfc..2f79fb1a3 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group2 */ -class TramiteProcessoAnexadoTest extends CenarioBaseTestCase +class TramiteProcessoAnexadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,32 +36,37 @@ public function test_tramitar_processo_anexado_da_origem() // Definição de dados de teste do processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Definição de dados de teste do processo a ser anexado self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento1DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + $objDocumento2DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento3DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $objDocumento4DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + + // Preencher variaveis que serão usadas posteriormente nos testes + self::$documentoTeste1['ARQUIVO'] = str_pad($objDocumento1DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste2['ARQUIVO'] = str_pad($objDocumento2DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste3['ARQUIVO'] = str_pad($objDocumento3DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste4['ARQUIVO'] = str_pad($objDocumento4DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + // Realizar a anexação de processos + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste anexado e incluir documentos relacionados - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); - - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); - + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -71,9 +76,9 @@ public function test_tramitar_processo_anexado_da_origem() self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false ); + } - - + /** * Teste de verificação do correto envio do processo anexado no sistema remetente * @@ -94,10 +99,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -109,7 +113,7 @@ public function test_verificar_origem_processo_anexado() $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); $this->validarProcessosTramitados(self::$protocoloTestePrincipal, $orgaosDiferentes); } - + /** * Teste de verificação do correto recebimento do processo anexado no destinatário * @@ -127,7 +131,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -143,7 +147,7 @@ public function test_verificar_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(3, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->paginaProcesso->selecionarDocumento(self::$protocoloTesteAnexado); $this->assertTrue($this->paginaDocumento->ehProcessoAnexado()); diff --git a/tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php b/tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php new file mode 100755 index 000000000..aebc5bbaf --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php @@ -0,0 +1,294 @@ +execute("update infra_parametro set valor = ? where nome = ?", array(2, 'SEI_TAM_MB_DOC_EXTERNO')); + + } + + /** + * Volta tamanho de doc externo no ORG2 para default + */ + public static function tearDownAfterClass() : void { + + $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); + $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); + + } + + function setUp(): void + { + parent::setUp(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + /** + * Tramite para obter posteriormente processo com status cancelado + */ + public function test_tramite_contendo_documento_interno() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste1, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; + } + + + /** + * Troca ordenação de documento para ao tramitar obter status cancelado + * @depends test_tramite_contendo_documento_interno + */ + public function test_trocar_ordenacao_documento() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); + + // Definição de dados de teste + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloDTO->getDblIdProtocolo()); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); + + // Validação dos dados do processo principal + try { + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcesso)); + $this->validarDadosDocumento($listaDocumentosProcesso[0], self::$documentoTeste1, self::$remetente); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$remetente); + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada] + print_r($listaDocumentosProcesso); + } + + + $this->paginaProcesso->selecionarProcesso(); + $this->paginaProcesso->navegarParaOrdenarDocumentos(); + sleep(1); + $this->paginaProcesso->trocarOrdenacaoDocumentos(); + + // Validação dos dados do processo principal + try { + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcesso)); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste1, self::$remetente); + $this->validarDadosDocumento($listaDocumentosProcesso[0], self::$documentoTeste2, self::$remetente); + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada] + print_r($listaDocumentosProcesso); + } + sleep(1); + $this->sairSistema(); + + } + + /** + * Inclui processos ao bloco de tramite, excluir e adiciona novamente + * @depends test_trocar_ordenacao_documento + */ + public function test_criar_excluir_processos_em_bloco_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); + + // Definição de dados de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $arrProtocolos = array(); + // cancelado + $objProtocoloDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + $arrProtocolos[] = $objProtocoloDTO; + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + // sucesso + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + $arrProtocolos[] = $objProtocoloDTO; + + } + + // recusado + $documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_003.pdf'); + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste3, $objProtocoloDTO->getDblIdProtocolo()); + $arrProtocolos[] = $objProtocoloDTO; + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + + foreach ($arrProtocolos as $objProtocoloDTO) { + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + } + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + sleep(1); + + // Executa remoção de protocolos do bloco e verifica status + $this->paginaCadastrarProcessoEmBloco->btnSelecionarTodosProcessos(); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorExcluir(); + $qtdProcessoBloco = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + $this->assertEquals($qtdProcessoBloco, 0); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorFechar(); + sleep(1); + + $linhasDaTabela = $this->elements($this->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + foreach ($linhasDaTabela as $linha) { + $numOrdem = $linha->byXPath('./td[2]')->text(); + if ($numOrdem == $objBlocoDeTramiteDTO->getNumOrdem()) { + $status = $linha->byXPath('./td[3]')->text(); + $this->assertEquals($status, 'Aberto'); + $this->assertEquals($objBlocoDeTramiteDTO->getStrStaEstado(), 'A'); + break; + } + } + + // Adiciona novamente protocolos ao bloco + foreach ($arrProtocolos as $objProtocoloDTO) { + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + } + + $this->sairSistema(); + } + + /** + * Tramitar bloco externamente + * @depends test_criar_excluir_processos_em_bloco_externo + */ + public function test_tramite_bloco_externo() + { + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + // Tramitar Bloco + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + } + + + /** + * Verificar se o bloco foi enviado + * @depends test_tramite_bloco_externo + * @return void + */ + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + try { + $statusImg = $statusTd->byXPath(mb_convert_encoding(".//img[@title='Concluído']", 'UTF-8', 'ISO-8859-1')); + if ($statusImg){ + $totalConcluidos++; + } + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada + } + } + $this->assertEquals($totalConcluidos,self::$numQtyProcessos); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); + } + /** + * Verificar se é possivel excluir processos do bloco após tramite + * @depends test_verificar_envio_processo + * @return void + */ + public function test_verificar_possivel_exclusao_processo_bloco() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtdProcessoBloco = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->paginaCadastrarProcessoEmBloco->btnSelecionarTodosProcessos(); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorExcluir(); + $qtdProcessoBlocoPos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtdProcessoBloco,$qtdProcessoBlocoPos); + + sleep(2); + + $this->sairSistema(); + } + +} diff --git a/tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php b/tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php new file mode 100755 index 000000000..3e1e44bf1 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php @@ -0,0 +1,172 @@ +carregar(); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_documento_nao_assinado() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo(), false); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processos com documentos gerados e não assinados', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar mensagem de processo bloqueado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_bloqueado() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("update protocolo set sta_estado=? where id_protocolo=?", array(4, $objProtocoloDTO->getDblIdProtocolo())); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Prezado(a) usuário(a), o processo ' . $objProtocoloDTO->getStrProtocoloFormatado() . ' encontra-se bloqueado. Dessa forma, não foi possível realizar a sua inserção no bloco selecionado.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar a mensagem de processo aberto em mais de uma unidade ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_aberto_em_mais_de_uma_unidade() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso($objProtocoloDTO->getStrProtocoloFormatado()); + + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processo aberto em mais de uma unidade.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + $this->assertStringContainsString( + mb_convert_encoding('Processo ' . $objProtocoloDTO->getStrProtocoloFormatado() . ' está aberto na(s) unidade(s): ' . self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar a mensagem de processo sem documentos nao pode ser incluido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_sem_documento() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processo sem documentos', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } +} diff --git a/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php index aa8c96d79..f32641701 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_without_receiving */ -class TramiteProcessoComCancelamentoTest extends CenarioBaseTestCase +class TramiteProcessoComCancelamentoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -32,19 +32,12 @@ public function test_cancelamento_tramite_contendo_documento_interno() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false - ); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $this->paginaProcesso->cancelarTramitacaoExterna(); $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); + $mensagemEsperada = mb_convert_encoding("O trâmite externo do processo foi cancelado com sucesso!", 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); $this->assertFalse($this->paginaProcesso->processoBloqueado()); $this->assertTrue($this->paginaProcesso->processoAberto()); @@ -95,18 +88,12 @@ public function test_cancelamento_tramite_contendo_documento_externo() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_001.pdf'); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); - - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false - ); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $this->paginaProcesso->cancelarTramitacaoExterna(); $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); + $mensagemEsperada = mb_convert_encoding("O trâmite externo do processo foi cancelado com sucesso!", 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); $this->assertFalse($this->paginaProcesso->processoBloqueado()); $this->assertTrue($this->paginaProcesso->processoAberto()); diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php index 097b5295d..9b0848036 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoComDevolucaoAlteracaoURLTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoAlteracaoURLTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -58,7 +58,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -98,7 +98,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } @@ -136,6 +137,7 @@ public function test_tramitar_processo_da_origem_novo_url() self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$documentoTeste5 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + putenv("DATABASE_HOST=org1-database"); $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); $result=$bancoOrgaoA->query("SELECT texto FROM tarja_assinatura where sta_tarja_assinatura=? and sin_ativo=?", array("V","S")); @@ -154,7 +156,7 @@ public function test_tramitar_processo_da_origem_novo_url() $bancoOrgaoA->execute("update tarja_assinatura set texto=? where sta_tarja_assinatura=? and sin_ativo=?", array($strTarja,"V","S")); $documentos = array(self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php index 4774100f4..d0335677a 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php @@ -10,7 +10,7 @@ * Execution Groups * @group execute_alone_group5 */ -class TramiteProcessoComDevolucaoAnexadoOutroTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoAnexadoOutroTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -48,7 +48,8 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -84,15 +85,14 @@ public function test_devolucao_processo_anexado_em_outro_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + // Selecionar banco do org2 para fazer inserção dos documentos + putenv("DATABASE_HOST=org2-database"); self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + // Busca ID que Protocolo principal recebeu no org2 + $objProtocoloAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); // Gerar dados de testes para representar o processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); @@ -100,14 +100,23 @@ public function test_devolucao_processo_anexado_em_outro_para_origem() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); // Cadastra processo principal, seus documentos e anexa processo recebido anteriormente - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + + // Cadastra e assina + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4,$objProtocoloPrincipalDTO->getDblIdProtocolo()); - $this->anexarProcesso(self::$protocoloTesteAnexado); + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre processo principal para tramitar + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -138,10 +147,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php index 3c98266ff..7dd5d7fd4 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_alone_group5 */ -class TramiteProcessoComDevolucaoContendoOutroAnexadoTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoContendoOutroAnexadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,12 +36,6 @@ class TramiteProcessoComDevolucaoContendoOutroAnexadoTest extends CenarioBaseTes */ public function test_tramitar_processo_da_origem() { - if(ENVIO_PARCIAL){ - $this->markTestIncomplete( - 'Teste com erro. Será refatorado em momento oportuno.' - ); - } - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); @@ -51,7 +45,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComvalidacaoNoRemetenteFixture(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); self::$protocoloTestePrincipal = self::$processoTestePrincipal["PROTOCOLO"]; } @@ -87,9 +81,7 @@ public function test_devolucao_processo_contendo_outro_anexado_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + putenv("DATABASE_HOST=org2-database"); // Gerar dados de testes para representar o processo principal self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); @@ -97,18 +89,23 @@ public function test_devolucao_processo_contendo_outro_anexado_para_origem() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); // Cadastra processo anexado, seus documentos e anexar ao processo principal recebido anteriormente - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTesteAnexado); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloAnexadoDTO->getDblIdProtocolo()); // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->anexarProcesso(self::$protocoloTesteAnexado); + $objProtocoloPrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTestePrincipal); - // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], @@ -139,10 +136,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoTest.php index db71d4b6c..a1c428bc6 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessoComDevolucaoTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,7 +36,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -77,7 +77,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php index 176c258ca..e96fb4943 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoComDevolucaoUnidadeDiferenteTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoUnidadeDiferenteTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,7 +36,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -82,7 +82,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php index a3266fab3..5690f39bd 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessoComDocumentoRestritoHipotesePadraoTest extends CenarioBaseTestCase +class TramiteProcessoComDocumentoRestritoHipotesePadraoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -30,26 +30,12 @@ public function test_tramitar_processo_com_documento_restrito_hipotese_nao_mapea self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Configuração de documento restrito - self::$documentoTeste["RESTRICAO"] = PaginaIncluirDocumento::STA_NIVEL_ACESSO_RESTRITO; + self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO_NAO_MAPEADO"]; - - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -74,10 +60,9 @@ public function test_verificar_origem_processo_com_documento_restrito_hipotese_n // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -118,7 +103,7 @@ public function test_verificar_destino_processo_com_documento_restrito_hipotese_ $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php index acf44053d..02e72901f 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php @@ -4,130 +4,158 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessoComDocumentoRestritoTest extends CenarioBaseTestCase +class TramiteProcessoComDocumentoRestritoTest extends FixtureCenarioBaseTestCase { - public static $remetente; - public static $destinatario; - public static $processoTeste; - public static $documentoTeste; - public static $protocoloTeste; - - /** - * Teste de trâmite externo de processo com documentos restritos - * - * @group envio - * @large - * - * @Depends CenarioBaseTestCase::setUpBeforeClass - * - * @return void - */ - public function test_tramitar_processo_com_documento_restrito() - { - // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // Configuração de documento restrito - self::$documentoTeste["RESTRICAO"] = PaginaIncluirDocumento::STA_NIVEL_ACESSO_RESTRITO; - self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO"]; - - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_com_documento_restrito - * - * @return void - */ - public function test_verificar_origem_processo_com_documento_restrito() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - - /** - * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo_com_documento_restrito - * - * @return void - */ - public function test_verificar_destino_processo_com_documento_restrito() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - - // 11 - Abrir protocolo na tela de controle de processos - $this->abrirProcesso(self::$protocoloTeste); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - - // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); - - // 13 - Verificar recibos de trâmite - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // 14 - Validar dados do documento - $this->assertTrue(count($listaDocumentos) == 1); - $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); - } + public static $remetente; + public static $destinatario; + public static $processoTeste; + public static $documentoTeste; + public static $protocoloTeste; + + function setUp(): void + { + parent::setUp(); + + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + /** + * Teste de trâmite externo de processo com documentos restritos + * + * @group envio + * @large + * + * @Depends CenarioBaseTestCase::setUpBeforeClass + * + * @return void + */ + public function test_tramitar_processo_com_documento_restrito() + { + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); // Cadastrar novo processo de teste + self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; // Configuração de documento restrito + self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO"]; // Configurar Hipotese legal + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); // Incluir Documentos no Processo + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * @large + * + * @depends test_tramitar_processo_com_documento_restrito + * + * @return void + */ + public function test_verificar_origem_processo_com_documento_restrito() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + // 6 - Verificar se situação atual do processo está como bloqueado + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + + // 8 - Validar histórico de trâmite do processo + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + + // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) + * + * @group verificacao_recebimento + * @large + * + * @depends test_verificar_origem_processo_com_documento_restrito + * + * @return void + */ + public function test_verificar_destino_processo_com_documento_restrito() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // 11 - Abrir protocolo na tela de controle de processos + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + self::$processoTeste['OBSERVACOES'], + array(self::$processoTeste['INTERESSADOS']) + ); + + // 13 - Verificar recibos de trâmite + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // 14 - Validar dados do documento + $this->assertTrue(count($listaDocumentos) == 1); + $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } } diff --git a/tests_sei41/funcional/tests/TramiteProcessoComHistoricoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComHistoricoTest.php index 1a2f355b5..b5d8929d3 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComHistoricoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComHistoricoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteProcessoComHistoricoTest extends CenarioBaseTestCase +class TramiteProcessoComHistoricoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -23,7 +23,6 @@ class TramiteProcessoComHistoricoTest extends CenarioBaseTestCase public function test_tramitar_processo_da_origem() { - // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); @@ -32,7 +31,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -50,21 +49,20 @@ public function test_tramitar_processo_da_origem() public function test_verificar_destino_processo_para_devolucao() { - $localCertificado = self::$destinatario['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = self::$destinatario['SENHA_CERTIFICADO_DIGITAL']; $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); // Captura o IDT do processo - $idtEnviado=$bancoOrgaoA->query("SELECT tra.id_tramite FROM protocolo p + $idtEnviado = $bancoOrgaoA->query("SELECT tra.id_tramite FROM protocolo p inner join md_pen_processo_eletronico pen on p.id_protocolo=pen.id_procedimento inner join md_pen_tramite tra on pen.numero_registro=tra.numero_registro where protocolo_formatado=?",array(self::$protocoloTeste)); if (array_key_exists("id_tramite", $idtEnviado[0])) { $idtEnviado=$idtEnviado[0]["id_tramite"]; - }else{ + } else { $idtEnviado=$idtEnviado[0]["ID_TRAMITE"]; } @@ -75,11 +73,9 @@ public function test_verificar_destino_processo_para_devolucao() curl_setopt($curl_handler, CURLOPT_SSLCERT, $localCertificado); curl_setopt($curl_handler, CURLOPT_SSLCERTPASSWD, $senhaCertificado); - $saida= json_decode(curl_exec($curl_handler)); + $saida = json_decode(curl_exec($curl_handler)); curl_close($curl_handler); - - foreach($saida->propriedadesAdicionais as $propriedades){ switch($propriedades->chave){ @@ -110,25 +106,13 @@ public function test_verificar_destino_processo_para_devolucao() case "CLASSIFICACAO_Descricao_1": $this->assertEquals('RECEITA CORRENTE', substr($propriedades->valor,0,16)); - break; - + break; } } - - // usort($saida->processo->itensHistorico,function($a,$b){ - // return ($a->dataHoraOperacao < $b->dataHoraOperacao? -1: 1); - // }); $this->assertEquals(9, sizeof($saida->processo->itensHistorico) ); - - - - - } - - } diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php index a5031b01b..214e32b16 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -35,16 +35,18 @@ public function test_tramitar_processo_contendo_documento_besimple() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_corrompimento_besimplesoap.pdf'); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, null, PEN_WAIT_TIMEOUT_ARQUIVOS_GRANDES); @@ -72,10 +74,9 @@ public function test_verificar_origem_processo_contendo_documento_besimple() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -116,7 +117,7 @@ public function test_verificar_destino_processo_contendo_documento_besimple() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php index 0cd4130d3..4954a0c39 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php @@ -1,153 +1,153 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - // Definição de dados de teste do processo principal - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - //Tramitar internamento para liberação da funcionalidade de cancelar - $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], self::$processoTeste); - - $this->navegarParaCancelarDocumento(0); - $this->paginaCancelarDocumento->cancelar("Motivo de teste"); - - $processo=self::$processoTeste; - - $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); - - $idAnexo=$bancoOrgaoA->query("SELECT an.id_anexo FROM rel_protocolo_protocolo pp - inner join protocolo p on pp.id_protocolo_1=p.id_protocolo - inner join anexo an on an.id_protocolo=pp.id_protocolo_2 - where p.descricao=?",array($processo['DESCRICAO'])); - - if (array_key_exists("id_anexo", $idAnexo[0])) { - $id_Anexo=$idAnexo[0]["id_anexo"]; - }else{ - $id_Anexo=$idAnexo[0]["ID_ANEXO"]; - } - - $bancoOrgaoA->execute("delete from anexo where id_anexo=?",array($id_Anexo)); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_contendo_documento_cancelado - * - * @return void - */ - public function test_verificar_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação do correto recebimento do processo com documento cancelado no destinatário - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo - * - * @return void - */ - public function test_verificar_destino_processo() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - $strObservacoes, - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(1, count($listaDocumentosProcessoPrincipal)); - $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); - - } - -} +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Definição de dados de teste do processo principal + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + self::$protocoloTeste = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); + + //Tramitar internamento para liberação da funcionalidade de cancelar + $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], [ 'PROTOCOLO' => self::$protocoloTeste ]); + + $this->navegarParaCancelarDocumento(0); + $this->paginaCancelarDocumento->cancelar("Motivo de teste"); + + $processo=self::$processoTeste; + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + + $idAnexo = $bancoOrgaoA->query("SELECT an.id_anexo FROM rel_protocolo_protocolo pp + inner join protocolo p on pp.id_protocolo_1=p.id_protocolo + inner join anexo an on an.id_protocolo=pp.id_protocolo_2 + where p.descricao=?",array($processo['DESCRICAO'])); + + if (array_key_exists("id_anexo", $idAnexo[0])) { + $id_Anexo=$idAnexo[0]["id_anexo"]; + }else{ + $id_Anexo=$idAnexo[0]["ID_ANEXO"]; + } + + $bancoOrgaoA->execute("delete from anexo where id_anexo=?",array($id_Anexo)); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * @large + * + * @depends test_tramitar_processo_contendo_documento_cancelado + * + * @return void + */ + public function test_verificar_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo com documento cancelado no destinatário + * + * @group verificacao_recebimento + * @large + * + * @depends test_verificar_origem_processo + * + * @return void + */ + public function test_verificar_destino_processo() + { + $strProtocoloTeste = self::$protocoloTeste; + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); + + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + $strObservacoes, + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(1, count($listaDocumentosProcessoPrincipal)); + $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); + + } + +} diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php index 69cbcb045..7e9434aad 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoContendoDocumentoCanceladoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoCanceladoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,19 +40,17 @@ public function test_tramitar_processo_contendo_documento_cancelado() self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $objProtocoloTesteDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloTesteDTO->getStrProtocoloFormatado(); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, $objProtocoloTesteDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloTesteDTO->getDblIdProtocolo()); - // Cadastrar novo processo de teste e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Realiza o cancelamento de um documento interno do processo - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); //Tramitar internamento para liberação da funcionalidade de cancelar - $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], self::$processoTeste); + $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], [ 'PROTOCOLO' => self::$protocoloTeste ]); $this->navegarParaCancelarDocumento(1); $this->paginaCancelarDocumento->cancelar("Motivo de teste"); @@ -86,10 +84,9 @@ public function test_verificar_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -120,7 +117,7 @@ public function test_verificar_destino_processo() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -154,17 +151,19 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - + // Busca dados do protocolo no org2 + $objProtocoloTesteDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + // Incluir novos documentos relacionados - $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloTesteDTO->getDblIdProtocolo()); + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, @@ -195,10 +194,9 @@ public function test_verificar_devolucao_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php index de73ca25c..a307d83c1 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -34,7 +34,7 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$destinatario['NOME_UNIDADE'] = self::$remetente['NOME_UNIDADE_SECUNDARIA']; self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -52,10 +52,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php index 31bdf5678..81869cd3b 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php @@ -5,7 +5,7 @@ * @group rodarseparado2 * @group execute_alone_group1 */ -class TramiteProcessoContendoDocumentoExternoParticionadoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoParticionadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -14,7 +14,8 @@ class TramiteProcessoContendoDocumentoExternoParticionadoTest extends CenarioBas public static $protocoloTeste; public static function setUpBeforeClass() :void { - + + parent::setUpBeforeClass(); $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); $bancoOrgaoA->execute("update infra_parametro set valor = ? where nome = ?", array(70, 'SEI_TAM_MB_DOC_EXTERNO')); @@ -46,20 +47,27 @@ public function test_tramitar_processo_contendo_documento_externo_60mb() // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_060.pdf'); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); // Altera tamanho máximo permitido para permitir o envio de arquivo superior à 50MBs $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); try { $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(70, 'SEI_TAM_MB_DOC_EXTERNO')); - $this->cadastrarDocumentoExterno(self::$documentoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); } finally { $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); } + putenv("DATABASE_HOST=org1-database"); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], @@ -90,10 +98,9 @@ public function test_verificar_origem_processo_contendo_documento_externo_60mb() $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php index aa9e8a006..dd2bc2fbb 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoExternoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -26,24 +26,13 @@ class TramiteProcessoContendoDocumentoExternoTest extends CenarioBaseTestCase public function test_tramitar_processo_contendo_documento_externo() { // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -68,10 +57,9 @@ public function test_verificar_origem_processo_contendo_documento_externo() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -112,7 +100,7 @@ public function test_verificar_destino_processo_contendo_documento_externo() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php index 207f9c74d..5db274cb4 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -33,7 +33,7 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$destinatario['NOME_UNIDADE'] = self::$remetente['NOME_UNIDADE_SECUNDARIA']; self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -52,10 +52,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php index a6a71c581..fa510bf50 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteProcessoContendoDocumentoGeradoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoGeradoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -30,17 +30,19 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + // 1 - Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // 2 - Incluir Documentos no Processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // 3 - Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 4 - Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // 4 - Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // 5 - Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -70,10 +72,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -114,7 +115,7 @@ public function test_verificar_destino_processo_contendo_documento_gerado() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php index f9d8e5b1f..f89930efc 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoInternoExternoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoInternoExternoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -32,20 +32,23 @@ public function test_tramitar_processo_contendo_documento_interno_externo() self::$documentoInternoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoExternoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // 1 - Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // 2 - Incluir e assinar documentos no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoInternoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + // 3 - Incluir documento externo ao processo + $this->cadastrarDocumentoExternoFixture(self::$documentoExternoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 3 - Incluir e assinar documentos no processo - $this->cadastrarDocumentoInterno(self::$documentoInternoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // 4 - Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 4 - Incluir documento externo ao processo - $this->cadastrarDocumentoExterno(self::$documentoExternoTeste); + // 5 - Abrir processo + $this->abrirProcesso(self::$protocoloTeste); - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + // 6 - Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -70,27 +73,26 @@ public function test_verificar_origem_processo_contendo_documento_interno_extern $this->abrirProcesso(self::$protocoloTeste); - // 6 - Verificar se situação atual do processo está como bloqueado + // 7 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; }, PEN_WAIT_TIMEOUT); - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + // 8 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); $this->validarRecibosTramite($mensagemRecibo, true, true); - // 8 - Validar histórico de trâmite do processo + // 9 - Validar histórico de trâmite do processo $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + // 10 - Verificar se processo está na lista de Processos Tramitados Externamente $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); } @@ -117,7 +119,7 @@ public function test_verificar_destino_processo_contendo_documento_interno_exter $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestino.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php similarity index 84% rename from tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestino.php rename to tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php index 89519c65f..eabd162b2 100644 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestino.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php @@ -32,7 +32,7 @@ * Execution Groups * @group exxecute_parallel */ -class TramiteProcessoContendoDocumentoMovidoDestino extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -47,6 +47,10 @@ class TramiteProcessoContendoDocumentoMovidoDestino extends CenarioBaseTestCase public static $documentoTeste5; public static $documentoTeste6; public static $documentoTeste7; + public static $objProtocoloTestePrincipalDTO; + public static $objProtocoloTestePrincipalOrg2DTO; + + /* Escopo da função: @@ -68,27 +72,30 @@ public function test_criar_processo_contendo_documentos_tramitar_remetente() self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - // acessar remetente (Órgão 1) - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); // 1-criar Processo Principal ($processoTestePrincipal) (Órgão 1) self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); + // $this->paginaBase->navegarParaControleProcesso(); + self::$objProtocoloTestePrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = self::$objProtocoloTestePrincipalDTO->getStrProtocoloFormatado(); // 2-criar Documento Externo (documentoTeste1) no Processo Principal self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); // 3-criar Documento Interno (documentoTeste2) no Processo Principal self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); // 4-criar Documento Interno (documentoTeste3) no Processo Principal self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste3); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + // acessar remetente (Órgão 1) + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTestePrincipal); // 5-tramitar Processo Principal para o Órgão 2 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -97,10 +104,9 @@ public function test_criar_processo_contendo_documentos_tramitar_remetente() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -146,9 +152,11 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); // 7-criar Processo Secundário ($processoTesteSecundario) (Órgão 2) + putenv("DATABASE_HOST=org2-database"); self::$processoTesteSecundario = $this->gerarDadosProcessoTeste(self::$remetente); - self::$protocoloTesteSecundario = $this->cadastrarProcesso(self::$processoTesteSecundario); - + $objProtocoloSecundarioDTO = $this->cadastrarProcessoFixture(self::$processoTesteSecundario); + self::$protocoloTesteSecundario = $objProtocoloSecundarioDTO->getStrProtocoloFormatado(); + // abrir Processo Principal $this->abrirProcesso(self::$protocoloTestePrincipal); @@ -166,15 +174,17 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( $this->paginaDocumento->navegarParaMoverDocumento(); $this->paginaMoverDocumento->moverDocumentoParaProcesso(self::$protocoloTesteSecundario, "Motivo de teste"); + // Consultar processo org-2 + self::$objProtocoloTestePrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); + // 10-criar documento externo (documentoTeste4) no Processo Principal self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste4, self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); // 11-criar documento interno (documentoTeste5) no Processo Principal self::$documentoTeste5 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste5); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste5,self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); + // 12-tramitar Processo Principal para o Órgão 1 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -182,10 +192,9 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -225,14 +234,16 @@ public function test_incluir_documento_tramitar_destinatario() // definir Órgão 1 como remetente e Órgão 2 como destinatário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); - // abrir Processo Principal - $this->abrirProcesso(self::$protocoloTestePrincipal); + self::$objProtocoloTestePrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); // 14-criar documento interno (documentoTeste6) no Processo Principal self::$documentoTeste6 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste6); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste6,self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + // abrir Processo Principal + $this->abrirProcesso(self::$protocoloTestePrincipal); // 15-tramitar Processo Principal para o Órgão 2 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -241,10 +252,9 @@ public function test_incluir_documento_tramitar_destinatario() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -284,11 +294,16 @@ public function test_incluir_documento_tramitar_remetente() // definir Órgão 1 como destinatário e Órgão 2 como remetente self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + + self::$objProtocoloTestePrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); // 17-criar documento interno (documentoTeste7) no Processo Principal self::$documentoTeste7 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste7); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste7, self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); + + // abrir Processo Principal + $this->abrirProcesso(self::$protocoloTestePrincipal); // 18-tramitar Processo Principal para o Órgão 1 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -297,10 +312,9 @@ public function test_incluir_documento_tramitar_remetente() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php index c9550dd81..ca147035c 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php @@ -9,241 +9,319 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessoContendoDocumentoMovidoSemAnexoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoSemAnexoTest extends FixtureCenarioBaseTestCase { - public static $remetente; - public static $destinatario; - public static $processoTeste; - public static $documentoTeste1; - public static $documentoTeste2; - public static $documentoTeste3; - public static $documentoTeste4; - public static $protocoloTeste; - - /** - * Teste inicial de trâmite de um processo contendo um documento movido - * - * @group envio - * - * @return void - */ - public function test_tramitar_processo_contendo_documento_movido_sem_anexo() - { - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - // Definição de dados de teste do processo principal - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Criar processo secundário para o qual o documento será movido - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); - - // Cadastrar novo processo de teste e incluir documentos a ser movido - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1, false); - $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_tramitar_processo_contendo_documento_movido_sem_anexo - * - * @return void - */ - public function test_verificar_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação do correto recebimento do processo com documento movido no destinatário - * - * @group verificacao_recebimento - * - * @depends test_verificar_origem_processo - * - * @return void - */ - public function test_verificar_destino_processo_com_documento_movido_sem_anexo() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - $strObservacoes, - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(2, count($listaDocumentosProcessoPrincipal)); - $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); - } - - - /** - * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem contendo - * mais dois documentos, sendo um deles movido - * - * @group envio - * - * @depends test_verificar_destino_processo_com_documento_movido_sem_anexo - * - * @return void - */ - public function test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo() - { - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - - // Criar processo secundário para o qual o novo documento será movido - $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); - - // Incluir novos documentos ao processo para ser movido - $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3, false); - $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo - * - * @return void - */ - public function test_verificar_devolucao_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação da correta devolução do processo no destinatário - * - * @group verificacao_recebimento - * - * @depends test_verificar_devolucao_origem_processo - * - * @return void - */ - public function test_verificar_devolucao_destino_processo_com_dois_documentos_movidos_sem_anexo() - { - $strProtocoloTeste = self::$protocoloTeste; - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - self::$processoTeste['OBSERVACOES'], - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(4, count($listaDocumentosProcesso)); - $this->validarDocumentoMovido($listaDocumentosProcesso[0]); - $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$destinatario); - $this->validarDocumentoCancelado($listaDocumentosProcesso[2]); - $this->validarDadosDocumento($listaDocumentosProcesso[3], self::$documentoTeste4, self::$destinatario); - } + public static $remetente; + public static $destinatario; + public static $processoTeste; + public static $documentoTeste1; + public static $documentoTeste2; + public static $documentoTeste3; + public static $documentoTeste4; + public static $protocoloTeste; + + /** + * @inheritdoc + * @return void + */ + function setUp(): void + { + parent::setUp(); + } + + /** + * Teste inicial de trâmite de um processo contendo um documento movido + * + * @group envio + * + * @return void + */ + public function test_tramitar_processo_contendo_documento_movido_sem_anexo() + { + + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Definição de dados de teste do processo principal + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Criar processo secundário para o qual o documento será movido + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Cadastrar novo processo de teste + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + // Incluir documentos a ser movido + $documentoMover = $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$protocoloTeste->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + // Navegar para mover documento + $nomeDocArvore = self::$documentoTeste1['TIPO_DOCUMENTO'] . ' 1 (' . str_pad($documentoMover->getDblIdDocumento(), 6, "0", STR_PAD_LEFT) . ')'; + $this->paginaProcesso->selecionarDocumento($nomeDocArvore); + $this->paginaDocumento->navegarParaMoverDocumento(); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); + + // Cadastramento de documento adicional + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$protocoloTeste->getDblIdProtocolo()); + $this->paginaBase->refresh(); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * + * @depends test_tramitar_processo_contendo_documento_movido_sem_anexo + * + * @return void + */ + public function test_verificar_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo com documento movido no destinatário + * + * @group verificacao_recebimento + * + * @depends test_verificar_origem_processo + * + * @return void + */ + public function test_verificar_destino_processo_com_documento_movido_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + $strObservacoes, + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcessoPrincipal)); + $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); + } + + /** + * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem contendo + * mais dois documentos, sendo um deles movido + * + * @group envio + * + * @depends test_verificar_destino_processo_com_documento_movido_sem_anexo + * + * @return void + */ + public function test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + // Mudar banco para cadastrar DTO + putenv("DATABASE_HOST=org2-database"); + + // Definição de dados de teste do processo principal + $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Consultar processo org-2 + $processoOrg2 = $this->consultarProcessoFixture($strProtocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + + // Criar processo secundário para o qual o documento será movido + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Incluir documentos a ser movido + $documentoMover = $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $processoOrg2->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + + // Navegar para mover documento + $nomeDocArvore = self::$documentoTeste1['TIPO_DOCUMENTO'] . ' 1 (' . str_pad($documentoMover->getDblIdDocumento(), 6, "0", STR_PAD_LEFT) . ')'; + $this->paginaProcesso->selecionarDocumento($nomeDocArvore); + $this->paginaDocumento->navegarParaMoverDocumento(); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); + + // Cadastramento de documento adicional + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $processoOrg2->getDblIdProtocolo()); + $this->paginaBase->refresh(); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * + * @depends test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo + * + * @return void + */ + public function test_verificar_devolucao_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação da correta devolução do processo no destinatário + * + * @group verificacao_recebimento + * + * @depends test_verificar_devolucao_origem_processo + * + * @return void + */ + public function test_verificar_devolucao_destino_processo_com_dois_documentos_movidos_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + self::$processoTeste['OBSERVACOES'], + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(4, count($listaDocumentosProcesso)); + $this->validarDocumentoMovido($listaDocumentosProcesso[0]); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$destinatario); + $this->validarDocumentoCancelado($listaDocumentosProcesso[2]); + $this->validarDadosDocumento($listaDocumentosProcesso[3], self::$documentoTeste4, self::$destinatario); + } + + /** + * @inheritDoc + */ + public static function tearDownAfterClass(): void + { + putenv("DATABASE_HOST=org1-database"); + parent::tearDownAfterClass(); + } } diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php index a36397824..3288324f2 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoMovidoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -41,22 +41,25 @@ public function test_tramitar_processo_contendo_documento_movido() self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + // Criar processo principal e processo secundário + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + + // Cadastrando documentos no processo principal + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$protocoloTeste->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$protocoloTeste->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Criar processo secundário para o qual o documento será movido - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); + $this->abrirProcesso(self::$protocoloTeste); - // Cadastrar novo processo de teste e incluir documentos a ser movido - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + // Movendo documento do processo principal para o processo secundário + $documentoParaMover = $this->paginaProcesso->listarDocumentos()[0]; + $this->paginaProcesso->selecionarDocumento($documentoParaMover); $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -87,10 +90,9 @@ public function test_verificar_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -121,7 +123,7 @@ public function test_verificar_destino_processo_com_documento_movido() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -161,21 +163,30 @@ public function test_devolucao_processo_para_origem_com_novo_documento_movido() $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + putenv("DATABASE_HOST=org2-database"); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Criar novo processo secundário na ORG 2 + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Busca dados do Protocolo principal no ORG 2 + $objProtocoloTesteDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); + // Criar novo documento externo no processo principal recebido na ORG 2" + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloTesteDTO->getDblIdProtocolo()); - // Incluir novos documentos ao processo para ser movido + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + + // Acessando novo documento externo e movendo-o ao novo processo secundario da ORG 2 + $listaDeDocumentos = $this->paginaProcesso->listarDocumentos(); + $documentoParaMover = $listaDeDocumentos[array_key_last($listaDeDocumentos)]; + $this->paginaProcesso->selecionarDocumento($documentoParaMover); $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Cadastrando novo documento interno no processo principal + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloTesteDTO->getDblIdProtocolo()); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -207,10 +218,9 @@ public function test_verificar_devolucao_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php index d8a30bad4..0df44fcfc 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoVariosDocumentosTest extends CenarioBaseTestCase +class TramiteProcessoContendoVariosDocumentosTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -39,7 +39,7 @@ public function test_tramitar_processo_contendo_varios_documentos() shuffle(self::$documentosTeste); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentosTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentosTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -67,10 +67,9 @@ public function test_verificar_origem_processo_contendo_varios_documentos() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php b/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php index 7be02c1ae..0ed2eb27a 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoDocumentoNaoMapeadoDestinoTest extends CenarioBaseTestCase +class TramiteProcessoDocumentoNaoMapeadoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -45,22 +45,8 @@ public function test_tramitar_processo_contendo_documento_nao_mapeado_destino() self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$destinatario['TIPO_DOCUMENTO_NAO_MAPEADO']; - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // 4 - Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -83,10 +69,9 @@ public function test_verificar_origem_processo_contendo_documento_nao_mapeado_de // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php b/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php index 857b381a9..70bf78aa1 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends CenarioBaseTestCase +class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -14,6 +14,7 @@ class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends CenarioBaseTestCase public static function setUpBeforeClass() :void { + parent::setUpBeforeClass(); $parametrosOrgaoA = new ParameterUtils(CONTEXTO_ORGAO_A); $parametrosOrgaoA->setParameter('PEN_ESPECIE_DOCUMENTAL_PADRAO_ENVIO', null); @@ -45,21 +46,19 @@ public function test_tramitar_processo_documento_interno_nao_mapeado() self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$remetente['TIPO_DOCUMENTO_NAO_MAPEADO']; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); $tipoDocumento = mb_convert_encoding(self::$documentoTeste["TIPO_DOCUMENTO"], "ISO-8859-1"); $mensagemEsperada = sprintf("Não existe mapeamento de envio para %s no documento", $tipoDocumento); - $this->expectExceptionMessage(utf8_encode($mensagemEsperada)); + $this->expectExceptionMessage(mb_convert_encoding($mensagemEsperada, 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente(self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); } @@ -83,18 +82,19 @@ public function test_tramitar_processo_documento_externo_nao_mapeado() self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$remetente['TIPO_DOCUMENTO_NAO_MAPEADO']; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); $tipoDocumento = mb_convert_encoding(self::$documentoTeste["TIPO_DOCUMENTO"], "ISO-8859-1"); $mensagemEsperada = sprintf("Não existe mapeamento de envio para %s no documento", $tipoDocumento); - $this->expectExceptionMessage(utf8_encode($mensagemEsperada)); + $this->expectExceptionMessage(mb_convert_encoding($mensagemEsperada, 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente(self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); } } diff --git a/tests_sei41/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php b/tests_sei41/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php index 837aad643..dc1418b3b 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoExtensaoNaoMapeadoDestinoTest extends CenarioBaseTestCase +class TramiteProcessoExtensaoNaoMapeadoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -31,12 +31,8 @@ public function test_tramitar_processo_contendo_extensao_nao_mapeada_destino() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_extensao_nao_permitida.docx'); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -60,10 +56,9 @@ public function test_verificar_origem_processo_contendo_extensao_nao_mapeado_des // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php b/tests_sei41/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php index 5f60313b0..52d24a8aa 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoRestritoHipotesePadraoTest extends CenarioBaseTestCase +class TramiteProcessoRestritoHipotesePadraoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -35,17 +35,18 @@ public function test_tramitar_processo_restrito_hipotese_nao_mapeada() self::$processoTeste["RESTRICAO"] = PaginaIniciarProcesso::STA_NIVEL_ACESSO_RESTRITO; self::$processoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO_NAO_MAPEADO"]; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -75,10 +76,9 @@ public function test_verificar_origem_processo_restrito_hipotese_nao_mapeada() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -119,7 +119,7 @@ public function test_verificar_destino_processo_restrito_hipotese_nao_mapeada() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -127,7 +127,7 @@ public function test_verificar_destino_processo_restrito_hipotese_nao_mapeada() self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS']), - self::$destinatario["HIPOTESE_RESTRICAO_PADRAO"]); + self::$destinatario["HIPOTESE_RESTRICAO_NAO_MAPEADO"]); // 13 - Verificar recibos de trâmite $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); diff --git a/tests_sei41/funcional/tests/TramiteProcessoRestritoTest.php b/tests_sei41/funcional/tests/TramiteProcessoRestritoTest.php index ca494deb4..d025d067d 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoRestritoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoRestritoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoRestritoTest extends CenarioBaseTestCase +class TramiteProcessoRestritoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,13 +40,14 @@ public function test_tramitar_processo_restrito() $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -76,10 +77,9 @@ public function test_verificar_origem_processo_restrito() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -120,7 +120,7 @@ public function test_verificar_destino_processo_restrito() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_sei41/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php b/tests_sei41/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php new file mode 100755 index 000000000..01eb1d373 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php @@ -0,0 +1,62 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste, false); + $this->atualizarProcessoFixture($objProtocoloDTO, ['DESCRICAO' => '']); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Descrição do processo '.$objProtocoloDTO->getStrProtocoloFormatado().' não informado.'), + $mensagem + ); + $this->assertStringContainsString( + utf8_encode('Interessados do processo '.$objProtocoloDTO->getStrProtocoloFormatado().' não informados.'), + $mensagem + ); + } +} diff --git a/tests_sei41/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php b/tests_sei41/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php index b6427d848..1096c867d 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoTamanhoAcimaLimiteDestinoTest extends CenarioBaseTestCase +class TramiteProcessoTamanhoAcimaLimiteDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -53,10 +53,17 @@ public function test_tramitar_processo_tamanho_acima_limite_destino() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_003.pdf'); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); + + $this->abrirProcesso(self::$protocoloTeste); + $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -83,10 +90,9 @@ public function test_verificar_origem_processo_tamanho_acima_limite_destino() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php b/tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php similarity index 70% rename from tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php rename to tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php index 2c558cfa8..ab0589345 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php +++ b/tests_sei41/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php @@ -1,6 +1,6 @@ gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $paginaProcesso = new PaginaProcesso($this); - $this->assertStringNotContainsString(utf8_encode("externa para SEGES TESTE SEM PAI - - RE CGPRO"), $paginaProcesso->informacao()); + $this->assertStringNotContainsString(mb_convert_encoding("externa para SEGES TESTE SEM PAI - - RE CGPRO", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); } } diff --git a/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php b/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php new file mode 100755 index 000000000..3827ee4b8 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php @@ -0,0 +1,79 @@ +execute("update md_pen_bloco set sta_estado=? where sta_estado=?", array('C', 'A')); + + // Limpa os mapeamentos de unidade + $bancoOrgaoA->execute("delete from md_pen_unidade", array()); + } + + public static function tearDownAfterClass() :void { + + // Recadastra os mapeamentos da unidade + putenv("DATABASE_HOST=org1-database"); + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $penMapUnidadesFixture->carregar([ + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, + 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, + ]); + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); + } + + /** + * Teste de trâmite externo de processo com restrição de acesso + * + * @group envio + * @large + * + * + * @return void + */ + public function test_tramitar_processo_restrito() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); + + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Incluir Processo no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + } +} diff --git a/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php b/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php new file mode 100755 index 000000000..eaca7e579 --- /dev/null +++ b/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php @@ -0,0 +1,57 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); + + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste("Envio Externo de Processo")); + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Incluir Processo no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + $this->assertTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Remover Processo do Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + } +} diff --git a/tests_sei41/funcional/tests/TramiteProcessoValidacaoEnvioTest.php b/tests_sei41/funcional/tests/TramiteProcessoValidacaoEnvioTest.php index 7db3e345d..4911f0d39 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoValidacaoEnvioTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoValidacaoEnvioTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoValidacaoEnvioTest extends CenarioBaseTestCase +class TramiteProcessoValidacaoEnvioTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,13 +40,16 @@ public function test_tramitar_processo_sem_documentos() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + // Cadastrar novo processo de teste + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $this->abrirProcesso(self::$protocoloTeste); - $this->expectExceptionMessage(utf8_encode("Não é possível tramitar um processo sem documentos")); + $this->expectExceptionMessage(mb_convert_encoding("Não é possível tramitar um processo sem documentos", 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], diff --git a/tests_sei41/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php b/tests_sei41/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php index b5362de4a..f25744119 100755 --- a/tests_sei41/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessosComDevolucaoAmbosAnexadosTest extends CenarioBaseTestCase +class TramiteProcessosComDevolucaoAmbosAnexadosTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -44,7 +44,7 @@ public function test_tramitar_processos_separados_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); self::$protocoloTestePrincipal = self::$processoTestePrincipal["PROTOCOLO"]; $this->sairSistema(); @@ -55,7 +55,7 @@ public function test_tramitar_processos_separados_da_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -96,21 +96,30 @@ public function test_devolucao_processo_anexado_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + $objProtocoloAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); + $objProtocoloPrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + // Cadastra documento Externo ao processo anexado + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + // Anexa processo ao processo principal + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + // Cadastra documento Externo ao processo principal + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste6, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); - $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->anexarProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste6); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -143,10 +152,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php b/tests_sei41/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php index 460e9f7bf..419099288 100755 --- a/tests_sei41/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php @@ -15,7 +15,7 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessosComDevolucoesEAnexacoesTest extends CenarioBaseTestCase +class TramiteProcessosComDevolucoesEAnexacoesTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -31,6 +31,11 @@ class TramiteProcessosComDevolucoesEAnexacoesTest extends CenarioBaseTestCase public static $documentoTeste8; public static $protocoloTestePrincipal; public static $protocoloTesteAnexado; + public static $objProtocoloTestePrincipalDTO; + public static $objProtocoloTesteAnexadoDTO; + + + /** * Teste inicial de trâmite de processo apartado para o órgão B @@ -53,7 +58,7 @@ public function test_tramitar_processo_simples_para_orgaoB() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -89,13 +94,16 @@ public function test_devolucao_processo_simples_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + + putenv("DATABASE_HOST=org1-database"); } @@ -137,20 +145,23 @@ public function test_tramitar_processo_anexado_para_orgaoB() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste6 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $objProtocoloTestePrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = $objProtocoloTestePrincipalDTO->getStrProtocoloFormatado(); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $objProtocoloTesteAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); + $this->anexarProcessoFixture($objProtocoloTestePrincipalDTO->getDblIdProtocolo(), $objProtocoloTesteAnexadoDTO->getDblIdProtocolo()); - $this->cadastrarDocumentoInterno(self::$documentoTeste6); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste6, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTestePrincipal); + // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTestePrincipal, @@ -180,10 +191,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -215,7 +225,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -260,6 +270,7 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste7 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); @@ -268,11 +279,16 @@ public function test_devolucao_processo_para_origem() // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Consulta no Org2/B o DTO do Protocolo Principal + $objProtocoloTestePrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + // Incluir novos documentos relacionados + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste7, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste8, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste7); - $this->cadastrarDocumentoInterno(self::$documentoTeste8); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -303,10 +319,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php index 3509ed510..ade7952e3 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteRecebimentoDocumentoAnexadoTest extends CenarioBaseTestCase +class TramiteRecebimentoDocumentoAnexadoTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -29,22 +29,16 @@ class TramiteRecebimentoDocumentoAnexadoTest extends CenarioBaseTestCase * Teste de envio de metadados do processo contendo documentos anexados * * Inicialmente são enviados 3 documentos, sendo um deles referênciado pelos outros dois documentos - * + * * @group envio * @large - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void */ public function test_envio_processo_com_documento_anexado() { - if(ENVIO_PARCIAL){ - $this->markTestIncomplete( - 'Teste com erro. Será refatorado em momento oportuno.' - ); - } - // Carregar contexto de testes e dados sobre certificado digital $ordemDocumentoReferenciado = 1; self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); @@ -68,7 +62,7 @@ public function test_envio_processo_com_documento_anexado() $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -94,7 +88,7 @@ public function test_devolucao_processo_com_documento_anexado_para_origem() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); $arrDocumentosSegundoEnvio = array(self::$documentoTeste4, self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $arrDocumentosSegundoEnvio, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $arrDocumentosSegundoEnvio, self::$remetente, self::$destinatario); } /** @@ -228,7 +222,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], @@ -276,13 +270,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 9d2ac1a3e..99d2c2473 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteRecebimentoDocumentoAvulsoTest extends CenarioBaseTestCase +class TramiteRecebimentoDocumentoAvulsoTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -39,6 +39,7 @@ public function setUp(): void // Carregar contexto de testes e dados sobre certificado digital self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Instanciar objeto de teste utilizando o BeSimpleSoap $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; @@ -60,7 +61,7 @@ public function test_recebimento_documento_avulso() $novoTramite = $this->enviarMetadadosDocumento($this->servicoPEN, self::$remetente, self::$destinatario, $metadadosDocumentoTeste); $this->enviarComponentesDigitaisDoTramite($this->servicoPEN, $novoTramite, $metadadosDocumentoTeste); $reciboTramite = $this->receberReciboEnvio($this->servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -87,7 +88,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste2, self::$documentoTeste3); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org1-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } /** @@ -125,8 +127,9 @@ public function test_devolucao_processo_para_origem_documento_avulso() self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + putenv("DATABASE_HOST=org2-database"); $documentos = array(self::$documentoTeste4, self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } /** @@ -267,12 +270,12 @@ private function construirMetadadosDocumentoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index 3bf9fa63c..8a86292cc 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteRecebimentoInteressadosDuplicadosTest extends CenarioBaseTestCase +class TramiteRecebimentoInteressadosDuplicadosTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -53,7 +53,7 @@ public function test_envio_processo_com_documento_anexado() $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verifica recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -73,6 +73,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) , 'local_cert' => $localCertificado , 'passphrase' => $senhaCertificado , 'resolve_wsdl_remote_includes' => true + , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE , 'connection_timeout' => $connectionTimeout , CURLOPT_TIMEOUT => $connectionTimeout , CURLOPT_CONNECTTIMEOUT => $connectionTimeout @@ -84,6 +85,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) ); return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + } @@ -173,7 +175,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest } $arrInteressados = array_map(function($item) { - return array('nome' => utf8_encode($item)); + return array('nome' => mb_convert_encoding($item, 'UTF-8', 'ISO-8859-1')); }, $processoTeste['INTERESSADOS']); @@ -185,7 +187,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => $arrInteressados, 'documento' => $metadadosDocumentos, @@ -231,13 +233,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php index a2089734a..d1036ae72 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteRecebimentoMultiplosComponentesDigitais extends CenarioBaseTestCase +class TramiteRecebimentoMultiplosComponentesDigitais extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -26,7 +26,7 @@ class TramiteRecebimentoMultiplosComponentesDigitais extends CenarioBaseTestCase /** * Teste de recebimento dedocumento avulso com 2 componentes digitais - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void @@ -47,7 +47,7 @@ public function setUp(): void /** * Teste de recebimento processo contendo documento com 3 componentes digitais - * + * * @return void */ public function test_recebimento_processo_com_3_componentes_digitais() @@ -65,14 +65,14 @@ public function test_recebimento_processo_com_3_componentes_digitais() self::CONTEUDO_DOCUMENTO_B, self::CONTEUDO_DOCUMENTO_C, self::CONTEUDO_DOCUMENTO_A, self::CONTEUDO_DOCUMENTO_A, self::CONTEUDO_DOCUMENTO_B, self::CONTEUDO_DOCUMENTO_C, )); - + // Simular um trâmite chamando a API do Barramento diretamente $metadadosProcessoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, array(self::$documentoZip)); $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, $remetente, $destinatario, $metadadosProcessoTeste); $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -94,14 +94,14 @@ public function test_devolucao_processo_para_origem() // Configuração do dados para teste do cenário $remetente = self::$contextoOrgaoA; $destinatario = self::$contextoOrgaoB; + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; $documentoTeste1 = $this->gerarDadosDocumentoInternoTeste($remetente); $documentoTeste2 = $this->gerarDadosDocumentoExternoTeste($remetente); $novosDocumentos = array($documentoTeste1, $documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); - $totalDdocumentos = array(self::$documentoZip, $documentoTeste1, $documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $totalDdocumentos, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + } /** @@ -123,7 +123,7 @@ public function test_recebimento_documento_avulso_com_2_componentes_digitais() $novoTramite = $this->enviarMetadadosDocumento(self::$servicoPEN, $remetente, $destinatario, $metadadosDocumentoTeste); $this->enviarComponentesDigitaisDoDocumentoAvulso(self::$servicoPEN, $novoTramite, $metadadosDocumentoTeste); $reciboTramite = $this->receberReciboEnvioDocumentoAvulso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -139,7 +139,7 @@ private function receberReciboEnvioDocumentoAvulso($servicoPEN, $novoTramite) $parametros->IDT = $dadosTramite->tramite->IDT; return $servicoPEN->receberReciboDeEnvio($parametros); } - + private function receberReciboEnvioProcesso($servicoPEN, $novoTramite) { $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; @@ -154,7 +154,7 @@ private function receberReciboTramite($servicoPEN, $novoTramite) $parametros = new StdClass(); $parametros->IDT = $dadosTramite->IDT; return $servicoPEN->receberReciboDeTramite($parametros); - } + } private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) { @@ -296,12 +296,12 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -352,13 +352,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -391,7 +391,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php index bbd299c90..48982791b 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php @@ -2,7 +2,7 @@ use \utilphp\util; -class TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes extends CenarioBaseTestCase +class TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -68,7 +68,7 @@ public function test_recebimento_processo_com_3_componentes_digitais() $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -93,8 +93,10 @@ public function test_devolucao_processo_para_origem_1() $documentoTesteInterno = $this->gerarDadosDocumentoInternoTeste($remetente); + putenv("DATABASE_HOST=org2-database"); $novosDocumentos = array($documentoTesteInterno); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + self::$totalDocumentos = array_merge(self::$totalDocumentos, array($documentoTesteInterno)); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, self::$totalDocumentos, $destinatario); } @@ -111,14 +113,14 @@ public function test_devolucao_processo_para_destino_2() // Configuração do dados para teste do cenário $remetente = self::$contextoOrgaoA; $destinatario = array_slice(self::$contextoOrgaoB, 0); - $destinatario['SIGLA_UNIDADE'] = $destinatario['SIGLA_UNIDADE_SECUNDARIA']; - $destinatario['NOME_UNIDADE'] = $destinatario['NOME_UNIDADE_SECUNDARIA']; - $destinatario['SIGLA_UNIDADE_HIERARQUIA'] = $destinatario['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; $documentoTesteExterno = $this->gerarDadosDocumentoExternoTeste($remetente, self::CONTEUDO_DOCUMENTO_A); + putenv("DATABASE_HOST=org1-database"); $novosDocumentos = array($documentoTesteExterno); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + self::$totalDocumentos = array_merge(self::$totalDocumentos, array($documentoTesteExterno)); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, self::$totalDocumentos, $destinatario); } @@ -288,12 +290,12 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -344,13 +346,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -383,7 +385,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], diff --git a/tests_super/funcional/assets/config/supervisor.ini b/tests_super/funcional/assets/config/supervisor.ini index 354114e69..67be29221 100755 --- a/tests_super/funcional/assets/config/supervisor.ini +++ b/tests_super/funcional/assets/config/supervisor.ini @@ -19,7 +19,25 @@ stderr_logfile=/var/log/supervisor/sei_processar_pendencias.log-err stderr_events_enabled=true [program:monitoramento_tarefas_pen] -command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoTarefasPEN.php --monitorar --segundo-plano +command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoRecebimentoTarefasPEN.php --monitorar --segundo-plano +directory=/opt/sei/web +numprocs=1 +user=apache +autostart=true +autorestart=true +startsecs=5 +startretries=1000 +log_stdout=true +log_stderr=true +logfile_maxbytes=10MB +logfile_backups=50 +logfile=/var/log/supervisor/sei_monitorar_pendencias.log +stdout_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-out +stderr_logfile=/var/log/supervisor/sei_monitorar_pendencias.log-err +stderr_events_enabled=true + +[program:monitoramento_tarefas_pen] +command=/usr/bin/php -c /etc/php.ini %(here)s/../../scripts/mod-pen/MonitoramentoEnvioTarefasPEN.php --monitorar --segundo-plano directory=/opt/sei/web numprocs=1 user=apache diff --git a/tests_super/funcional/bootstrap.php b/tests_super/funcional/bootstrap.php index 449af590c..9bb6edcd3 100755 --- a/tests_super/funcional/bootstrap.php +++ b/tests_super/funcional/bootstrap.php @@ -39,3 +39,4 @@ require_once __DIR__ . '/src/paginas/PaginaEnvioParcialListar.php'; require_once __DIR__ . '/tests/CenarioBaseTestCase.php'; +require_once __DIR__ . '/tests/FixtureCenarioBaseTestCase.php'; diff --git a/tests_super/funcional/src/fixtures/AnexoProcessoFixture.php b/tests_super/funcional/src/fixtures/AnexoProcessoFixture.php deleted file mode 100644 index a7ebfb91d..000000000 --- a/tests_super/funcional/src/fixtures/AnexoProcessoFixture.php +++ /dev/null @@ -1,49 +0,0 @@ -cadastrar( - [ - 'IdProtocolo' => $dados['IdProtocolo'], - 'IdTarefa' => \TarefaRN::$TI_ANEXADO_PROCESSO,//101 - ] - ); - $objAtividadeFixture->cadastrar( - [ - 'IdProtocolo' => $dados['IdDocumento'], - 'IdTarefa' => \TarefaRN::$TI_ANEXADO_AO_PROCESSO,//102 - 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, - 'Conclusao' => InfraData::getStrDataHoraAtual(), - - ] - ); - $objAtividadeFixture->cadastrar( - [ - 'IdProtocolo' => $dados['IdDocumento'], - 'IdTarefa' => \TarefaRN::$TI_CONCLUSAO_AUTOMATICA_UNIDADE,//41 - 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, - 'Conclusao' => InfraData::getStrDataHoraAtual(), - ] - ); - - $parametros = [ - 'IdProtocolo' => $dados['IdProtocolo'], // idprotocolo1 - 'IdDocumento' => $dados['IdDocumento'], // idprotocolo2 - 'Associacao' => 2, - ]; - $objRelProtocoloProtocoloFixture = new RelProtocoloProtocoloFixture(); - $objRelProtocoloProtocoloFixtureDTO = $objRelProtocoloProtocoloFixture->carregar($parametros); - return $objRelProtocoloProtocoloFixtureDTO; - - } -} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/Anexofixture.php b/tests_super/funcional/src/fixtures/Anexofixture.php deleted file mode 100644 index 746d98dc6..000000000 --- a/tests_super/funcional/src/fixtures/Anexofixture.php +++ /dev/null @@ -1,74 +0,0 @@ -setNumIdUnidade($dados['IdUnidade'] ?: '110000001'); - $objAnexoDTO->setDblIdProtocolo($dados['IdProtocolo']); - $objAnexoDTO->setNumTamanho($dados['Tamanho'] ?: 16); - $objAnexoDTO->setNumIdBaseConhecimento($dados['IdBaseConhecimento'] ?: null); - $objAnexoDTO->setStrNome($dados['Nome']); - $objAnexoDTO->setDthInclusao($dados['Inclusao'] ?: \InfraData::getStrDataHoraAtual()); - $objAnexoDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); - $objAnexoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); - $objAnexoDTO->setStrHash($dados['Hash'] ?: 'e307098a01b40de6183583f3163ac6ed'); - - $objAnexoBD = new \AnexoBD(\BancoSEI::getInstance()); - $objAnexoDTO = $objAnexoBD->cadastrar($objAnexoDTO); - $this->realizarUpload($dados['Nome'],$objAnexoDTO->getNumIdAnexo()); - - return $objAnexoDTO; - } - - public function realizarUpload($caminhoOrigem, $nomeDestino) - { - - // Obtém a orgão atual - $org = getenv('DATABASE_HOST'); - - // Obtém a data atual - $dataAtual = date('Y/m/d'); - - // Define os caminhos de destino baseado na data atual e no orgão que será feito o upload - $caminhoDestinoBase = "/var/sei/arquivos/{$org}/{$dataAtual}/"; - $caminhoOrigemBase = '/tmp/'; - - // Cria o diretório de destino se não existir - if (!file_exists($caminhoDestinoBase)) { - mkdir($caminhoDestinoBase, 0777, true); // Cria diretórios recursivamente com permissão 0777 - } - - // Cria o caminho completo de destino - $caminhoDestinoCompleto = $caminhoDestinoBase.$nomeDestino; - - // Cria o caminho completo de origem - $caminhoOrigemCompleto = $caminhoOrigemBase.$caminhoOrigem; - - try { - // Verifica se o arquivo de origem existe - if (!file_exists($caminhoOrigemCompleto)) { - throw new \Exception("O arquivo de origem não existe.\nArquivo=".$caminhoOrigemCompleto); - } - - // Copia o arquivo para o destino - if (!copy($caminhoOrigemCompleto, $caminhoDestinoCompleto)) { - throw new \Exception("Falha ao copiar o arquivo para o destino.\nArquivo=".$caminhoOrigemCompleto."\nDestino=".$caminhoDestinoCompleto); - } - - } catch (\Exception $e) { - echo "\nErro: " . $e->getMessage(); - } - } - -} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/AtividadeFixture.php b/tests_super/funcional/src/fixtures/AtividadeFixture.php deleted file mode 100644 index ff8b553a5..000000000 --- a/tests_super/funcional/src/fixtures/AtividadeFixture.php +++ /dev/null @@ -1,42 +0,0 @@ -objAtividadeDTO = new \AtividadeDTO(); - } - - protected function inicializarObjInfraIBanco() - { - return \BancoSEI::getInstance(); - } - - protected function cadastrar($dados = []) - { - // $this->objAtividadeDTO->setNumIdAtividade($dados['setNumIdAtividade'] ?: null); - $this->objAtividadeDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); - $this->objAtividadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $this->objAtividadeDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: 110000001); - $this->objAtividadeDTO->setNumIdUsuario($dados['IdUsuario'] ?: null); - $this->objAtividadeDTO->setNumIdUsuarioOrigem($dados['IdUsuarioOrigem'] ?: 100000001); - $this->objAtividadeDTO->setDthAbertura($dados['Abertura'] ?: InfraData::getStrDataHoraAtual()); - $this->objAtividadeDTO->setDthConclusao($dados['Conclusao'] ?: null); - $this->objAtividadeDTO->setNumIdTarefa($dados['IdTarefa'] ?: null); - $this->objAtividadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); - $this->objAtividadeDTO->setNumIdUsuarioConclusao($dados['IdUsuarioConclusao'] ?: null); - $this->objAtividadeDTO->setStrSinInicial($dados['SinInicial'] ?: 'S'); - $this->objAtividadeDTO->setNumIdUsuarioVisualizacao($dados['IdUsuarioVisualizacao'] ?: null); - $this->objAtividadeDTO->setNumTipoVisualizacao($dados['TipoVisualizacao'] ?: 0); - $this->objAtividadeDTO->setDtaPrazo($dados['Prazo'] ?: null); - - $objProtocoloDB = new \AtividadeBD(\BancoSEI::getInstance()); - $objProtocoloDB->cadastrar($this->objAtividadeDTO); - - return $this->objAtividadeDTO; - } -} diff --git a/tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php b/tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php index 1ee8e3ae6..b1dc004e2 100644 --- a/tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php +++ b/tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php @@ -6,38 +6,74 @@ class BlocoDeTramiteFixture extends \FixtureBase { protected $objBlocoDeTramiteDTO; - CONST TRATAMENTO = 'Presidente, Substituto'; - CONST ID_TARJA_ASSINATURA = 2; + const TRATAMENTO = 'Presidente, Substituto'; + const ID_TARJA_ASSINATURA = 2; - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - protected function cadastrar($dados = []) + protected function cadastrar($dados = []) { - $objBlocoDeTramiteDTO = new \TramiteEmBlocoDTO(); + $objBlocoDeTramiteDTO = new \TramiteEmBlocoDTO(); - $objBlocoDeTramiteDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $objBlocoDeTramiteDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); - $objBlocoDeTramiteDTO->setStrDescricao($dados['Descricao'] ?: 'Bloco para envio'); - $objBlocoDeTramiteDTO->setStrIdxBloco($dados['IdxBloco'] ?: 'Bloco para envio'); - $objBlocoDeTramiteDTO->setStrStaTipo($dados['IdxBloco'] ?: 'I'); - $objBlocoDeTramiteDTO->setStrStaEstado($dados['IdxBloco'] ?: 'A'); + $ordem = $this->pegarProximaOrdem($dados['IdUnidade'] ?: 110000001); - $objBlocoDeTramiteDB = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); - $objBlocoDeTramiteDB->cadastrar($objBlocoDeTramiteDTO); + $objBlocoDeTramiteDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objBlocoDeTramiteDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objBlocoDeTramiteDTO->setStrDescricao($dados['Descricao'] ?: 'Bloco para envio 12'); + $objBlocoDeTramiteDTO->setStrIdxBloco($dados['IdxBloco'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrStaTipo($dados['IdxBloco'] ?: 'I'); + $objBlocoDeTramiteDTO->setStrStaEstado($dados['IdxBloco'] ?: 'A'); + $objBlocoDeTramiteDTO->setNumOrdem($ordem); - return $objBlocoDeTramiteDTO; - } + $objBlocoDeTramiteDB = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteDB->cadastrar($objBlocoDeTramiteDTO); + + $objUnidadeDTO = $this->consultarUnidadeRelacionada($objBlocoDeTramiteDTO); + $objBlocoDeTramiteDTO->setStrSiglaUnidade($objUnidadeDTO->getStrSigla()); + + return $objBlocoDeTramiteDTO; + } + + protected function consultarUnidadeRelacionada(TramiteEmBlocoDTO $objBlocoDeTramiteDB) + { + $objUnidadeDTO = new \UnidadeDTO(); + $objUnidadeDTO->setNumIdUnidade($objBlocoDeTramiteDB->getNumIdUnidade()); + $objUnidadeDTO->retTodos(); + + $objUnidadeBD = new \UnidadeBD($this->inicializarObjInfraIBanco()); + return $objUnidadeBD->consultar($objUnidadeDTO); + } - public function excluir($id) + public function excluir($id) { - $dto = new \TramiteEmBlocoDTO(); - $dto->setNumId($id); - $dto->retNumId(); + $dto = new \TramiteEmBlocoDTO(); + $dto->setNumId($id); + $dto->retNumId(); - $objBD = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); - $objBD->excluir($dto); + $objBD = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $objBD->excluir($dto); + } + + private function pegarProximaOrdem($unidade) + { + $tramiteEmBlocoDTO = new \TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumIdUnidade($unidade); + $tramiteEmBlocoDTO->setOrdNumOrdem(\InfraDTO::$TIPO_ORDENACAO_DESC); + $tramiteEmBlocoDTO->retNumOrdem(); + $tramiteEmBlocoDTO->setNumMaxRegistrosRetorno(1); + + $objBD = new \TramiteEmBlocoBD($this->inicializarObjInfraIBanco()); + $tramiteEmBlocoDTO = $objBD->consultar($tramiteEmBlocoDTO); + + if ($tramiteEmBlocoDTO == null) { + $ordem = 1; + } else { + $ordem = $tramiteEmBlocoDTO->getNumOrdem() + 1; } + + return $ordem; + } } diff --git a/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php b/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php index 42ca5c465..5c2e2faa1 100644 --- a/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php +++ b/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php @@ -4,28 +4,81 @@ class BlocoDeTramiteProtocoloFixture extends \FixtureBase { protected $objBlocoDeTramiteProtocoloDTO; - public function __construct() + public function __construct() { - $this->objBlocoDeTramiteProtocoloDTO = new \TramitaEmBlocoProtocoloDTO(); - } + $this->objBlocoDeTramiteProtocoloDTO = new \PenBlocoProcessoDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - protected function cadastrar($dados = []) + protected function cadastrar($dados = []) { + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: '100000001'); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: '110000001'); + $dthRegistro = date('d/m/Y H:i:s'); + $this->objBlocoDeTramiteProtocoloDTO->setDthRegistro($dados['DthRegistro'] ?: $dthRegistro); + $this->objBlocoDeTramiteProtocoloDTO->setDthAtualizado($dados['DthAtualizado'] ?: $dthRegistro); - $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); - $this->objBlocoDeTramiteProtocoloDTO->setNumIdTramitaEmBloco($dados['IdTramitaEmBloco'] ?: null); - $this->objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: null); - $this->objBlocoDeTramiteProtocoloDTO->setStrIdxRelBlocoProtocolo($dados['IdxRelBlocoProtocolo'] ?: null); + // atualização 3.7.0 + $this->objBlocoDeTramiteProtocoloDTO->setNumIdAndamento($dados['IdAndamento'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setStrUnidadeDestino($dados['UnidadeDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeDestino($dados['IdUnidadeDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdAtividade($dados['IdAtividade'] ?: null); - - $objBlocoDeTramiteProtocoloBD = new \TramitaEmBlocoProtocoloBD(\BancoSEI::getInstance()); - $objBlocoDeTramiteProtocoloBD->cadastrar($this->objBlocoDeTramiteProtocoloDTO); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioOrigem($dados['IdRepositorioOrigem'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioDestino($dados['IdRepositorioDestino'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setDthEnvio($dados['Envio'] ?: $dthRegistro); - return $this->objBlocoDeTramiteProtocoloDTO; - } + $this->objBlocoDeTramiteProtocoloDTO->setStrRepositorioDestino($dados['RepositorioDestino'] ?: null); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + $objBlocoDeTramiteProtocoloBD->cadastrar($this->objBlocoDeTramiteProtocoloDTO); + + return $this->objBlocoDeTramiteProtocoloDTO; + } + + protected function listar($dados = []) + { + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo']); + $this->objBlocoDeTramiteProtocoloDTO->retTodos(); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + return $objBlocoDeTramiteProtocoloBD->listar($this->objBlocoDeTramiteProtocoloDTO); + } + + protected function alterar($dados = []) + { + + $objBlocoDeTramiteProtocoloDTO = $this->listar($dados)[0]; + + $objBlocoDeTramiteProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdBloco()); + $objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: $objBlocoDeTramiteProtocoloDTO->getNumSequencia()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUsuario()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidade()); + $dthRegistro = date('d/m/Y H:i:s'); + $objBlocoDeTramiteProtocoloDTO->setDthRegistro($dados['DthRegistro'] ?: $objBlocoDeTramiteProtocoloDTO->getDthRegistro()); + $objBlocoDeTramiteProtocoloDTO->setDthAtualizado($dados['DthAtualizado'] ?: $dthRegistro); + + $objBlocoDeTramiteProtocoloDTO->setNumIdAndamento($dados['IdAndamento'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdAndamento()); + $objBlocoDeTramiteProtocoloDTO->setStrUnidadeDestino($dados['UnidadeDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getStrUnidadeDestino()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidadeOrigem()); + $objBlocoDeTramiteProtocoloDTO->setNumIdUnidadeDestino($dados['IdUnidadeDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdUnidadeDestino()); + $objBlocoDeTramiteProtocoloDTO->setNumIdAtividade($dados['IdAtividade'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdAtividade()); + + $objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioOrigem($dados['IdRepositorioOrigem'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdRepositorioOrigem()); + $objBlocoDeTramiteProtocoloDTO->setNumIdRepositorioDestino($dados['IdRepositorioDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getNumIdRepositorioDestino()); + $objBlocoDeTramiteProtocoloDTO->setDthEnvio($dados['Envio'] ?: $objBlocoDeTramiteProtocoloDTO->getDthEnvio()); + + $objBlocoDeTramiteProtocoloDTO->setStrRepositorioDestino($dados['RepositorioDestino'] ?: $objBlocoDeTramiteProtocoloDTO->getStrRepositorioDestino()); + + $objBlocoDeTramiteProtocoloBD = new \PenBlocoProcessoBD($this->inicializarObjInfraIBanco()); + return $objBlocoDeTramiteProtocoloBD->alterar($objBlocoDeTramiteProtocoloDTO); + } } diff --git a/tests_super/funcional/src/fixtures/ContatoFixture.php b/tests_super/funcional/src/fixtures/ContatoFixture.php deleted file mode 100644 index f80e6d891..000000000 --- a/tests_super/funcional/src/fixtures/ContatoFixture.php +++ /dev/null @@ -1,44 +0,0 @@ -objContatoDTO = new \ContatoDTO(); - } - - protected function inicializarObjInfraIBanco() - { - return \BancoSEI::getInstance(); - } - - protected function cadastrar($dados = []) - { - - $dados['IdContato'] = $this->getObjInfraIBanco()->getValorSequencia('seq_contato'); - $dados['Nome'] = $dados['Nome'] ?: 'teste'; - - $this->objContatoDTO->setNumIdContato($dados['IdContato']); - $this->objContatoDTO->setNumIdContatoAssociado($dados['IdContatoAssociado'] ?: $dados['IdContato']); - $this->objContatoDTO->setStrNome($dados['Nome']); - $this->objContatoDTO->setStrNomeRegistroCivil($dados['NomeRegistroCivil'] ?: $dados['Nome']); - // $this->objContatoDTO->setNumIdCargo($dados['IdCargo'] ?: 0); - // $this->objContatoDTO->setNumIdCategoria($dados['IdCategoria'] ?: 110000001); - $this->objContatoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); - $this->objContatoDTO->setStrIdxContato($dados['IdxContato'] ?: strtolower($dados['Nome'])); - $this->objContatoDTO->setNumIdUnidadeCadastro($dados['IdUnidadeCadastro'] ?: 110000001); - $this->objContatoDTO->setNumIdUsuarioCadastro($dados['IdUsuarioCadastro'] ?: 100000001); - $this->objContatoDTO->setDthCadastro($dados['Cadastro'] ?: \InfraData::getStrDataHoraAtual()); - $this->objContatoDTO->setNumIdTipoContato($dados['IdTipoContato'] ?: 4); - $this->objContatoDTO->setStrStaNatureza($dados['StaNatureza'] ?: 'F'); - $this->objContatoDTO->setStrSinEnderecoAssociado($dados['SinEnderecoAssociado'] ?: 'N'); - - $objContatoBD = new \ContatoBD(\BancoSEI::getInstance()); - $objContatoBD->cadastrar($this->objContatoDTO); - - return $this->objContatoDTO; - } - -} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/FixtureBase.php b/tests_super/funcional/src/fixtures/FixtureBase.php index 103c93b23..7a0811c2b 100644 --- a/tests_super/funcional/src/fixtures/FixtureBase.php +++ b/tests_super/funcional/src/fixtures/FixtureBase.php @@ -2,77 +2,95 @@ abstract class FixtureBase extends \InfraRN { - abstract protected function cadastrar($dados); + abstract protected function cadastrar($dados); - protected function cadastrarInternoControlado($parametros){ - $dto = $this->cadastrar($parametros["dados"]); + protected function cadastrarInternoControlado($parametros){ + $dto = $this->cadastrar($parametros["dados"]); - if (isset($parametros["callback"])) { - $parametros["callback"]($dto); - } - - return $dto; + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } - public function carregar($dados = null, $callback = null){ - $dados = $dados ?: []; - return $this->cadastrarInterno([ - 'dados' => $dados, - 'callback' => $callback - ]); + return $dto; + } + + public function carregar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->cadastrarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + public function carregarVarios($dados = null, $quantidade = 1){ + $resultado = []; + for ($i=0; $i < $quantidade; $i++) { + $resultado[] = $this->carregar($dados); } - - public function carregarVarios($dados = null, $quantidade = 1){ - $resultado = []; - for ($i=0; $i < $quantidade; $i++) { - $resultado[] = $this->carregar($dados); - } - return $resultado; - } + return $resultado; + } + + public function carregarVariados($dados){ + $resultado = []; + foreach ($dados as $dado) { + $resultado[] = $this->carregar($dado); + } + + return $resultado; + } - public function carregarVariados($dados){ - $resultado = []; - foreach ($dados as $dado) { - $resultado[] = $this->carregar($dado); - } + protected function listarInternoControlado($parametros){ + $dto = $this->listar($parametros["dados"]); - return $resultado; + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } - protected function listarInternoControlado($parametros){ - $dto = $this->listar($parametros["dados"]); + return $dto; + } - if (isset($parametros["callback"])) { - $parametros["callback"]($dto); - } + public function buscar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->listarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } - return $dto; - } + protected function removerInternoControlado($parametros){ + $dto = $this->excluir($parametros["dados"]); - public function buscar($dados = null, $callback = null){ - $dados = $dados ?: []; - return $this->listarInterno([ - 'dados' => $dados, - 'callback' => $callback - ]); + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } - protected function removerInternoControlado($parametros){ - $dto = $this->excluir($parametros["dados"]); + return $dto; + } - if (isset($parametros["callback"])) { - $parametros["callback"]($dto); - } + public function remover($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->removerInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } - return $dto; - } + public function atualizarInternoControlado($parametros){ + $dto = $this->alterar($parametros["dados"]); - public function remover($dados = null, $callback = null){ - $dados = $dados ?: []; - return $this->removerInterno([ - 'dados' => $dados, - 'callback' => $callback - ]); + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); } + + return $dto; + } + + public function atualizar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->atualizarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } } diff --git a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php index 8f3dd04b5..0eb1436c5 100644 --- a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php +++ b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -5,74 +5,74 @@ class ImportacaoTiposProcessoFixture extends \FixtureBase protected $objPenMapTipoProcedimentoDTO; protected $dthRegistro; - public function __construct() + public function __construct() { - $this->objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $this->dthRegistro = \InfraData::getStrDataAtual(); - } + $this->objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $this->dthRegistro = \InfraData::getStrDataAtual(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $objPenMapTipoProcedimentoDTO = $this->consultar($dados); - if ($objPenMapTipoProcedimentoDTO) { - return $objPenMapTipoProcedimentoDTO; - } + $objPenMapTipoProcedimentoDTO = $this->consultar($dados); + if ($objPenMapTipoProcedimentoDTO) { + return $objPenMapTipoProcedimentoDTO; + } - $this->objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); - $this->objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); - $this->objPenMapTipoProcedimentoDTO->setStrNomeTipoProcesso($dados['NomeProcedimento']); - $this->objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); - $this->objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); - $this->objPenMapTipoProcedimentoDTO->setDthRegistro(\InfraData::getStrDataAtual()); + $this->objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setStrNomeTipoProcesso($dados['NomeProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?: 110000001)); + $this->objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SinAtivo'] ?: 'S')); + $this->objPenMapTipoProcedimentoDTO->setDthRegistro(\InfraData::getStrDataAtual()); - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->cadastrar($this->objPenMapTipoProcedimentoDTO); - } + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->cadastrar($this->objPenMapTipoProcedimentoDTO); + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); - $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); - $objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); - $objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); - $objPenMapTipoProcedimentoDTO->retTodos(); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?: 110000001)); + $objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SinAtivo'] ?: 'S')); + $objPenMapTipoProcedimentoDTO->retTodos(); - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); - } + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); + } - public function listar($dados = [] ) + public function listar($dados = []) { - $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); - if ($dados['IdProcedimento']) { - $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); - } - if ($dados['IdUnidade']) { - $objPenMapTipoProcedimentoDTO->setNumIdUnidade($dados['IdUnidade']); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + if ($dados['IdProcedimento']) { + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + } + if ($dados['IdUnidade']) { + $objPenMapTipoProcedimentoDTO->setNumIdUnidade($dados['IdUnidade']); - } - if ($dados['SimAtivo']) { - $objPenMapTipoProcedimentoDTO->setStrAtivo($dados['SimAtivo']); - } - $objPenMapTipoProcedimentoDTO->retTodos(); - - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); } + if ($dados['SinAtivo']) { + $objPenMapTipoProcedimentoDTO->setStrAtivo($dados['SinAtivo']); + } + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); + } - public function excluir($dados = []) + public function excluir($dados = []) { - $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); - $objPenMapTipoProcedimentoDTO->setDblId($dados['Id']); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($dados['Id']); - $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); - return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); - } + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD($this->inicializarObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); + } } \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/ParticipanteFixture.php b/tests_super/funcional/src/fixtures/ParticipanteFixture.php deleted file mode 100644 index cdc1611d7..000000000 --- a/tests_super/funcional/src/fixtures/ParticipanteFixture.php +++ /dev/null @@ -1,37 +0,0 @@ -objParticipanteDTO = new \ParticipanteDTO(); - } - - protected function inicializarObjInfraIBanco() - { - return \BancoSEI::getInstance(); - } - - protected function cadastrar($dados = []) - { - - $this->objParticipanteDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); - $this->objParticipanteDTO->setStrStaParticipacao($dados['StaParticipacao'] ?: self::INTERESSADO); - $this->objParticipanteDTO->setNumIdContato($dados['IdContato'] ?: 100000006); - $this->objParticipanteDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $this->objParticipanteDTO->setNumSequencia($dados['Sequencia'] ?: 0); - - - $objParticipanteDB = new \ParticipanteBD(\BancoSEI::getInstance()); - $objParticipanteDB->cadastrar($this->objParticipanteDTO); - - return $this->objParticipanteDTO; - } -} diff --git a/tests_super/funcional/src/fixtures/PenMapEnvioParcialFixture.php b/tests_super/funcional/src/fixtures/PenMapEnvioParcialFixture.php index e5d6c1562..0e6172cf3 100644 --- a/tests_super/funcional/src/fixtures/PenMapEnvioParcialFixture.php +++ b/tests_super/funcional/src/fixtures/PenMapEnvioParcialFixture.php @@ -6,53 +6,53 @@ class PenMapEnvioParcialFixture extends \FixtureBase { protected $objMapEnvioParcialDTO; - public function __construct() + public function __construct() { - $this->objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); - } + $this->objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - protected function cadastrar($dados = []) + protected function cadastrar($dados = []) { - $objMapEnvioParcialDTO = $this->consultar($dados); - if ($objMapEnvioParcialDTO) { - return $objMapEnvioParcialDTO; - } - - $this->objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); - $this->objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); - $this->objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); - $this->objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); + $objMapEnvioParcialDTO = $this->consultar($dados); + if ($objMapEnvioParcialDTO) { + return $objMapEnvioParcialDTO; + } + + $this->objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); + $this->objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); + $this->objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); + $this->objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); - $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD(\BancoSEI::getInstance()); - $objMapEnvioParcialDB->cadastrar($this->objMapEnvioParcialDTO); + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + $objMapEnvioParcialDB->cadastrar($this->objMapEnvioParcialDTO); - return $this->objMapEnvioParcialDTO; - } + return $this->objMapEnvioParcialDTO; + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); - $objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); - $objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); - $objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); - $objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); - $objMapEnvioParcialDTO->retTodos(); - - $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD(\BancoSEI::getInstance()); - return $objMapEnvioParcialDB->consultar($objMapEnvioParcialDTO); - } - - public function excluir($dados = []) + $objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + $objMapEnvioParcialDTO->setNumIdEstrutura($dados['IdEstrutura'] ?: 5); + $objMapEnvioParcialDTO->setStrStrEstrutura($dados['StrEstrutura'] ?: 'RE CGPRO'); + $objMapEnvioParcialDTO->setNumIdUnidadePen($dados['IdUnidadePen']); + $objMapEnvioParcialDTO->setStrStrUnidadePen($dados['StrUnidadePen']); + $objMapEnvioParcialDTO->retTodos(); + + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + return $objMapEnvioParcialDB->consultar($objMapEnvioParcialDTO); + } + + public function excluir($dados = []) { - $this->$objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); - $this->$objMapEnvioParcialDTO->setDblId($dados['Id']); + $this->$objMapEnvioParcialDTO = new \PenRestricaoEnvioComponentesDigitaisDTO(); + $this->$objMapEnvioParcialDTO->setDblId($dados['Id']); - $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD(\BancoSEI::getInstance()); - $objMapEnvioParcialDB->excluir($this->$objMapEnvioParcialDTO); - } + $objMapEnvioParcialDB = new \PenRestricaoEnvioComponentesDigitaisBD($this->inicializarObjInfraIBanco()); + $objMapEnvioParcialDB->excluir($this->$objMapEnvioParcialDTO); + } } diff --git a/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php index 308a8f525..ea698cb2d 100644 --- a/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php +++ b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -7,42 +7,42 @@ class PenMapUnidadesFixture extends \FixtureBase { protected $objPenUnidadeDTO; - public function __construct() + public function __construct() { - $this->objPenUnidadeDTO = new \PenUnidadeDTO(); - } + $this->objPenUnidadeDTO = new \PenUnidadeDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $objPenUnidadeDTO = $this->consultar($dados); - if ($objPenUnidadeDTO) { - return $objPenUnidadeDTO; - } + $objPenUnidadeDTO = $this->consultar($dados); + if ($objPenUnidadeDTO) { + return $objPenUnidadeDTO; + } - $this->objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); - $this->objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); - $this->objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); - $this->objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); + $this->objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $this->objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $this->objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); - $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); - return $objPenUnidadeBD->cadastrar($this->objPenUnidadeDTO); - } + $objPenUnidadeBD = new \PenUnidadeBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeBD->cadastrar($this->objPenUnidadeDTO); + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objPenUnidadeDTO = new \PenUnidadeDTO(); - $objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); - $objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); - $objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); - $objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); - $objPenUnidadeDTO->retTodos(); + $objPenUnidadeDTO = new \PenUnidadeDTO(); + $objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); + $objPenUnidadeDTO->retTodos(); - $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); - return $objPenUnidadeBD->consultar($objPenUnidadeDTO); - } + $objPenUnidadeBD = new \PenUnidadeBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeBD->consultar($objPenUnidadeDTO); + } } \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php b/tests_super/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php new file mode 100644 index 000000000..087328f64 --- /dev/null +++ b/tests_super/funcional/src/fixtures/PenMapUnidadesRestricaoFixture.php @@ -0,0 +1,61 @@ +objPenUnidadeRestricaoDTO = new \PenUnidadeRestricaoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + public function cadastrar($dados = []) + { + $objPenUnidadeRestricaoDTO = $this->consultar($dados); + if ($objPenUnidadeRestricaoDTO) { + return $objPenUnidadeRestricaoDTO; + } + + $this->objPenUnidadeRestricaoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRH($dados['IdUnidadeRH']); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRestricao($dados['IdUnidadeRestricao']); + $this->objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); + $this->objPenUnidadeRestricaoDTO->setNumIdUnidadeRHRestricao($dados['IdUnidadeRHRestricao']); + $this->objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->cadastrar($this->objPenUnidadeRestricaoDTO); + } + + public function consultar($dados = []) + { + $objPenUnidadeRestricaoDTO = new \PenUnidadeRestricaoDTO(); + + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + $objPenUnidadeRestricaoDTO->retTodos(); + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->consultar($objPenUnidadeRestricaoDTO); + } + + public function excluir($dados = []) + { + + $objPenUnidadeRestricaoDTO = $this->consultar($dados); + if (!$objPenUnidadeRestricaoDTO) { + return false; + } + + $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); + return $objPenUnidadeRestricaoBD->excluir($objPenUnidadeRestricaoDTO); + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php index 38a8395f0..474b0b83f 100644 --- a/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php +++ b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -4,60 +4,60 @@ class PenOrgaoExternoFixture extends \FixtureBase { protected $objPenOrgaoExternoDTO; - public function __construct() + public function __construct() { - $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - } + $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + } - protected function inicializarObjInfraIBanco() + protected function inicializarObjInfraIBanco() { - return \BancoSEI::getInstance(); - } + return \BancoSEI::getInstance(); + } - public function cadastrar($dados = []) + public function cadastrar($dados = []) { - $this->objPenOrgaoExternoDTO = $this->consultar($dados); - if ($this->objPenOrgaoExternoDTO) { - return $this->objPenOrgaoExternoDTO; - } + $this->objPenOrgaoExternoDTO = $this->consultar($dados); + if ($this->objPenOrgaoExternoDTO) { + return $this->objPenOrgaoExternoDTO; + } - $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - $this->objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); - $this->objPenOrgaoExternoDTO->setStrOrgaoOrigem($dados['NomeOrigem']); - $this->objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($dados['IdRepositorio']); - $this->objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($dados['RepositorioEstruturas']); + $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $this->objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $this->objPenOrgaoExternoDTO->setStrOrgaoOrigem($dados['NomeOrigem']); + $this->objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($dados['IdRepositorio']); + $this->objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($dados['RepositorioEstruturas']); - $this->objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); - $this->objPenOrgaoExternoDTO->setStrOrgaoDestino($dados['Nome']); + $this->objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $this->objPenOrgaoExternoDTO->setStrOrgaoDestino($dados['Nome']); - $this->objPenOrgaoExternoDTO->setDthRegistro($dados['DataRegistro'] ?? \InfraData::getStrDataAtual()); - $this->objPenOrgaoExternoDTO->setStrAtivo($dados['SinAtivo'] ?? 'S'); - $this->objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $this->objPenOrgaoExternoDTO->setDthRegistro($dados['DataRegistro'] ?: \InfraData::getStrDataAtual()); + $this->objPenOrgaoExternoDTO->setStrAtivo($dados['SinAtivo'] ?: 'S'); + $this->objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); - $this->objPenOrgaoExternoDTO = $objPenOrgaoExternoBD->cadastrar($this->objPenOrgaoExternoDTO); + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + $this->objPenOrgaoExternoDTO = $objPenOrgaoExternoBD->cadastrar($this->objPenOrgaoExternoDTO); - return $this->objPenOrgaoExternoDTO; - } + return $this->objPenOrgaoExternoDTO; + } - public function consultar($dados = []) + public function consultar($dados = []) { - $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); - $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); - $objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); - $objPenOrgaoExternoDTO->retTodos(); - - $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); - return $objPenOrgaoExternoBD->consultar($objPenOrgaoExternoDTO); - } + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objPenOrgaoExternoDTO->retTodos(); - public function excluir($dados = []) + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + return $objPenOrgaoExternoBD->consultar($objPenOrgaoExternoDTO); + } + + public function excluir($dados = []) { - $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); - $objPenOrgaoExternoDTO->setDblId($dados['Id']); + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($dados['Id']); - $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); - return $objPenOrgaoExternoBD->excluir($objPenOrgaoExternoDTO); - } + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD($this->inicializarObjInfraIBanco()); + return $objPenOrgaoExternoBD->excluir($objPenOrgaoExternoDTO); + } } \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php b/tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php deleted file mode 100644 index 3fb417727..000000000 --- a/tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php +++ /dev/null @@ -1,30 +0,0 @@ -getObjInfraIBanco()->getValorSequencia('seq_protocolo'); - // $dados['IdDocumento'] = $this->getObjInfraIBanco()->getValorSequencia('seq_documento'); - - $objRelBlocoProtocoloDTO = new \RelBlocoProtocoloDTO(); - // $objBlocoDTO->setNumIdBloco(); - $objRelBlocoProtocoloDTO->setDblIdProtocolo($IdProtocolo ?: null); - $objRelBlocoProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: null); - $objRelBlocoProtocoloDTO->setStrAnotacao($dados['Anotacao'] ?: null); - $objRelBlocoProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: 1); - $objRelBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($IdProtocolo); - - $objRelBlocoProtocoloDB = new \RelBlocoProtocoloBD(\BancoSEI::getInstance()); - $objRelBlocoProtocoloDB->cadastrar($objRelBlocoProtocoloDTO); - - return $objRelBlocoProtocoloDTO; - } -} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php b/tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php deleted file mode 100644 index a6bf9719f..000000000 --- a/tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php +++ /dev/null @@ -1,38 +0,0 @@ -setNumIdBloco(); - $objRelBlocoUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $objRelBlocoUnidadeDTO->setNumIdBloco($dados['IdBloco'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdGrupoBloco($dados['IdGrupoBloco'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioRevisao($dados['IdUsuarioRevisao'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioPrioridade($dados['IdUsuarioPrioridade'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); - $objRelBlocoUnidadeDTO->setNumIdUsuarioComentario($dados['IdUsuarioComentario'] ?: null); - $objRelBlocoUnidadeDTO->setStrSinRetornado($dados['SinRetornado'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrSinRevisao($dados['SinRevisao'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrSinPrioridade($dados['SinPrioridade'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrSinComentario($dados['SinComentario'] ?: 'N'); - $objRelBlocoUnidadeDTO->setStrTextoComentario($dados['TextoComentario'] ?: null); - $objRelBlocoUnidadeDTO->setDthRevisao($dados['Revisao'] ?: null); - $objRelBlocoUnidadeDTO->setDthPrioridade($dados['Prioridade'] ?: null); - $objRelBlocoUnidadeDTO->setDthComentario($dados['Comentario'] ?: null); - - $objBlocoUnidadeDB = new \RelBlocoUnidadeBD(\BancoSEI::getInstance()); - $objBlocoUnidadeDB->cadastrar($objRelBlocoUnidadeDTO); - - return $objRelBlocoUnidadeDTO; - } -} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php b/tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php deleted file mode 100644 index 41fd2d8e3..000000000 --- a/tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php +++ /dev/null @@ -1,28 +0,0 @@ -setDblIdProtocolo1($dados['IdProtocolo']); - $objRelProtocoloProtocoloDTO->setDblIdProtocolo2($dados['IdDocumento']); - $objRelProtocoloProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); - $objRelProtocoloProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); - $objRelProtocoloProtocoloDTO->setStrSinCiencia($dados['Ciencia'] ?: 'N'); - $objRelProtocoloProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: 0); - $objRelProtocoloProtocoloDTO->setStrStaAssociacao($dados['Associacao'] ?: 1); - $objRelProtocoloProtocoloDTO->setDthAssociacao(InfraData::getStrDataHoraAtual()); - - $objRelProtocoloAssuntoDB = new \RelProtocoloProtocoloBD(\BancoSEI::getInstance()); - $objRelProtocoloAssuntoDB->cadastrar($objRelProtocoloProtocoloDTO); - - return $objRelProtocoloProtocoloDTO; - } -} diff --git a/tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php b/tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php deleted file mode 100644 index 7bf2db754..000000000 --- a/tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php +++ /dev/null @@ -1,182 +0,0 @@ -objProtocoloRN = new \ProtocoloRN(); - $this->objProtocoloDTO = new \ProtocoloDTO(); - } - - protected function inicializarObjInfraIBanco() - { - return \BancoSEI::getInstance(); - } - - protected function cadastrar($dados = []) - { - $documento = $dados['documento'] ?: false; - - $dados['IdProtocolo'] = $this->getObjInfraIBanco()->getValorSequencia('seq_protocolo'); - - $objSecaoDocumentoDTO = new SecaoDocumentoDTO(); - - // $objSecaoDocumentoDTO->setNumIdSecaoDocumento(); - - $objSecaoDocumentoDTO->setNumOrdem($dados['Ordem'] ?: 0); - $objSecaoDocumentoDTO->setStrSinSomenteLeitura($dados['SomenteLeitura'] ?: null); - $objSecaoDocumentoDTO->setStrSinAssinatura($dados['Assinatura'] ?: null); - $objSecaoDocumentoDTO->setStrSinPrincipal($dados['Principal'] ?: null); - $objSecaoDocumentoDTO->setStrSinDinamica($dados['Dinamica'] ?: null); - $objSecaoDocumentoDTO->setStrSinCabecalho($dados['Cabecalho'] ?: null); - $objSecaoDocumentoDTO->setStrSinRodape($dados['Rodape'] ?: null); - $objSecaoDocumentoDTO->setStrSinHtml($dados['Html'] ?: null); - $objSecaoDocumentoDTO->setNumIdSecaoModelo($dados['IdSecaoModelo'] ?: null); - $objSecaoDocumentoDTO->setDblIdDocumento($dados['IdDocumento'] ?: null); - $objSecaoDocumentoDTO->setNumIdBaseConhecimento($dados['IdBaseConhecimento'] ?: null); - $objSecaoDocumentoDTO->setStrConteudo($dados['Conteudo'] ?: null); - - - $objProtocoloDB = new \SecaoDocumentoBD(\BancoSEI::getInstance()); - $objProtocoloDB->cadastrar($objSecaoDocumentoDTO); - - return $objSecaoDocumentoDTO; - } - - public function conteudoEstatico($IdDocumento) - { - return [ - [ - 'IdSecaoModelo' => 323, - 'IdDocumento' => $IdDocumento, - 'Ordem' => 0, - 'SomenteLeitura' => 'S', - 'Assinatura' => 'N', - 'Principal' => 'N', - 'Dinamica' => 'S', - 'Cabecalho' => 'S', - 'Rodape' => 'N', - 'Conteudo' => '

  

-

@descricao_orgao_maiusculas@

-

  

', - 'Html' => 'S' - ], - [ - 'IdSecaoModelo' => 252, - 'IdDocumento' => $IdDocumento, - 'Ordem' => 10, - 'SomenteLeitura' => 'S', - 'Assinatura' => 'N', - 'Principal' => 'N', - 'Dinamica' => 'S', - 'Cabecalho' => 'N', - 'Rodape' => 'N', - 'Conteudo' => '@serie@ nº @numeracao_serie@/@ano@', - 'Html' => 'N' - ], - [ - 'IdSecaoModelo' => 253, - 'IdDocumento' => $IdDocumento, - 'Ordem' => 20, - 'SomenteLeitura' => 'S', - 'Assinatura' => 'N', - 'Principal' => 'N', - 'Dinamica' => 'S', - 'Cabecalho' => 'N', - 'Rodape' => 'N', - 'Conteudo' => 'Processo nº @processo@', - 'Html' => 'N' - ], - [ - 'IdSecaoModelo' => 254, - 'IdDocumento' => $IdDocumento, - 'Ordem' => 30, - 'SomenteLeitura' => 'S', - 'Assinatura' => 'N', - 'Principal' => 'N', - 'Dinamica' => 'S', - 'Cabecalho' => 'N', - 'Rodape' => 'N', - 'Conteudo' => 'Recorrente/Interessado: @interessados_virgula_espaco_maiusculas@', - 'Html' => 'N' - - ], - [ - 'IdSecaoModelo' => 257, - 'IdDocumento' => $IdDocumento, - 'Ordem' => 40, - 'SomenteLeitura' => 'N', - 'Assinatura' => 'N', - 'Principal' => 'S', - 'Dinamica' => 'N', - 'Cabecalho' => 'N', - 'Rodape' => 'N', - 'Conteudo' => '

CNPJ/MF Nº XX.XXX.XXX/XXXX-DV

-

Conselheiro Relator: [Digite aqui o Nome Completo]

-

Fórum Deliberativo: Reunião nº [indique o número], de DD de mmmmmm de aaaaa

-

EMENTA

-

DIGITE O TEXTO EM CAIXA ALTA

-

Clique aqui para digitar o texto.

-

Clique aqui para digitar o texto.

-

Clique aqui para digitar o texto.

-

ACÓRDÃO

-

Vistos, relatados e discutidos os presentes autos, acordam os membros do Conselho Diretor, por unanimidade, nos termos da Análise nº XX/AAAA-GCxx, de dd de mmmmmm de aaaaa, integrante deste Acórdão:

-

Clique aqui para digitar o texto.

-

Clique aqui para digitar o texto.

-

Clique aqui para digitar o texto.

-

Participaram da deliberação o Presidente [nome completo] e os Conselheiros [nome completo de cada Conselheiro participante].

-

Ausente, justificadamente, o Conselheiro [nome completo], por motivo de [indicar o motivo].

- ', - 'Html' => 'S' - ], - [ - 'IdSecaoModelo' => 255, - 'IdDocumento' => $IdDocumento, - 'Ordem' => 50, - 'SomenteLeitura' => 'N', - 'Assinatura' => 'S', - 'Principal' => 'N', - 'Dinamica' => 'N', - 'Cabecalho' => 'N', - 'Rodape' => 'N', - 'Conteudo' => null, - 'Html' => 'N' - ], - [ - 'IdSecaoModelo' => 324, - 'IdDocumento' => $IdDocumento, - 'Ordem' => 1000, - 'SomenteLeitura' => 'S', - 'Assinatura' => 'N', - 'Principal' => 'N', - 'Dinamica' => 'S', - 'Cabecalho' => 'N', - 'Rodape' => 'S', - 'Conteudo' => '
- - - - - -
Referência: Processo nº @processo@SEI nº @documento@
', - 'Html' => 'S' - ] - ]; - } - - // protected function cadastrarVariados($dados = []) - // { - // foreach ($dados as $dado) { - // $this->cadastrar($dado); - // } - // } -} diff --git a/tests_super/funcional/src/fixtures/TipoProcessoPadraoFixture.php b/tests_super/funcional/src/fixtures/TipoProcessoPadraoFixture.php new file mode 100644 index 000000000..dad75f16f --- /dev/null +++ b/tests_super/funcional/src/fixtures/TipoProcessoPadraoFixture.php @@ -0,0 +1,30 @@ +objPenParametroDTO = new \PenParametroDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + public function cadastrar($dados = []) + { + $objPenParametroDTO = new \PenParametroDTO(); + $objPenParametroDTO->setStrNome($dados['Nome']); + + $objPenParametroBD = new \PenParametroBD($this->inicializarObjInfraIBanco()); + if($objPenParametroBD->contar($objPenParametroDTO) > 0) { + $objPenParametroDTO->setStrValor($dados['Valor']); + $objPenParametroBD->alterar($objPenParametroDTO); + } + } +} diff --git a/tests_super/funcional/src/paginas/PaginaAnexarProcesso.php b/tests_super/funcional/src/paginas/PaginaAnexarProcesso.php index 7e1516bfa..183a933d7 100755 --- a/tests_super/funcional/src/paginas/PaginaAnexarProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaAnexarProcesso.php @@ -1,35 +1,35 @@ -test->byId('txtProtocolo'); - - if(isset($protocolo)){ - $protocoloInput->value($protocolo); - $this->test->byId('btnPesquisar')->click(); - } - - return $protocoloInput->value(); - } - - public function anexar() - { - $anexarButton = $this->test->byId('sbmAnexar'); - $anexarButton->click(); - $this->alertTextAndClose(); - } - - - public function anexarProcesso($protocolo) - { - $this->protocolo($protocolo); - $this->anexar(); - } -} +test->byId('txtProtocolo'); + + if(isset($protocolo)){ + $protocoloInput->value($protocolo); + $this->test->byId('btnPesquisar')->click(); + } + + return $protocoloInput->value(); + } + + public function anexar() + { + $anexarButton = $this->test->byId('sbmAnexar'); + $anexarButton->click(); + $this->alertTextAndClose(); + } + + + public function anexarProcesso($protocolo) + { + $this->protocolo($protocolo); + $this->anexar(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaAssinaturaDocumento.php b/tests_super/funcional/src/paginas/PaginaAssinaturaDocumento.php index 2a2facffd..cd3de4a1d 100755 --- a/tests_super/funcional/src/paginas/PaginaAssinaturaDocumento.php +++ b/tests_super/funcional/src/paginas/PaginaAssinaturaDocumento.php @@ -1,67 +1,67 @@ -test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("txtUsuario"); - - if(isset($strAssinante)){ - $input->value($strAssinante); - $this->test->waitUntil(function($testCase) { - $nomeAssinante = $testCase->byId("txtUsuario")->value(); - $testCase->byLinkText($nomeAssinante)->click(); - return true; - }, 8000); - } - - return $input->value(); - } - - public function senha($value) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("pwdSenha"); - return $input->value($value); - } - - public function selecionarOrgaoAssinante($strOrgaoAssinante) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("selOrgao"); - $this->test->select($input)->selectOptionByLabel($strOrgaoAssinante); - return $this->test->select($input)->selectedLabel(); - } - - public function selecionarCargoAssinante($strCargoAssinante) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("selCargoFuncao"); - $this->test->select($input)->selectOptionByLabel($strCargoAssinante); - return $this->test->select($input)->selectedLabel(); - } - - public function assinarComLoginSenha($pwdSenha) - { - $this->test->frame(null); - $this->test->frame("modal-frame"); - $input = $this->test->byId("pwdSenha"); - $input->value($pwdSenha); - $this->test->keys(Keys::ENTER); - } - -} +test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("txtUsuario"); + + if(isset($strAssinante)){ + $input->value($strAssinante); + $this->test->waitUntil(function($testCase) { + $nomeAssinante = $testCase->byId("txtUsuario")->value(); + $testCase->byLinkText($nomeAssinante)->click(); + return true; + }, 8000); + } + + return $input->value(); + } + + public function senha($value) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("pwdSenha"); + return $input->value($value); + } + + public function selecionarOrgaoAssinante($strOrgaoAssinante) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("selOrgao"); + $this->test->select($input)->selectOptionByLabel($strOrgaoAssinante); + return $this->test->select($input)->selectedLabel(); + } + + public function selecionarCargoAssinante($strCargoAssinante) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("selCargoFuncao"); + $this->test->select($input)->selectOptionByLabel($strCargoAssinante); + return $this->test->select($input)->selectedLabel(); + } + + public function assinarComLoginSenha($pwdSenha) + { + $this->test->frame(null); + $this->test->frame("modal-frame"); + $input = $this->test->byId("pwdSenha"); + $input->value($pwdSenha); + $this->test->keys(Keys::ENTER); + } + +} diff --git a/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php index 370651c83..54fc4cafc 100644 --- a/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php +++ b/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -9,27 +9,27 @@ class PaginaCadastrarProcessoEmBloco extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarListagemBlocoDeTramite() + public function navegarListagemBlocoDeTramite() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Blocos de Trâmite Externo')); - $this->test->byXPath("//a[@link='md_pen_tramita_em_bloco']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Blocos de Trâmite Externo', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='md_pen_tramita_em_bloco']")->click(); + } /** * Setar parametro para novo mapeamento de orgãos externos * * @return void */ - public function setarParametros($estrutura, $origem) + public function setarParametros($estrutura, $origem) { - $this->selectRepositorio($estrutura); - $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem - } + $this->selectRepositorio($estrutura); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + } /** * Seleciona repositório por sigla @@ -37,17 +37,17 @@ public function setarParametros($estrutura, $origem) * @param string $siglaRepositorio * @return string */ - private function selectRepositorio($siglaRepositorio) + private function selectRepositorio($siglaRepositorio) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - return $this->test->byId('selRepositorioEstruturas')->value(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas')->value(); + } + /** * Seleciona unidade por nome * @@ -56,175 +56,198 @@ private function selectRepositorio($siglaRepositorio) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) - { - $this->unidadeInput = $this->test->byId('txtUnidade'); - $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')->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(); - } + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade'); + $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')->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(); + } - public function novoBlocoDeTramite() + public function novoBlocoDeTramite() { - $this->test->byId("bntNovo")->click(); - } + $this->test->byId("bntNovo")->click(); + } - public function criarNovoBloco() + public function criarNovoBloco() { - $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); - } + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } - public function editarBlocoDeTramite($descricao = null) + public function editarBlocoDeTramite($descricao = null) { - $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); + $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); - if ($descricao != null) { - $this->test->byId('txtDescricao')->clear(); - $this->test->byId('txtDescricao')->value($descricao); - } + if ($descricao != null) { + $this->test->byId('txtDescricao')->clear(); + $this->test->byId('txtDescricao')->value($descricao); } + } - public function selecionarExcluirBloco() + public function selecionarExcluirBloco() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } - public function buscarMensagemAlerta() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } - public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) - { - // Preencher parâmetros do trâmite - $this->selectRepositorio($repositorio); - $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); - $this->btnEnviar(); - - if ($callbackEnvio == null) { - $mensagemAlerta = null; - try { - $mensagemAlerta = $this->alertTextAndClose(true); - } catch (Exception $e) { - } - if ($mensagemAlerta) { - throw new Exception($mensagemAlerta); - } - } + public function buscarQuantidadeProcessosRecusados() + { + $linhasDaTabelaRecusadas = $this->test->elements($this->test->using('xpath')->value("//img[@title='Recusado']")); + return count($linhasDaTabelaRecusadas); + } - try { - $mensagemAlerta = $this->alertTextAndClose(true); - } catch (Exception $e) { - } + public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) + { + // Preencher parâmetros do trâmite + $this->selectRepositorio($repositorio); + $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); + $this->btnEnviar(); - if (isset($mensagemAlerta)) { - throw new Exception($mensagemAlerta); - } + if ($callbackEnvio == null) { + $mensagemAlerta = null; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if ($mensagemAlerta) { + throw new Exception($mensagemAlerta); + } + } - $callbackEnvio = $callbackEnvio ?: function ($testCase) { - try { - $testCase->frame('ifrEnvioProcesso'); - $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); - $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); - $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); - $btnFechar->click(); - } finally { - try { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - } catch (Exception $e) { - } - } - - return true; - }; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if (isset($mensagemAlerta)) { + throw new Exception($mensagemAlerta); + } + + $callbackEnvio = $callbackEnvio ?: function ($testCase) { try { - $this->test->waitUntil($callbackEnvio, $timeout); + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Trâmite externo do processo finalizado com sucesso!', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); } finally { - try { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - } catch (Exception $e) { - } + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } } - sleep(1); + return true; + }; + + try { + $this->test->waitUntil($callbackEnvio, $timeout); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } } - public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) + sleep(1); + } + + public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) { - $strProtocoloTeste = $processoTeste['PROTOCOLO']; + $strProtocoloTeste = $processoTeste['PROTOCOLO']; - $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { - sleep(5); - $this->paginaBase->navegarParaControleProcesso(); - $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); - return true; - }, PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - } + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + } - public function retornarTextoColunaDaTabelaDeBlocos() + public function retornarTextoColunaDaTabelaDeBlocos() { - $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); - $terceiraColuna = $tabela->byXPath('./td[3]'); + $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); + $terceiraColuna = $tabela->byXPath('./td[3]'); - return $terceiraColuna->text(); - } + return $terceiraColuna->text(); + } - public function retornarQuantidadeDeProcessosNoBloco() + public function retornarQuantidadeDeProcessosNoBloco() { - // Localiza todas as linhas da tabela com o XPath - $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + // Localiza todas as linhas da tabela com o XPath + $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); - // Obtém o número de linhas - return count($linhasDaTabela); - } + // Obtém o número de linhas + return count($linhasDaTabela); + } - public function bntTramitarBloco() + public function bntTramitarBloco() { - $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } - public function bntVisualizarProcessos() + public function bntVisualizarProcessos() { - $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); + } - public function btnSalvar() + public function btnSelecionarTodosProcessos() + { + $this->test->byXPath("//*[@id='imgInfraCheck']")->click(); + } + + public function btnComandoSuperiorExcluir() + { + $this->test->byXPath('//*[@id="divInfraBarraComandosSuperior"]/button[@value="Excluir"]')->click(); + $this->test->acceptAlert(); + } + + public function btnComandoSuperiorFechar() + { + $this->test->byXPath('//*[@id="divInfraBarraComandosSuperior"]/button[@value="Fechar"]')->click(); + } + + public function btnSalvar() { - $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); - $buttonElement->click(); - } + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } - public function btnEnviar() + public function btnEnviar() { - $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); - $buttonElement->click(); - } + $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); + $buttonElement->click(); + } } \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php b/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php index 0b711688c..78385e129 100644 --- a/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php +++ b/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php @@ -13,20 +13,20 @@ class PaginaCadastroMapEnvioCompDigitais extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } /** * Clicar no botão novo * * @return void */ - public function novo() + public function novo() { - $this->test->byId("btnNovo")->click(); - } + $this->test->byId("btnNovo")->click(); + } /** * Selecionar repositório @@ -36,11 +36,11 @@ public function novo() * @param string $unidade * @return void */ - public function setarParametros($estrutura, $unidade) + public function setarParametros($estrutura, $unidade) { - $this->selectRepositorio($estrutura); - $this->selectUnidade($unidade); - } + $this->selectRepositorio($estrutura); + $this->selectUnidade($unidade); + } /** * Seleciona repositório por sigla @@ -48,17 +48,17 @@ public function setarParametros($estrutura, $unidade) * @param string $siglaRepositorio * @return string */ - private function selectRepositorio($siglaRepositorio) + private function selectRepositorio($siglaRepositorio) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } - - return $this->test->byId('selRepositorioEstruturas')->value(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas')->value(); + } + /** * Seleciona unidade por nome * @@ -66,92 +66,93 @@ private function selectRepositorio($siglaRepositorio) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $hierarquia = null) + private function selectUnidade($nomeUnidade, $hierarquia = null) { - $this->unidadeInput = $this->test->byId('txtUnidade'); - $this->unidadeInput->clear(); - $this->unidadeInput->value($nomeUnidade); - $this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($hierarquia) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->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(); - } + $this->unidadeInput = $this->test->byId('txtUnidade'); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->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(); + } /** * Clicar no botão salvar * * @return void */ - public function salvar() + public function salvar() { - $this->test->byId("btnSalvar")->click(); - } + $this->test->byId("btnSalvar")->click(); + } /** * Seleciona botão editar da primeira linha de tabela * * @return void */ - public function editar() + public function editar() { - $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); + } /** * Exluir mapeamentos existentes * * @return void */ - public function excluirMapeamentosExistentes() + public function excluirMapeamentosExistentes() { - try{ - $lnkInfraCheck=$this->test->byXPath('//*[@id="lnkInfraCheck"]'); - $lnkInfraCheck->click(); - $this->excluirSelecionados(); - sleep(1); - $mensagem = $this->buscarMensagemAlerta(); - $this->test->assertStringContainsString( - utf8_encode('Mapeamento excluído com sucesso.'), - $mensagem - ); - } catch (Exception $e) { - } + try{ + $lnkInfraCheck=$this->test->byXPath('//*[@id="lnkInfraCheck"]'); + $lnkInfraCheck->click(); + $this->excluirSelecionados(); + sleep(1); + $mensagem = $this->buscarMensagemAlerta(); + $this->test->assertStringContainsString( + mb_convert_encoding('Mapeamento excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } catch (Exception $e) { } + } /** * Selecionar todos os resultados * * @return void */ - public function selecionarTodos() + public function selecionarTodos() { - $this->test->byXPath('//*[@id="lnkInfraCheck"]')->click(); - } + $this->test->byXPath('//*[@id="lnkInfraCheck"]')->click(); + } /** * Excluir selecionados * * @return void */ - public function excluirSelecionados() + public function excluirSelecionados() { - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } /** * Selecionar primeira checkbox de exclusão @@ -160,12 +161,12 @@ public function excluirSelecionados() * * @return void */ - public function selecionarExcluir() + public function selecionarExcluir() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } /** * Lispar campo de pesquisa @@ -175,23 +176,23 @@ public function selecionarExcluir() * @param string $textoPesquisa * @return void */ - public function selecionarPesquisa($textoPesquisa) + public function selecionarPesquisa($textoPesquisa) { - $this->test->byId('txtNomeEstrutura')->clear(); - $this->test->byId('txtNomeEstrutura')->value($textoPesquisa); - $this->test->byId("btnPesquisar")->click(); - } + $this->test->byId('txtNomeEstrutura')->clear(); + $this->test->byId('txtNomeEstrutura')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } /** * Selecionar todos os intens para impressão * * @return void */ - public function selecionarImprimir() + public function selecionarImprimir() { - $this->test->byId("lnkInfraCheck")->click(); - // $this->test->byId("btnImprimir")->click(); - } + $this->test->byId("lnkInfraCheck")->click(); + // $this->test->byId("btnImprimir")->click(); + } /** * Buscar item de tabela por nome @@ -199,26 +200,26 @@ public function selecionarImprimir() * @param string $nome * @return string|null */ - public function buscarNome($nome) + 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; - } + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; } + } /** * Buscar mensagem de alerta da página * * @return string */ - public function buscarMensagemAlerta() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } } \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php index e3a880d51..d33cc9da2 100644 --- a/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php +++ b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -9,28 +9,28 @@ class PaginaCadastroOrgaoExterno extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarCadastroOrgaoExterno() + public function navegarCadastroOrgaoExterno() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Unidades')); - $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1')); + $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) + 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 - } + $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 @@ -39,17 +39,17 @@ public function setarParametros($estrutura, $origem, $destino) * @param string $origemDestino * @return string */ - private function selectRepositorio($siglaRepositorio, $origemDestino) + private function selectRepositorio($siglaRepositorio, $origemDestino) { - $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $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(); + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); } + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + /** * Seleciona unidade por nome * @@ -58,30 +58,31 @@ private function selectRepositorio($siglaRepositorio, $origemDestino) * @param ?string $hierarquia * @return string */ - private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + 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; - } + $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); + 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(); - } + return $this->unidadeInput->value(); + } /** * Seleciona unidade por nome @@ -91,50 +92,51 @@ private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) * @param ?string $hierarquia * @return string */ - private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + 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; - } + $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); + 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(); - } + return $this->unidadeInput->value(); + } /** * Seleciona botão novo da página * * @return void */ - public function novoMapOrgao() + public function novoMapOrgao() { - $this->test->byId("btnNovo")->click(); - } + $this->test->byId("btnNovo")->click(); + } /** * Seleciona botão editar da primeira linha de tabela * * @return void */ - public function editarMapOrgao() + public function editarMapOrgao() { - $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); - } + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } /** * Selecionar primeira checkbox de exclusão @@ -143,37 +145,37 @@ public function editarMapOrgao() * * @return void */ - public function selecionarExcluirMapOrgao() + public function selecionarExcluirMapOrgao() { - $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); - $this->test->byId("btnExcluir")->click(); - $this->test->acceptAlert(); - } + $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() + public function salvar() { - $this->test->byId("btnSalvar")->click(); - } + $this->test->byId("btnSalvar")->click(); + } - public function abrirSelecaoDeArquivoParaImportacao() + 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; - }); - } + $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 @@ -181,17 +183,17 @@ public function abrirSelecaoDeArquivoParaImportacao() * @param string $origem * @return string|null */ - public function buscarOrgaoOrigem($origem) + 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; - } + 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 @@ -199,28 +201,28 @@ public function buscarOrgaoOrigem($origem) * @param string $origem * @return string|null */ - public function buscarOrgaoDestino($destino) + 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; - } + 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() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } /** * Lispar campo de pesquisa @@ -230,12 +232,12 @@ public function buscarMensagemAlerta() * @param string $textoPesquisa * @return void */ - public function selecionarPesquisa($textoPesquisa) + public function selecionarPesquisa($textoPesquisa) { - $this->test->byId('txtSiglaOrigem')->clear(); - $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); - $this->test->byId("btnPesquisar")->click(); - } + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } /** * Buscar item de tabela por nome @@ -243,15 +245,15 @@ public function selecionarPesquisa($textoPesquisa) * @param string $nome * @return string|null */ - public function buscarNome($nome) + 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; - } + 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/PaginaCancelarDocumento.php b/tests_super/funcional/src/paginas/PaginaCancelarDocumento.php index 214cdeaf8..f1047b591 100755 --- a/tests_super/funcional/src/paginas/PaginaCancelarDocumento.php +++ b/tests_super/funcional/src/paginas/PaginaCancelarDocumento.php @@ -1,30 +1,30 @@ -motivoCancelamento($motivoCancelamento); - $this->salvar(); - } - - private function motivoCancelamento($value) - { - $input = $this->test->byId("txaMotivo"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - private function salvar() - { - $this->test->byId("sbmSalvar")->click(); - } -} +motivoCancelamento($motivoCancelamento); + $this->salvar(); + } + + private function motivoCancelamento($value) + { + $input = $this->test->byId("txaMotivo"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + private function salvar() + { + $this->test->byId("sbmSalvar")->click(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaConfiguracaoModulo.php b/tests_super/funcional/src/paginas/PaginaConfiguracaoModulo.php index 0029b53ab..b393c38e3 100644 --- a/tests_super/funcional/src/paginas/PaginaConfiguracaoModulo.php +++ b/tests_super/funcional/src/paginas/PaginaConfiguracaoModulo.php @@ -8,42 +8,42 @@ class PaginaConfiguracaoModulo extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarPaginaConfiguracaoModulo() + public function navegarPaginaConfiguracaoModulo() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Parâmetros de Configuração')); - $this->test->byXPath("//a[@link='pen_parametros_configuracao']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Parâmetros de Configuração', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_parametros_configuracao']")->click(); + } - public function getTituloPaginaConfiguracao() + public function getTituloPaginaConfiguracao() { - return $this->test->byId("divInfraBarraLocalizacao")->text(); - } + return $this->test->byId("divInfraBarraLocalizacao")->text(); + } - public function navegarPaginaNovoMapeamentoUnidade() + public function navegarPaginaNovoMapeamentoUnidade() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Tramita GOV.BR')); - $this->test->byXPath("//a[@link='pen_map_unidade_cadastrar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Tramita GOV.BR', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_unidade_cadastrar']")->click(); + } - public function getTituloPaginaNovoMapeamentoUnidade() + public function getTituloPaginaNovoMapeamentoUnidade() { - return $this->test->byId("lblUnidadePen")->text(); - } + return $this->test->byId("lblUnidadePen")->text(); + } - public function navegarPaginaHipoteseRestricaoPadrao() + public function navegarPaginaHipoteseRestricaoPadrao() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Hipótese de Restrição Padrão')); - $this->test->byXPath("//a[@link='pen_map_hipotese_legal_padrao_cadastrar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Hipótese de Restrição Padrão', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_hipotese_legal_padrao_cadastrar']")->click(); + } - public function getTituloPaginaHipoteseRestricaoPadrao() + public function getTituloPaginaHipoteseRestricaoPadrao() { - return $this->test->byId("divInfraBarraLocalizacao")->text(); - } + return $this->test->byId("divInfraBarraLocalizacao")->text(); + } } diff --git a/tests_super/funcional/src/paginas/PaginaConsultarAndamentos.php b/tests_super/funcional/src/paginas/PaginaConsultarAndamentos.php index ffd6bac8f..d46eedd95 100755 --- a/tests_super/funcional/src/paginas/PaginaConsultarAndamentos.php +++ b/tests_super/funcional/src/paginas/PaginaConsultarAndamentos.php @@ -1,40 +1,40 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoEmTramitacao($strUnidadeDestino) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "Processo em tramitação externa para $strUnidadeDestino"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoRecebido($strUnidadeDestino) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "Recebido em $strUnidadeDestino"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } - - public function contemTramiteProcessoRejeitado($strUnidadeDestino, $strMotivo) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $mensagemTramite = "O processo foi recusado pelo orgão $strUnidadeDestino pelo seguinte motivo: $strMotivo"; - return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; - } -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoEmTramitacao($strUnidadeDestino) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "Processo em tramitação externa para $strUnidadeDestino"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoRecebido($strUnidadeDestino) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "Recebido em $strUnidadeDestino"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } + + public function contemTramiteProcessoRejeitado($strUnidadeDestino, $strMotivo) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $mensagemTramite = "O processo foi recusado pelo orgão $strUnidadeDestino pelo seguinte motivo: $strMotivo"; + return strpos($this->test->byCssSelector('body')->text(), $mensagemTramite) !== false; + } +} diff --git a/tests_super/funcional/src/paginas/PaginaControleProcesso.php b/tests_super/funcional/src/paginas/PaginaControleProcesso.php index 227f998e0..bbbf1d6c4 100755 --- a/tests_super/funcional/src/paginas/PaginaControleProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaControleProcesso.php @@ -1,97 +1,101 @@ -test->byId($painel)->elements($this->test->using('css selector')->value('tr'))); - } catch (\Exception $th) { } - } - - return $resultado; - } - - protected function listarProcessos($processosGerados, $processosRecebidos) - { - $listaProtocolos = array(); - $processosRows = $this->obterLinhasProcessos($processosGerados, $processosRecebidos); - if(isset($processosRows) && count($processosRows) > 0){ - for ($i=1; $i < count($processosRows); $i++) { - $listaProtocolos[] = trim($processosRows[$i]->text()); - } - } - - return $listaProtocolos; - } - - public function processosGerados() - { - return $this->listarProcessos(true, false); - } - - public function processosRecebidos() - { - return $this->listarProcessos(false, true); - } - - public function contemProcesso($numeroProcesso, $processosGerados = true, $processosRecebidos = true) - { - $listaProcessos = $this->listarProcessos($processosGerados, $processosRecebidos); - return ($listaProcessos != null) ? in_array($numeroProcesso, $listaProcessos) : false; - } - - public function contemAlertaProcessoRecusado($numeroProcesso) - { - $processosRows = $this->obterLinhasProcessos(true, true); - foreach ($processosRows as $row) { - try{ - if(strpos($row->text(), $numeroProcesso) !== false){ - foreach ($row->elements($this->test->using('css selector')->value('img')) as $icone) { - if(strpos($icone->attribute("src"), 'pen_tramite_recusado.png') !== false) - return true; - } - } - } - catch(\Exception $e) { - return false; - } - } - - return false; - } - - public function localizarProcessoPelaDescricao($descricao) - { - $processosRows = $this->obterLinhasProcessos(true, true); - foreach ($processosRows as $row) { - try{ - foreach ($row->elements($this->test->using('css selector')->value('a')) as $link) { - if(strpos($link->attribute("onmouseover"), $descricao) !== false) - return $link->text(); - } - } - catch(\Exception $e) { - return false; - } - } - - return false; - } - - public function abrirProcesso($strProtocolo) - { - $this->test->byLinkText($strProtocolo)->click(); - } -} +test->byId($painel)->elements($this->test->using('css selector')->value('tr'))); + } catch (\Exception $th) { } + } + + return $resultado; + } + + protected function listarProcessos($processosGerados, $processosRecebidos) + { + $listaProtocolos = array(); + $processosRows = $this->obterLinhasProcessos($processosGerados, $processosRecebidos); + if(isset($processosRows) && count($processosRows) > 0){ + for ($i=1; $i < count($processosRows); $i++) { + $listaProtocolos[] = trim($processosRows[$i]->text()); + } + } + + return $listaProtocolos; + } + + public function processosGerados() + { + return $this->listarProcessos(true, false); + } + + public function processosRecebidos() + { + return $this->listarProcessos(false, true); + } + + public function contemProcesso($numeroProcesso, $processosGerados = true, $processosRecebidos = true) + { + $listaProcessos = $this->listarProcessos($processosGerados, $processosRecebidos); + return ($listaProcessos != null) ? in_array($numeroProcesso, $listaProcessos) : false; + } + + public function contemAlertaProcessoRecusado($numeroProcesso) + { + $processosRows = $this->obterLinhasProcessos(true, true); + foreach ($processosRows as $row) { + try{ + if(strpos($row->text(), $numeroProcesso) !== false){ + foreach ($row->elements($this->test->using('css selector')->value('img')) as $icone) { + if(strpos($icone->attribute("src"), 'pen_tramite_recusado.png') !== false) { + return true; + } + } + } + } + catch(\Exception $e) { + return false; + } + } + + return false; + } + + public function localizarProcessoPelaDescricao($descricao) + { + $processosRows = $this->obterLinhasProcessos(true, true); + foreach ($processosRows as $row) { + try{ + foreach ($row->elements($this->test->using('css selector')->value('a')) as $link) { + if(strpos($link->attribute("onmouseover"), $descricao) !== false) { + return $link->text(); + } + } + } + catch(\Exception $e) { + return false; + } + } + + return false; + } + + public function abrirProcesso($strProtocolo) + { + $this->test->byLinkText($strProtocolo)->click(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaDocumento.php b/tests_super/funcional/src/paginas/PaginaDocumento.php index e18432b2e..e130b489a 100755 --- a/tests_super/funcional/src/paginas/PaginaDocumento.php +++ b/tests_super/funcional/src/paginas/PaginaDocumento.php @@ -1,177 +1,181 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Assinar Documento']")->click(); - } - - public function navegarParaConsultarDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Consultar/Alterar Documento')]")->click(); - } - - public function navegarParaCancelarDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Cancelar Documento')]")->click(); - } - - public function navegarParaMoverDocumento() - { - sleep(2); - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[contains(@alt, 'Mover Documento para outro Processo')]")->click(); - } - - public function ehProcessoAnexado() - { - sleep(2); - - try { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//div[@id='divArvoreInformacao']/a[contains(@href, 'acao=procedimento_trabalhar')]"); - $this->test->byXPath("//img[contains(@alt, 'Desanexar Processo')]"); - return true; - } catch (\Exception $e) { - return false; - } - } - - public function descricao($value = null) - { - $input = $this->test->byId("txtDescricao"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoesNaTabela($value = null) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - return $this->test->byXPath("//table[@class='infraTable']//tr[2]/td[2]")->text(); - } - - public function dataElaboracao($value = null) - { - $input = $this->test->byId("txtDataElaboracao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function nomeAnexo() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - return $this->test->byXPath("//table[@id='tblAnexos']/tbody/tr/td[2]/div")->text(); - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); - return array_map(function($opt) {return $opt->text();}, $options); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("optPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("optRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("optSigiloso")->click(); - } - } - - if($this->test->byId("optPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("optRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("optSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function recuperarHipoteseLegal() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - return $select->selectedLabel(); - } - - public function salvarDocumento() - { - $this->test->byId("btnSalvar")->click(); - } -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Assinar Documento']")->click(); + } + + public function navegarParaConsultarDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Consultar/Alterar Documento')]")->click(); + } + + public function navegarParaCancelarDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Cancelar Documento')]")->click(); + } + + public function navegarParaMoverDocumento() + { + sleep(2); + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[contains(@alt, 'Mover Documento para outro Processo')]")->click(); + } + + public function ehProcessoAnexado() + { + sleep(2); + + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//div[@id='divArvoreInformacao']/a[contains(@href, 'acao=procedimento_trabalhar')]"); + $this->test->byXPath("//img[contains(@alt, 'Desanexar Processo')]"); + return true; + } catch (\Exception $e) { + return false; + } + } + + public function descricao($value = null) + { + $input = $this->test->byId("txtDescricao"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoesNaTabela($value = null) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + return $this->test->byXPath("//table[@class='infraTable']//tr[2]/td[2]")->text(); + } + + public function dataElaboracao($value = null) + { + $input = $this->test->byId("txtDataElaboracao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function nomeAnexo() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + return $this->test->byXPath("//table[@id='tblAnexos']/tbody/tr/td[2]/div")->text(); + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); + return array_map(function($opt) {return $opt->text(); + }, $options); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("optPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("optRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("optSigiloso")->click(); + } + } + + if($this->test->byId("optPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("optRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("optSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function recuperarHipoteseLegal() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + return $select->selectedLabel(); + } + + public function salvarDocumento() + { + $this->test->byId("btnSalvar")->click(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaEditarProcesso.php b/tests_super/funcional/src/paginas/PaginaEditarProcesso.php index 8d4061b48..b8ea504ac 100755 --- a/tests_super/funcional/src/paginas/PaginaEditarProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaEditarProcesso.php @@ -1,130 +1,136 @@ -test->byId("txtDescricao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function protocoloInformado($value = null) - { - $input = $this->test->byId("txtProtocoloInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function dataGeracaoProtocolo($value = null) - { - $input = $this->test->byId("txtDtaGeracaoInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("optPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("optRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("optSigiloso")->click(); - } - } - - if($this->test->byId("optPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("optRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("optSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); - return array_map(function($opt) {return $opt->text();}, $options); - } - - public function salvarProcesso() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function recuperarHipoteseLegal() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - return $select->selectedLabel(); - } - - public function gerarProtocolo() - { - $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); - return '999990.' . $strSequencia . '/2015-00'; - } -} +test->byId("txtDescricao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function protocoloInformado($value = null) + { + $input = $this->test->byId("txtProtocoloInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function dataGeracaoProtocolo($value = null) + { + $input = $this->test->byId("txtDtaGeracaoInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("optPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("optRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("optSigiloso")->click(); + } + } + + if($this->test->byId("optPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("optRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("optSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + $options = $this->test->byId('selInteressadosProcedimento')->elements($this->test->using('css selector')->value('option')); + return array_map(function($opt) {return $opt->text(); + }, $options); + } + + public function salvarProcesso() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function recuperarHipoteseLegal() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + return $select->selectedLabel(); + } + + public function gerarProtocolo() + { + $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); + return '999990.' . $strSequencia . '/2015-00'; + } +} diff --git a/tests_super/funcional/src/paginas/PaginaEnviarProcesso.php b/tests_super/funcional/src/paginas/PaginaEnviarProcesso.php index 32eba51a6..2221bc6fe 100755 --- a/tests_super/funcional/src/paginas/PaginaEnviarProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaEnviarProcesso.php @@ -1,34 +1,34 @@ -unidadeInput = $test->byId('txtUnidade'); - $this->manterAbertoCheck = $test->byId('chkSinManterAberto'); - $this->removerAnotacoesCheck = $test->byId('chkSinRemoverAnotacoes'); - $this->enviarNotificacaoCheck = $test->byId('chkSinEnviarEmailNotificacao'); - $this->dataCertaOption = $test->byId('optDataCerta'); - $this->prazoInput = $test->byId('txtPrazo'); - $this->diasOption = $test->byId('optDias'); - $this->diasInput = $test->byId('txtDias'); - $this->diasUteisInput = $test->byId('chkSinDiasUteis'); - $this->enviarButton = $test->byId('sbmEnviar'); - } - - public function adicionarUnidade($nomeUnidade) - { - $this->unidadeInput->value($nomeUnidade); - $this->test->waitUntil(function($testCase) { - $nomeUnidade = $testCase->byId('txtUnidade')->value(); - $testCase->byLinkText($nomeUnidade)->click(); - return true; - }, 8000); - } - - public function salvar() - { - $this->enviarButton->click(); - } -} +unidadeInput = $test->byId('txtUnidade'); + $this->manterAbertoCheck = $test->byId('chkSinManterAberto'); + $this->removerAnotacoesCheck = $test->byId('chkSinRemoverAnotacoes'); + $this->enviarNotificacaoCheck = $test->byId('chkSinEnviarEmailNotificacao'); + $this->dataCertaOption = $test->byId('optDataCerta'); + $this->prazoInput = $test->byId('txtPrazo'); + $this->diasOption = $test->byId('optDias'); + $this->diasInput = $test->byId('txtDias'); + $this->diasUteisInput = $test->byId('chkSinDiasUteis'); + $this->enviarButton = $test->byId('sbmEnviar'); + } + + public function adicionarUnidade($nomeUnidade) + { + $this->unidadeInput->value($nomeUnidade); + $this->test->waitUntil(function($testCase) { + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + $testCase->byLinkText($nomeUnidade)->click(); + return true; + }, 8000); + } + + public function salvar() + { + $this->enviarButton->click(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaEnvioParcialListar.php b/tests_super/funcional/src/paginas/PaginaEnvioParcialListar.php index 913812752..1abaae0fb 100644 --- a/tests_super/funcional/src/paginas/PaginaEnvioParcialListar.php +++ b/tests_super/funcional/src/paginas/PaginaEnvioParcialListar.php @@ -9,15 +9,15 @@ class PaginaEnvioParcialListar extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarEnvioParcialListar() + public function navegarEnvioParcialListar() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Mapeamento de Envio Parcial')); - $this->test->byXPath("//a[@link='pen_map_envio_parcial_listar']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Mapeamento de Envio Parcial', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_envio_parcial_listar']")->click(); + } } diff --git a/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php index e9b4f2f31..c48790dfc 100644 --- a/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -9,55 +9,55 @@ class PaginaExportarTiposProcesso extends PaginaTeste * * @return void */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarExportarTiposProcessos() + public function navegarExportarTiposProcessos() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo')); - $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click(); - } + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Exportação de Tipos de Processo', 'UTF-8', 'ISO-8859-1')); + $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() + 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(); - } + $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) + public function verificarExisteBotao($nomeBtn) { - try { - return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); - } catch (Exception $e) { - return null; - } + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; } + } - public function verificarQuantidadeDeLinhasSelecionadas() + 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; - }); - } + $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() + public function btnExportar() { - $this->test->byId("btnExportarModal")->click(); - sleep(5); - } + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } /** * Lispar campo de pesquisa @@ -65,25 +65,25 @@ public function btnExportar() * * @return void */ - public function selecionarPesquisa() + public function selecionarPesquisa() { - $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); - $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); - $this->test->byId("sbmPesquisar")->click(); - } + $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() + public function buscarPesquisa() { - try { - $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); - return !empty($elementos) && !is_null($elementos); - } catch (Exception $e) { - return false; - } + 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/PaginaIncluirDocumento.php b/tests_super/funcional/src/paginas/PaginaIncluirDocumento.php index f6846ccfd..d63ba98e4 100755 --- a/tests_super/funcional/src/paginas/PaginaIncluirDocumento.php +++ b/tests_super/funcional/src/paginas/PaginaIncluirDocumento.php @@ -1,189 +1,190 @@ -test->byId('txtFiltro')->value($tipoDocumento); - sleep(2); - $this->test->byLinkText($tipoDocumento)->click(); - } - catch (Exception $e){ - $this->test->byXPath("//img[@id='imgExibirSeries'] | //a[@id='ancExibirSeries']")->click(); - $this->test->byId('txtFiltro')->value($tipoDocumento); - sleep(2); - $this->test->byLinkText($tipoDocumento)->click(); - } - } - - public function selecionarTipoDocumentoExterno() - { - $this->selecionarTipoDocumento('Externo'); - } - - public function descricao($value) - { - $input = $this->test->byId("txtDescricao"); - return $input->value($value); - } - - public function tipoDocumento($value) - { - $input = $this->test->byId("selSerie"); - $this->test->select($input)->selectOptionByLabel($value); - } - - public function formato($value) - { - if($value != self::STA_FORMATO_NATO_DIGITAL) - throw new Exception("Outros formatos não implementados em PaginaIncluirDocumento"); - - $this->test->byId("divOptNato")->click(); - } - - public function anexo($arquivo) - { - $input = $this->test->byId("filArquivo"); - $input->value($arquivo); - $this->test->waitUntil(function($testCase) use($arquivo) { - $testCase->assertStringContainsString(basename($arquivo), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function dataElaboracao($value) - { - $input = $this->test->byId("txtDataElaboracao"); - return $input->value($value); - } - - public function observacoes($value) - { - $input = $this->test->byId("txaObservacoes"); - return $input->value($value); - } - - public function adicionarInteressado($nomeInteressado) - { - $input = $this->test->byId("txtInteressado"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - - sleep(2); - } - - public function salvarDocumento() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $input = $this->test->byId("lblPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $input = $this->test->byId("lblRestrito")->click(); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $input = $this->test->byId("lblSigiloso")->click(); - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - $select = $this->test->select($this->test->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function gerarDocumentoTeste(array $dadosDocumento = null) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); - sleep(2); - - $dadosDocumento = $dadosDocumento ?: array(); - $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; - $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); - $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); - $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); - $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; - $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; - - //$paginaIncluirDocumento = new PaginaIncluirDocumento($test); - $this->selecionarTipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); - $this->descricao($dadosDocumento["DESCRICAO"]); - $this->observacoes($dadosDocumento["OBSERVACOES"]); - $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); - $this->salvarDocumento(); - - $url = parse_url($this->test->byId("ifrArvoreHtml")->attribute("src")); - parse_str($url['query'], $query); - $dadosDocumento["ID_DOCUMENTO"] = $query["id_documento"]; - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->window($this->test->windowHandles()[1]); - $this->test->closeWindow(); - $this->test->window(''); - - $this->test->frame(NULL); - $this->test->frame("ifrArvore"); - - return trim($this->test->byId('anchor' . $query["id_documento"])->text()); - } - - public function gerarDocumentoExternoTeste(array $dadosDocumento, $comAnexo) - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); - sleep(2); - - $dadosDocumento = $dadosDocumento ?: array(); - $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; - $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); - $dadosDocumento["DATA_ELABORACAO"] = @$dadosDocumento["DATA_ELABORACAO"] ?: date("d/m/Y"); - $dadosDocumento["FORMATO_DOCUMENTO"] = @$dadosDocumento["FORMATO_DOCUMENTO"] ?: self::STA_FORMATO_NATO_DIGITAL; - $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); - $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); - $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; - $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; - - $this->selecionarTipoDocumentoExterno(); - sleep(2); - $this->tipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); - sleep(2); - - $this->dataElaboracao($dadosDocumento["DATA_ELABORACAO"]); - $this->formato($dadosDocumento["FORMATO_DOCUMENTO"]); - if($comAnexo){ - $this->anexo($dadosDocumento["ARQUIVO"]); - } - $this->observacoes($dadosDocumento["OBSERVACOES"]); - $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); - $this->salvarDocumento(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - } -} +test->byId('txtFiltro')->value($tipoDocumento); + sleep(2); + $this->test->byLinkText($tipoDocumento)->click(); + } + catch (Exception $e){ + $this->test->byXPath("//img[@id='imgExibirSeries'] | //a[@id='ancExibirSeries']")->click(); + $this->test->byId('txtFiltro')->value($tipoDocumento); + sleep(2); + $this->test->byLinkText($tipoDocumento)->click(); + } + } + + public function selecionarTipoDocumentoExterno() + { + $this->selecionarTipoDocumento('Externo'); + } + + public function descricao($value) + { + $input = $this->test->byId("txtDescricao"); + return $input->value($value); + } + + public function tipoDocumento($value) + { + $input = $this->test->byId("selSerie"); + $this->test->select($input)->selectOptionByLabel($value); + } + + public function formato($value) + { + if($value != self::STA_FORMATO_NATO_DIGITAL) { + throw new Exception("Outros formatos não implementados em PaginaIncluirDocumento"); + } + + $this->test->byId("divOptNato")->click(); + } + + public function anexo($arquivo) + { + $input = $this->test->byId("filArquivo"); + $input->value($arquivo); + $this->test->waitUntil(function($testCase) use($arquivo) { + $testCase->assertStringContainsString(basename($arquivo), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function dataElaboracao($value) + { + $input = $this->test->byId("txtDataElaboracao"); + return $input->value($value); + } + + public function observacoes($value) + { + $input = $this->test->byId("txaObservacoes"); + return $input->value($value); + } + + public function adicionarInteressado($nomeInteressado) + { + $input = $this->test->byId("txtInteressado"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + + sleep(2); + } + + public function salvarDocumento() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $input = $this->test->byId("lblPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $input = $this->test->byId("lblRestrito")->click(); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $input = $this->test->byId("lblSigiloso")->click(); + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + $select = $this->test->select($this->test->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function gerarDocumentoTeste(array $dadosDocumento = null) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); + sleep(2); + + $dadosDocumento = $dadosDocumento ?: array(); + $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; + $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); + $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); + $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); + $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; + $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; + + //$paginaIncluirDocumento = new PaginaIncluirDocumento($test); + $this->selecionarTipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); + $this->descricao($dadosDocumento["DESCRICAO"]); + $this->observacoes($dadosDocumento["OBSERVACOES"]); + $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); + $this->salvarDocumento(); + + $url = parse_url($this->test->byId("ifrArvoreHtml")->attribute("src")); + parse_str($url['query'], $query); + $dadosDocumento["ID_DOCUMENTO"] = $query["id_documento"]; + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->window($this->test->windowHandles()[1]); + $this->test->closeWindow(); + $this->test->window(''); + + $this->test->frame(null); + $this->test->frame("ifrArvore"); + + return trim($this->test->byId('anchor' . $query["id_documento"])->text()); + } + + public function gerarDocumentoExternoTeste(array $dadosDocumento, $comAnexo) + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Incluir Documento']")->click(); + sleep(2); + + $dadosDocumento = $dadosDocumento ?: array(); + $dadosDocumento["TIPO_DOCUMENTO"] = @$dadosDocumento["TIPO_DOCUMENTO"] ?: "Ofício"; + $dadosDocumento["DESCRICAO"] = @$dadosDocumento["DESCRICAO"] ?: util::random_string(20); + $dadosDocumento["DATA_ELABORACAO"] = @$dadosDocumento["DATA_ELABORACAO"] ?: date("d/m/Y"); + $dadosDocumento["FORMATO_DOCUMENTO"] = @$dadosDocumento["FORMATO_DOCUMENTO"] ?: self::STA_FORMATO_NATO_DIGITAL; + $dadosDocumento["OBSERVACOES"] = @$dadosDocumento["OBSERVACOES"] ?: util::random_string(100); + $dadosDocumento["INTERESSADOS"] = @$dadosDocumento["INTERESSADOS"] ?: util::random_string(40); + $dadosDocumento["RESTRICAO"] = @$dadosDocumento["RESTRICAO"] ?: PaginaIncluirDocumento::STA_NIVEL_ACESSO_PUBLICO; + $dadosDocumento["HIPOTESE_LEGAL"] = @$dadosDocumento["HIPOTESE_LEGAL"] ?: ""; + + $this->selecionarTipoDocumentoExterno(); + sleep(2); + $this->tipoDocumento($dadosDocumento["TIPO_DOCUMENTO"]); + sleep(2); + + $this->dataElaboracao($dadosDocumento["DATA_ELABORACAO"]); + $this->formato($dadosDocumento["FORMATO_DOCUMENTO"]); + if($comAnexo){ + $this->anexo($dadosDocumento["ARQUIVO"]); + } + $this->observacoes($dadosDocumento["OBSERVACOES"]); + $this->selecionarRestricao($dadosDocumento["RESTRICAO"], $dadosDocumento["HIPOTESE_LEGAL"]); + $this->salvarDocumento(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaIniciarProcesso.php b/tests_super/funcional/src/paginas/PaginaIniciarProcesso.php index 0f89d1d6c..5292a4e95 100755 --- a/tests_super/funcional/src/paginas/PaginaIniciarProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaIniciarProcesso.php @@ -1,170 +1,175 @@ -test->byId('txtFiltro')->value($tipoProcesso); - sleep(2); - $this->test->byLinkText($tipoProcesso)->click(); - } - catch (Exception $e){ - $this->test->byId("ancExibirTiposProcedimento")->click(); - $this->test->byId('txtFiltro')->value($tipoProcesso); - sleep(2); - $this->test->byLinkText($tipoProcesso)->click(); - } - } - - public function descricao($value = null) - { - $input = $this->test->byId("txtDescricao"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function observacoes($value = null) - { - $input = $this->test->byId("txaObservacoes"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function selecionarProtocoloManual() - { - $this->test->byId("optProtocoloManual")->click(); - } - - public function protocoloInformado($value = null) - { - $input = $this->test->byId("txtProtocoloInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function dataGeracaoProtocolo($value = null) - { - $input = $this->test->byId("txtDtaGeracaoInformar"); - if(isset($value)) $input->value($value); - return $input->value(); - } - - public function restricao($staNivelRestricao = null) - { - if(isset($staNivelRestricao)) - { - if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { - $this->test->byId("lblPublico")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { - $this->test->byId("lblRestrito")->click(); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { - $this->test->byId("lblSigiloso")->click(); - } - } - - if($this->test->byId("lblPublico")->selected()) - return self::STA_NIVEL_ACESSO_PUBLICO; - else if($this->test->byId("lblRestrito")->selected()) - return self::STA_NIVEL_ACESSO_RESTRITO; - else if($this->test->byId("lblSigiloso")->selected()) - return self::STA_NIVEL_ACESSO_SIGILOSO; - - } - - public function adicionarInteressado($arrayNomeInteressado) - { - $arrayNomeInteressado = array($arrayNomeInteressado); - - if(isset($arrayNomeInteressado)){ - foreach ($arrayNomeInteressado as $nomeInteressado) { - $input = $this->test->byId("txtInteressadoProcedimento"); - $input->value($nomeInteressado); - $this->test->keys(Keys::ENTER); - $this->test->acceptAlert(); - sleep(2); - } - } - } - - public function listarInteressados() - { - return $this->test->select($this->test->byId('selInteressadosProcedimento'))->selectedLabels(); - } - - public function salvarProcesso() - { - $this->test->byId("btnSalvar")->click(); - } - - public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') - { - if(isset($staNivelRestricao)) - { - $this->restricao($staNivelRestricao); - - if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) - { - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - } - else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) - { - $select = $this->test->select($this->test->byId('selHipoteseLegal')); - $select->selectOptionByLabel($strHipoteseLegal); - - $select = $this->test->select($this->test->byId('selGrauSigilo')); - $select->selectOptionByLabel($strGrauSigilo); - } - } - } - - public function gerarProtocolo() - { - $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); - return '999990.' . $strSequencia . '/2015-00'; - } - - public static function gerarProcessoTeste($test, array $dadosProcesso = null) - { - $test->byLinkText("Iniciar Processo")->click(); - - $dadosProcesso = $dadosProcesso ?: array(); - $dadosProcesso["TIPO_PROCESSO"] = @$dadosProcesso["TIPO_PROCESSO"] ?: "Licitação: Pregão Eletrônico"; - $dadosProcesso["DESCRICAO"] = @$dadosProcesso["DESCRICAO"] ?: util::random_string(20); - $dadosProcesso["OBSERVACOES"] = @$dadosProcesso["OBSERVACOES"] ?: util::random_string(100); - $dadosProcesso["INTERESSADOS"] = @$dadosProcesso["INTERESSADOS"] ?: util::random_string(40); - $dadosProcesso["RESTRICAO"] = @$dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO; - $dadosProcesso["HIPOTESE_LEGAL"] = @$dadosProcesso["HIPOTESE_LEGAL"] ?: ""; - - $paginaIniciarProcesso = new PaginaIniciarProcesso($test); - $paginaIniciarProcesso->selecionarTipoProcesso($dadosProcesso["TIPO_PROCESSO"]); - $paginaIniciarProcesso->descricao($dadosProcesso["DESCRICAO"]); - $paginaIniciarProcesso->observacoes($dadosProcesso["OBSERVACOES"]); - $paginaIniciarProcesso->selecionarRestricao($dadosProcesso["RESTRICAO"], $dadosProcesso["HIPOTESE_LEGAL"]); - $paginaIniciarProcesso->adicionarInteressado($dadosProcesso["INTERESSADOS"]); - - $paginaIniciarProcesso->salvarProcesso(); - - $test->frame(null); - $test->frame("ifrArvore"); - $protocoloProcesso = trim($test->byXPath("//a[@title='". $dadosProcesso["TIPO_PROCESSO"] ."']")->text()); - - return $protocoloProcesso; - } -} +test->byId('txtFiltro')->value($tipoProcesso); + sleep(2); + $this->test->byLinkText($tipoProcesso)->click(); + } + catch (Exception $e){ + $this->test->byId("ancExibirTiposProcedimento")->click(); + $this->test->byId('txtFiltro')->value($tipoProcesso); + sleep(2); + $this->test->byLinkText($tipoProcesso)->click(); + } + } + + public function descricao($value = null) + { + $input = $this->test->byId("txtDescricao"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function observacoes($value = null) + { + $input = $this->test->byId("txaObservacoes"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function selecionarProtocoloManual() + { + $this->test->byId("optProtocoloManual")->click(); + } + + public function protocoloInformado($value = null) + { + $input = $this->test->byId("txtProtocoloInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function dataGeracaoProtocolo($value = null) + { + $input = $this->test->byId("txtDtaGeracaoInformar"); + if(isset($value)) { $input->value($value); + } + return $input->value(); + } + + public function restricao($staNivelRestricao = null) + { + if(isset($staNivelRestricao)) + { + if($staNivelRestricao === self::STA_NIVEL_ACESSO_PUBLICO) { + $this->test->byId("lblPublico")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) { + $this->test->byId("lblRestrito")->click(); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) { + $this->test->byId("lblSigiloso")->click(); + } + } + + if($this->test->byId("lblPublico")->selected()) { + return self::STA_NIVEL_ACESSO_PUBLICO; + } else if($this->test->byId("lblRestrito")->selected()) { + return self::STA_NIVEL_ACESSO_RESTRITO; + } else if($this->test->byId("lblSigiloso")->selected()) { + return self::STA_NIVEL_ACESSO_SIGILOSO; + } + + } + + public function adicionarInteressado($arrayNomeInteressado) + { + $arrayNomeInteressado = array($arrayNomeInteressado); + + if(isset($arrayNomeInteressado)){ + foreach ($arrayNomeInteressado as $nomeInteressado) { + $input = $this->test->byId("txtInteressadoProcedimento"); + $input->value($nomeInteressado); + $this->test->keys(Keys::ENTER); + $this->test->acceptAlert(); + sleep(2); + } + } + } + + public function listarInteressados() + { + return $this->test->select($this->test->byId('selInteressadosProcedimento'))->selectedLabels(); + } + + public function salvarProcesso() + { + $this->test->byId("btnSalvar")->click(); + } + + public function selecionarRestricao($staNivelRestricao, $strHipoteseLegal = '', $strGrauSigilo = '') + { + if(isset($staNivelRestricao)) + { + $this->restricao($staNivelRestricao); + + if($staNivelRestricao === self::STA_NIVEL_ACESSO_RESTRITO) + { + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + } + else if($staNivelRestricao === self::STA_NIVEL_ACESSO_SIGILOSO) + { + $select = $this->test->select($this->test->byId('selHipoteseLegal')); + $select->selectOptionByLabel($strHipoteseLegal); + + $select = $this->test->select($this->test->byId('selGrauSigilo')); + $select->selectOptionByLabel($strGrauSigilo); + } + } + } + + public function gerarProtocolo() + { + $strSequencia = str_pad(rand(1, 999999), 6, "0", STR_PAD_LEFT); + return '999990.' . $strSequencia . '/2015-00'; + } + + public static function gerarProcessoTeste($test, array $dadosProcesso = null) + { + $test->byLinkText("Iniciar Processo")->click(); + + $dadosProcesso = $dadosProcesso ?: array(); + $dadosProcesso["TIPO_PROCESSO"] = @$dadosProcesso["TIPO_PROCESSO"] ?: "Licitação: Pregão Eletrônico"; + $dadosProcesso["DESCRICAO"] = @$dadosProcesso["DESCRICAO"] ?: util::random_string(20); + $dadosProcesso["OBSERVACOES"] = @$dadosProcesso["OBSERVACOES"] ?: util::random_string(100); + $dadosProcesso["INTERESSADOS"] = @$dadosProcesso["INTERESSADOS"] ?: util::random_string(40); + $dadosProcesso["RESTRICAO"] = @$dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO; + $dadosProcesso["HIPOTESE_LEGAL"] = @$dadosProcesso["HIPOTESE_LEGAL"] ?: ""; + + $paginaIniciarProcesso = new PaginaIniciarProcesso($test); + $paginaIniciarProcesso->selecionarTipoProcesso($dadosProcesso["TIPO_PROCESSO"]); + $paginaIniciarProcesso->descricao($dadosProcesso["DESCRICAO"]); + $paginaIniciarProcesso->observacoes($dadosProcesso["OBSERVACOES"]); + $paginaIniciarProcesso->selecionarRestricao($dadosProcesso["RESTRICAO"], $dadosProcesso["HIPOTESE_LEGAL"]); + $paginaIniciarProcesso->adicionarInteressado($dadosProcesso["INTERESSADOS"]); + + $paginaIniciarProcesso->salvarProcesso(); + + $test->frame(null); + $test->frame("ifrArvore"); + $protocoloProcesso = trim($test->byXPath("//a[@title='". $dadosProcesso["TIPO_PROCESSO"] ."']")->text()); + + return $protocoloProcesso; + } +} diff --git a/tests_super/funcional/src/paginas/PaginaLogin.php b/tests_super/funcional/src/paginas/PaginaLogin.php index 421003f49..8bc381e48 100755 --- a/tests_super/funcional/src/paginas/PaginaLogin.php +++ b/tests_super/funcional/src/paginas/PaginaLogin.php @@ -1,49 +1,58 @@ -usuarioInput = $test->byId('txtUsuario'); - $this->passwordInput = $test->byId('pwdSenha'); - $this->loginButton = $test->byId('Acessar'); - - } - - public function usuario($value) - { - if(isset($value)) - $this->usuarioInput->value($value); - - return $this->usuarioInput->value(); - } - - public function senha($value) - { - if(isset($value)) - $this->passwordInput->value($value); - - return $this->passwordInput->value(); - } - - public function orgao() - { - return $this->test->byId('divInfraBarraSuperior')->text(); - } - - public function submit() - { - $this->loginButton->click(); - return $this->test; - } - - public static function executarAutenticacao($test, $usuario="teste", $senha="teste") - { - $paginaLogin = new PaginaLogin($test); - $paginaLogin->usuario($usuario); - $paginaLogin->senha($senha); - $paginaLogin->submit(); - } -} \ No newline at end of file +usuarioInput = $test->byId('txtUsuario'); + $this->passwordInput = $test->byId('pwdSenha'); + try{ + $this->loginButton = $test->byId('Acessar'); + } + //SEI 4.0.12 alterou para sbmAcessar + catch (WebDriverException $wde){ + $this->loginButton = $test->byId('sbmAcessar'); + } + } + + public function usuario($value) + { + if(isset($value)) { + $this->usuarioInput->value($value); + } + + return $this->usuarioInput->value(); + } + + public function senha($value) + { + if(isset($value)) { + $this->passwordInput->value($value); + } + + return $this->passwordInput->value(); + } + + public function orgao() + { + return $this->test->byId('divInfraBarraSuperior')->text(); + } + + public function submit() + { + $this->loginButton->click(); + return $this->test; + } + + public static function executarAutenticacao($test, $usuario = "teste", $senha = "teste") + { + $paginaLogin = new PaginaLogin($test); + $paginaLogin->usuario($usuario); + $paginaLogin->senha($senha); + $paginaLogin->submit(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaMapUnidades.php b/tests_super/funcional/src/paginas/PaginaMapUnidades.php new file mode 100644 index 000000000..283060074 --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaMapUnidades.php @@ -0,0 +1,147 @@ +test->byId("txtInfraPesquisarMenu")->value('Listar'); + $this->test->byXPath("//a[@link='pen_map_unidade_listar']")->click(); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function pesquisarUnidade($textoPesquisa) + { + $this->test->byId('txtSiglaUnidade')->clear(); + $this->test->byId('txtSiglaUnidade')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarEditar() + { + $this->test->byXPath("(//img[@title='Alterar Mapeamento'])[1]")->click(); + } + + public function selecionarRepoEstruturas($textoEstruturas) + { + $this->repoEstruturaInput = $this->test->byId('txtRepoEstruturas'); + $this->repoEstruturaInput->clear(); + $this->repoEstruturaInput->value($textoEstruturas); + $this->test->keys(Keys::ENTER); + $sucesso = $this->test->waitUntil(function($testCase) { + $bolExisteAlerta=null; + $nomeEstrutura = $testCase->byId('txtRepoEstruturas')->value(); + + try{ + $bolExisteAlerta = $this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){} + $testCase->byPartialLinkText($nomeEstrutura)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->test->assertTrue($sucesso); + } + + public function selecionarUnidade($textoUnidade) + { + $this->repoUnidadeInput = $this->test->byId('txtUnidade'); + $this->repoUnidadeInput->clear(); + $this->repoUnidadeInput->value($textoUnidade); + $this->test->keys(Keys::ENTER); + $sucesso = $this->test->waitUntil(function($testCase) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + + try{ + $bolExisteAlerta = $this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){} + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->test->assertTrue($sucesso); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function limparRestricoes() + { + $options = $this->test->byId('selRepoEstruturas') + ->elements($this->test->using('css selector')->value('option')); + if (count($options)) { + $this->test->byXPath("//img[@title='Remover Estruturas Selecionadas']")->click(); + } + } + + /** + * 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() : ""; + } + + public function validarRepositorio($siglaRepositorio) + { + $repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + $options = $repositorioSelect + ->elements($this->test->using('css selector')->value('option')); + + $contador = 0; + foreach ($options as $option) { + $value = trim($option->value()); + if (empty($value) || is_null($value) || $value == "null") { + continue; + } + + $contador++; + } + + if(isset($siglaRepositorio)){ + $repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + $this->test->assertEquals(1, $contador); + + return $this->test->byId('selRepositorioEstruturas')->value(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaMapeamentoUnidade.php b/tests_super/funcional/src/paginas/PaginaMapeamentoUnidade.php index 5eec9236e..2375329bf 100644 --- a/tests_super/funcional/src/paginas/PaginaMapeamentoUnidade.php +++ b/tests_super/funcional/src/paginas/PaginaMapeamentoUnidade.php @@ -3,15 +3,15 @@ class PaginaMapeamentoUnidade extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarMapeamentoUnidade () { - $this->test->byId("txtInfraPesquisarMenu")->value("Mapeamento de Unidades"); + public function navegarMapeamentoUnidade() { + $this->test->byId("txtInfraPesquisarMenu")->value("Mapeamento de Unidades"); - $this->test->byLinkText("Mapeamento de Unidades")->click(); - $this->test->byXPath("//a[@link='pen_map_unidade_listar']")->click(); - } + $this->test->byLinkText("Mapeamento de Unidades")->click(); + $this->test->byXPath("//a[@link='pen_map_unidade_listar']")->click(); + } } \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaMoverDocumento.php b/tests_super/funcional/src/paginas/PaginaMoverDocumento.php index fb69f69c7..2c6b959ff 100755 --- a/tests_super/funcional/src/paginas/PaginaMoverDocumento.php +++ b/tests_super/funcional/src/paginas/PaginaMoverDocumento.php @@ -1,46 +1,46 @@ -processoDestino($protocoloDestino); - $this->motivoMovimentacao($motivoMovimentacao); - $this->mover(); - } - - private function processoDestino($value) - { - $input = $this->test->byId("txtProcedimentoDestino"); - if(isset($value)) { - $input->value($value); - sleep(2); - $this->test->keys(Keys::ENTER); - } - - sleep(2); - return $input->value(); - } - - private function motivoMovimentacao($value) - { - $input = $this->test->byId("txaMotivo"); - if(isset($value)) { - $input->value($value); - } - - return $input->value(); - } - - private function mover() - { - $this->test->byId("sbmMover")->click(); - } -} +processoDestino($protocoloDestino); + $this->motivoMovimentacao($motivoMovimentacao); + $this->mover(); + } + + private function processoDestino($value) + { + $input = $this->test->byId("txtProcedimentoDestino"); + if(isset($value)) { + $input->value($value); + sleep(2); + $this->test->keys(Keys::ENTER); + } + + sleep(2); + return $input->value(); + } + + private function motivoMovimentacao($value) + { + $input = $this->test->byId("txaMotivo"); + if(isset($value)) { + $input->value($value); + } + + return $input->value(); + } + + private function mover() + { + $this->test->byId("sbmMover")->click(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaPenHipoteseLegalListar.php b/tests_super/funcional/src/paginas/PaginaPenHipoteseLegalListar.php new file mode 100644 index 000000000..2d62e6424 --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaPenHipoteseLegalListar.php @@ -0,0 +1,45 @@ +test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Listar', 'UTF-8', 'ISO-8859-1')); + $this->test->byXPath("//a[@link='pen_map_hipotese_legal_envio_listar']")->click(); + } + + /** + * Verificar se a tabela de hipótese legal é exibida + * + * @return bool + */ + public function existeTabela() + { + try { + $trTh = $this->test->byXPath('//*[@id="divInfraAreaTabela"]/table/tbody/tr[1]/th[2]')->text(); + return !empty($trTh) && !is_null($trTh) && count($trTh) >= 1; + } catch (Exception $ex) { + return false; + } + } +} diff --git a/tests_super/funcional/src/paginas/PaginaProcesso.php b/tests_super/funcional/src/paginas/PaginaProcesso.php index 40d2ef462..c504a5d1d 100755 --- a/tests_super/funcional/src/paginas/PaginaProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaProcesso.php @@ -1,244 +1,279 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - $concluirProcessoButton = $this->test->byXPath("//img[@alt='Concluir Processo']"); - $concluirProcessoButton->click(); - } - - public function incluirDocumento() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - //a[1]/img - $incluirDocumentoButton = $this->test->byXPath("a[1]/img[@alt='Incluir Documento']"); - $incluirDocumentoButton->click(); - } - - public function enviarProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Enviar Processo']")->click(); - } - - public function cancelarTramitacaoExterna() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath(utf8_encode("//img[@alt='Cancelar Tramitação Externa']"))->click(); - } - - public function navegarParaEditarProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar/Alterar Processo']"); - $this->editarProcessoButton->click(); - } - - public function navegarParaTramitarProcesso() - { - $this->test->waitUntil(function($testCase) { - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo']"); - $this->editarProcessoButton->click(); - sleep(2); - $testCase->assertStringContainsString('Envio Externo de Processo', $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaConsultarAndamentos() - { - $this->test->waitUntil(function($testCase) { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $testCase->byLinkText('Consultar Andamento')->click(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - sleep(2); - $testCase->assertStringContainsString(utf8_encode('Histórico do Processo'), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaConsultarRecibos() - { - $this->test->waitUntil(function($testCase) { - // Selecionar processo na árvore - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar Recibos']"); - $this->editarProcessoButton->click(); - sleep(2); - $testCase->assertStringContainsString('Consultar Recibos', $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaAnexarProcesso() - { - $this->test->waitUntil(function($testCase) { - $this->selecionarProcesso(); - - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Anexar Processo']"); - $this->editarProcessoButton->click(); - sleep(2); - $testCase->assertStringContainsString(utf8_encode('Anexação de Processos'), $testCase->byCssSelector('body')->text()); - return true; - }, PEN_WAIT_TIMEOUT); - } - - public function navegarParaTramitarProcessoInterno() - { - $this->enviarProcesso(); - } - - public function informacao() - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - return $this->test->byId('divArvoreInformacao')->text(); - } - - public function processoAberto() - { - try - { - $this->test->frame(null); - $this->test->frame("ifrVisualizacao"); - $this->test->byXPath("//img[@alt='Reabrir Processo']"); - return false; - } - catch(Exception $e) - { - return true; - } - } - - public function processoBloqueado() - { - try - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byXPath("//img[@title='Processo Bloqueado']"); - return true; - } - catch(Exception $e) - { - return false; - } - } - - public function deveSerDocumentoAnexo($bolDevePossuir, $nomeDocumentoArvore) - { - try - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - if($bolDevePossuir){ - $idAnexo=$this->test->byXPath("//span[contains(text(),'" . $nomeDocumentoArvore . "')]")->attribute('id'); - $idAnexo=str_replace("span","",$idAnexo); - $this->test->byXPath("//img[contains(@id,'iconMD_PEN_DOC_REF" . $idAnexo . "')]"); - } - return true; - } - catch(Exception $e) - { - return false; - } - } - - public function ehDocumentoCancelado($nomeDocumentoArvore) - { - try - { - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); - return true; - } - catch(Exception $e) - { - return false; - }finally{ - $this->test->timeouts()->implicitWait($to); - } - } - - public function ehDocumentoMovido($nomeDocumentoArvore) - { - try - { - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); - return true; - } - catch(Exception $e) - { - return false; - }finally{ - $this->test->timeouts()->implicitWait($to); - } - } - - private function selecionarItemArvore($nomeArvore) - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $this->test->byLinkText($nomeArvore)->click(); - } - - public function selecionarDocumento($nomeDocumentoArvore) - { - $this->selecionarItemArvore($nomeDocumentoArvore); - } - - public function selecionarProcesso() - { - $this->selecionarItemArvore($this->listarArvoreProcesso()[0]); - sleep(1); - } - - public function listarDocumentos() - { - $itens = $this->listarArvoreProcesso(); - return (count($itens) > 1) ? array_slice($itens, 1) : null; - } - - private function listarArvoreProcesso() - { - $this->test->frame(null); - $this->test->frame("ifrArvore"); - $itens = $this->test->elements($this->test->using('css selector')->value('div.infraArvore > a > span[id]')); - return array_map(function($item) {return $item->text();}, $itens); - } - -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + $concluirProcessoButton = $this->test->byXPath("//img[@alt='Concluir Processo']"); + $concluirProcessoButton->click(); + } + + public function incluirDocumento() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + //a[1]/img + $incluirDocumentoButton = $this->test->byXPath("a[1]/img[@alt='Incluir Documento']"); + $incluirDocumentoButton->click(); + } + + public function enviarProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Enviar Processo']")->click(); + } + + public function cancelarTramitacaoExterna() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath(mb_convert_encoding("//img[@alt='Cancelar Tramitação Externa']", 'UTF-8', 'ISO-8859-1'))->click(); + } + + public function navegarParaEditarProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar/Alterar Processo']"); + $this->editarProcessoButton->click(); + } + + public function navegarParaOrdenarDocumentos() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $button = $this->test->byXPath(mb_convert_encoding("//img[@alt='Ordenar Árvore do Processo']", 'UTF-8', 'ISO-8859-1')); + $button->click(); + } + + public function trocarOrdenacaoDocumentos() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + + $this->test->byXPath("//*[@id='selRelProtocoloProtocolo']/option[1]")->click(); + sleep(1); + $this->test->byXPath("//*[@id='imgRelProtocoloProtocoloAbaixo']")->click(); + sleep(1); + $this->test->byXPath("//*[@id='divInfraBarraComandosSuperior']/button[@value='Salvar']")->click(); + } + + + public function navegarParaTramitarProcesso() + { + $this->test->waitUntil(function($testCase) { + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo']"); + $this->editarProcessoButton->click(); + sleep(2); + $testCase->assertStringContainsString('Envio Externo de Processo', $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + + + public function navegarParaConsultarAndamentos() + { + $this->test->waitUntil(function($testCase) { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $testCase->byLinkText('Consultar Andamento')->click(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + sleep(2); + $testCase->assertStringContainsString(mb_convert_encoding('Histórico do Processo', 'UTF-8', 'ISO-8859-1'), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaConsultarRecibos() + { + $this->test->waitUntil(function($testCase) { + // Selecionar processo na árvore + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Consultar Recibos']"); + $this->editarProcessoButton->click(); + sleep(2); + $testCase->assertStringContainsString('Consultar Recibos', $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaAnexarProcesso() + { + $this->test->waitUntil(function($testCase) { + $this->selecionarProcesso(); + + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Anexar Processo']"); + $this->editarProcessoButton->click(); + sleep(2); + $testCase->assertStringContainsString(mb_convert_encoding('Anexação de Processos', 'UTF-8', 'ISO-8859-1'), $testCase->byCssSelector('body')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public function navegarParaTramitarProcessoInterno() + { + $this->enviarProcesso(); + } + + public function informacao() + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + return $this->test->byId('divArvoreInformacao')->text(); + } + + public function processoAberto() + { + try + { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $this->test->byXPath("//img[@alt='Reabrir Processo']"); + return false; + } + catch(Exception $e) + { + return true; + } + } + + public function processoBloqueado() + { + try + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byXPath("//img[@title='Processo Bloqueado']"); + return true; + } + catch(Exception $e) + { + return false; + } + } + + public function deveSerDocumentoAnexo($bolDevePossuir, $nomeDocumentoArvore) + { + try + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + if($bolDevePossuir){ + $idAnexo=$this->test->byXPath("//span[contains(text(),'" . $nomeDocumentoArvore . "')]")->attribute('id'); + $idAnexo=str_replace("span", "", $idAnexo); + $this->test->byXPath("//img[contains(@id,'iconMD_PEN_DOC_REF" . $idAnexo . "')]"); + } + return true; + } + catch(Exception $e) + { + return false; + } + } + + public function ehDocumentoCancelado($nomeDocumentoArvore) + { + try + { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); + return true; + } + catch(Exception $e) + { + return false; + }finally{ + $this->test->timeouts()->implicitWait($to); + } + } + + public function ehDocumentoMovido($nomeDocumentoArvore) + { + try + { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); + return true; + } + catch(Exception $e) + { + return false; + }finally{ + $this->test->timeouts()->implicitWait($to); + } + } + + private function selecionarItemArvore($nomeArvore) + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $this->test->byLinkText($nomeArvore)->click(); + } + + public function selecionarDocumento($nomeDocumentoArvore) + { + $this->selecionarItemArvore($nomeDocumentoArvore); + } + + public function selecionarProcesso() + { + $this->selecionarItemArvore($this->listarArvoreProcesso()[0]); + sleep(1); + } + + public function listarDocumentos() + { + $itens = $this->listarArvoreProcesso(); + return (count($itens) > 1) ? array_slice($itens, 1) : null; + } + + private function listarArvoreProcesso() + { + $this->test->frame(null); + $this->test->frame("ifrArvore"); + $itens = $this->test->elements($this->test->using('css selector')->value('div.infraArvore > a > span[id]')); + return array_map(function($item) {return $item->text(); + }, $itens); + } + + public function validarBotaoExiste($botao) + { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + $botao = $this->test->byXPath("//img[@alt='$botao']"); + return true; + } catch (\Exception $e) { + return false; + } + } +} diff --git a/tests_super/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php b/tests_super/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php index 410edf20e..fe588cf97 100755 --- a/tests_super/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php +++ b/tests_super/funcional/src/paginas/PaginaProcessosTramitadosExternamente.php @@ -2,13 +2,13 @@ class PaginaProcessosTramitadosExternamente extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function contemProcesso($numeroProcesso) + public function contemProcesso($numeroProcesso) { - return strpos($this->test->byCssSelector('body')->text(), $numeroProcesso) !== false; - } + return strpos($this->test->byCssSelector('body')->text(), $numeroProcesso) !== false; + } } \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaReciboTramite.php b/tests_super/funcional/src/paginas/PaginaReciboTramite.php index 451bd858d..1f1e8f199 100755 --- a/tests_super/funcional/src/paginas/PaginaReciboTramite.php +++ b/tests_super/funcional/src/paginas/PaginaReciboTramite.php @@ -1,58 +1,58 @@ -test->frame(null); - $this->test->frame("ifrVisualizacao"); - - //Localiza colunas com dados da tramitação - $linhasResumoTramite = $this->test->elements($this->test->using('css selector')->value('div.infraAreaTabela > table tr')); - if(count($linhasResumoTramite) > 0) { - foreach ($linhasResumoTramite as $linha) { - $colunas = $linha->elements($this->test->using('css selector')->value('td')); - - if(count($colunas) == 2){ - //Verifica se trâmite informado foi localizado no histórico - $result = strpos($colunas[0]->text(), $mensagemTramite) !== false; - - //Verifica se recibo de envio do processo foi localizado - if($result && $verificaReciboEnvio) { - try{ - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Confirmação de Envio\']'))); - } - catch(Exception $e){ $result = false; } - finally{ $this->test->timeouts()->implicitWait($to); } - } - - //Verifica se recibo de conclusão do trâmite processo foi localizado - if($result && $verificaReciboConclusao) { - try{ - $to = $this->test->timeouts()->getLastImplicitWaitValue(); - $this->test->timeouts()->implicitWait(300); - $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Conclusão de Trâmite\']'))); - } - catch(Exception $e){ $result = false; } - finally{ $this->test->timeouts()->implicitWait($to); } - } - - if($result) { - break; - } - } - - } - } - - return $result; - } -} +test->frame(null); + $this->test->frame("ifrVisualizacao"); + + //Localiza colunas com dados da tramitação + $linhasResumoTramite = $this->test->elements($this->test->using('css selector')->value('div.infraAreaTabela > table tr')); + if(count($linhasResumoTramite) > 0) { + foreach ($linhasResumoTramite as $linha) { + $colunas = $linha->elements($this->test->using('css selector')->value('td')); + + if(count($colunas) == 2){ + //Verifica se trâmite informado foi localizado no histórico + $result = strpos($colunas[0]->text(), $mensagemTramite) !== false; + + //Verifica se recibo de envio do processo foi localizado + if($result && $verificaReciboEnvio) { + try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $colunas[1]->element($this->test->using('css selector')->value(mb_convert_encoding('a > img[title=\'Recibo de Confirmação de Envio\']', 'UTF-8', 'ISO-8859-1'))); + } + catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } + } + + //Verifica se recibo de conclusão do trâmite processo foi localizado + if($result && $verificaReciboConclusao) { + try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); + $colunas[1]->element($this->test->using('css selector')->value(mb_convert_encoding('a > img[title=\'Recibo de Conclusão de Trâmite\']', 'UTF-8', 'ISO-8859-1'))); + } + catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } + } + + if($result) { + break; + } + } + + } + } + + return $result; + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTeste.php b/tests_super/funcional/src/paginas/PaginaTeste.php index 9a2bc71c2..95b84a681 100755 --- a/tests_super/funcional/src/paginas/PaginaTeste.php +++ b/tests_super/funcional/src/paginas/PaginaTeste.php @@ -1,67 +1,72 @@ -test = $test; - $this->test->timeouts()->implicitWait(10000); - } - - public function titulo() - { - return $this->test->title(); - } - - public function alertTextAndClose($confirm=true) - { - sleep(2); - $result = $this->test->alertText(); - $result = (!is_array($result) ? $result : null); - - if(isset($confirm) && $confirm) - $this->test->acceptAlert(); - else - $this->dismissAlert(); - - #var_dump($result); - return $result; - } - - public function unidadeContexto($unidadeContexto) - { - $this->test->frame(null); - $this->test->byXPath("(//a[@id='lnkInfraUnidade'])[2]")->click(); - $this->test->byXPath("//td[contains(.,'" . $unidadeContexto . "')]")->click(); - - } - - public function navegarParaControleProcesso() - { - $this->test->frame(null); - $this->test->byXPath("//img[@title='Controle de Processos']")->click(); - - } - - public function sairSistema() - { - $this->test->frame(null); - $this->test->byXPath("//a[@id='lnkInfraSairSistema'] | //a[@id='lnkSairSistema']")->click(); - } - - public static function selecionarUnidadeContexto($test, $unidadeContexto) - { - $paginaTeste = new PaginaTeste($test); - $paginaTeste->unidadeContexto($unidadeContexto); - } - - public function pesquisar($termoPesquisa) - { - $this->test->frame(null); - $this->test->byId("txtPesquisaRapida")->value($termoPesquisa); - $this->test->keys(Keys::ENTER); - } - -} +test = $test; + $this->test->timeouts()->implicitWait(10000); + } + + public function titulo() + { + return $this->test->title(); + } + + public function alertTextAndClose($confirm = true) + { + sleep(2); + $result = $this->test->alertText(); + $result = (!is_array($result) ? $result : null); + + if(isset($confirm) && $confirm) { + $this->test->acceptAlert(); + } else { + $this->dismissAlert(); + } + + #var_dump($result); + return $result; + } + + public function unidadeContexto($unidadeContexto) + { + $this->test->frame(null); + $this->test->byXPath("(//a[@id='lnkInfraUnidade'])[2]")->click(); + $this->test->byXPath("//td[contains(.,'" . $unidadeContexto . "')]")->click(); + + } + + public function navegarParaControleProcesso() + { + $this->test->frame(null); + $this->test->byXPath("//img[@title='Controle de Processos']")->click(); + + } + + public function sairSistema() + { + $this->test->frame(null); + $this->test->byXPath("//a[@id='lnkInfraSairSistema'] | //a[@id='lnkSairSistema']")->click(); + } + + public static function selecionarUnidadeContexto($test, $unidadeContexto) + { + $paginaTeste = new PaginaTeste($test); + $paginaTeste->unidadeContexto($unidadeContexto); + } + + public function pesquisar($termoPesquisa) + { + $this->test->frame(null); + $this->test->byId("txtPesquisaRapida")->value($termoPesquisa); + $this->test->keys(Keys::ENTER); + } + + public function refresh() + { + $this->test->refresh(); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php index 44d80e313..9adb84c1a 100644 --- a/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php +++ b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -4,31 +4,33 @@ class PaginaTipoProcessoReativar extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } - public function navegarTipoProcessoReativar() + public function navegarTipoProcessoReativar() { - $this->test->byId("txtInfraPesquisarMenu")->value("Reativar Mapeamento de Tipos de Processo"); + $this->test->byId("txtInfraPesquisarMenu")->value("Reativar Mapeamento de Tipos de Processo"); - $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); - } + $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); + } - public function reativarMapeamento() + public function reativarMapeamento() { - $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); - $bolExisteAlerta=$this->alertTextAndClose(); - if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); } + } - public function reativarMapeamentoCheckbox() + 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); + $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/PaginaTramitarProcesso.php b/tests_super/funcional/src/paginas/PaginaTramitarProcesso.php index a704b1f2a..ecf3e19f6 100755 --- a/tests_super/funcional/src/paginas/PaginaTramitarProcesso.php +++ b/tests_super/funcional/src/paginas/PaginaTramitarProcesso.php @@ -1,109 +1,119 @@ -repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); - - if(isset($siglaRepositorio)){ - $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); - } - - return $this->test->byId('selRepositorioEstruturas')->value(); - } - - public function unidade($nomeUnidade, $hierarquia=null) - { - $this->unidadeInput =$this->test->byId('txtUnidade'); - $this->unidadeInput->value($nomeUnidade); - $this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($hierarquia) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->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(); - } - - public function urgente($urgente) - { - $this->urgenteCheck = $this->test->byId('chkSinUrgente'); - if(isset($urgente) && ((!$urgente && $this->urgenteCheck->selected()) || ($urgente && !$this->urgenteCheck->selected()))) - $this->urgenteCheck->click(); - - return $this->urgenteCheck->selected(); - } - - public function tramitar() - { - $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); - $tramitarButton->click(); - } - - public function fecharBarraProgresso() - { - $btnFechar = $this->test->byXPath("//input[@id='btnFechar']"); - $btnFechar->click(); - } - - public function unidadeInterna($nomeUnidade) - { - $this->unidadeInput =$this->test->byId('txtUnidade'); - $this->unidadeInput->value($nomeUnidade); - //$this->test->keys(Keys::ENTER); - $this->test->waitUntil(function($testCase) use($nomeUnidade) { - $bolExisteAlerta=null; - $nomeUnidade = $testCase->byId('txtUnidade')->value(); - sleep(1); - try{ - $bolExisteAlerta=$this->alertTextAndClose(); - if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); - }catch(Exception $e){ - } - $testCase->byPartialLinkText($nomeUnidade)->click(); - return true; - }, PEN_WAIT_TIMEOUT); - - sleep(1); - return $this->unidadeInput->value(); - } - - public function tramitarInterno() - { - $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); - $tramitarButton->click(); - } - - public function alertTextAndClose($confirm=true) - { - sleep(2); - $result = $this->test->alertText(); - $result = (!is_array($result) ? $result : null); - - if(isset($confirm) && $confirm) - $this->test->acceptAlert(); - else - $this->dismissAlert(); - return $result; - } -} +repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + public function unidade($nomeUnidade, $hierarquia = null) + { + $this->unidadeInput =$this->test->byId('txtUnidade'); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->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(); + } + + public function urgente($urgente) + { + $this->urgenteCheck = $this->test->byId('chkSinUrgente'); + if(isset($urgente) && ((!$urgente && $this->urgenteCheck->selected()) || ($urgente && !$this->urgenteCheck->selected()))) { + $this->urgenteCheck->click(); + } + + return $this->urgenteCheck->selected(); + } + + public function tramitar() + { + $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); + $tramitarButton->click(); + } + + public function fecharBarraProgresso() + { + $btnFechar = $this->test->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } + + public function unidadeInterna($nomeUnidade) + { + $this->unidadeInput =$this->test->byId('txtUnidade'); + $this->unidadeInput->value($nomeUnidade); + //$this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($nomeUnidade) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + sleep(1); + try{ + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null) { $this->test->keys(Keys::ENTER); + } + }catch(Exception $e){ + } + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(1); + return $this->unidadeInput->value(); + } + + public function manterAbertoNaUnidadeAtual() + { + $manterAbertoCheckBox = $this->test->byXPath("//label[@id='lblSinManterAberto']"); + $manterAbertoCheckBox->click(); + } + + public function tramitarInterno() + { + $tramitarButton = $this->test->byXPath("//button[@value='Enviar']"); + $tramitarButton->click(); + } + + public function alertTextAndClose($confirm = true) + { + sleep(2); + $result = $this->test->alertText(); + $result = (!is_array($result) ? $result : null); + + if(isset($confirm) && $confirm) { + $this->test->acceptAlert(); + } else { + $this->dismissAlert(); + } + return $result; + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTramitarProcessoEmLote.php b/tests_super/funcional/src/paginas/PaginaTramitarProcessoEmLote.php index 572668ea2..3f2124e8c 100755 --- a/tests_super/funcional/src/paginas/PaginaTramitarProcessoEmLote.php +++ b/tests_super/funcional/src/paginas/PaginaTramitarProcessoEmLote.php @@ -1,64 +1,64 @@ -test->byXPath("//*[@id='imgGeradosCheck']"); - $chkGerados->click(); - } catch(Exception $e){} - - try{ - $chkRecebidos = $this->test->byXPath("//*[@id='imgRecebidosCheck']"); - $chkRecebidos->click(); - } catch(Exception $e){} - }else{ - $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); - $chkProtocolo->click(); - } - - } - - public function navegarControleProcessos() - { - $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo em Lote']"); - $this->editarProcessoButton->click(); - } - - public function informacaoLote() - { - return $this->test->byId('divInfraAreaTelaD')->text(); - } - - public function navegarProcessoEmLote($selAndamento, $numProtocolo=null) - { - if(!is_null($selAndamento)){ - $select = $this->test->select($this->test->byId('selAndamento')); - $select->selectOptionByLabel($selAndamento); - } - - if(!is_null($numProtocolo)){ - $this->protocoloInput=$this->test->byId('txtProcedimentoFormatado'); - $this->protocoloInput->value($numProtocolo); - } - - $this->presquisarProcessoButton = $this->test->byXPath("//*[@id='sbmPesquisar']"); - $this->presquisarProcessoButton->click(); - - } -} +test->byXPath("//*[@id='imgGeradosCheck']"); + $chkGerados->click(); + } catch(Exception $e){} + + try{ + $chkRecebidos = $this->test->byXPath("//*[@id='imgRecebidosCheck']"); + $chkRecebidos->click(); + } catch(Exception $e){} + }else{ + $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); + } + + } + + public function navegarControleProcessos() + { + $this->editarProcessoButton = $this->test->byXPath("//img[@alt='Envio Externo de Processo em Lote']"); + $this->editarProcessoButton->click(); + } + + public function informacaoLote() + { + return $this->test->byId('divInfraAreaTelaD')->text(); + } + + public function navegarProcessoEmLote($selAndamento, $numProtocolo = null) + { + if(!is_null($selAndamento)){ + $select = $this->test->select($this->test->byId('selAndamento')); + $select->selectOptionByLabel($selAndamento); + } + + if(!is_null($numProtocolo)){ + $this->protocoloInput=$this->test->byId('txtProcedimentoFormatado'); + $this->protocoloInput->value($numProtocolo); + } + + $this->presquisarProcessoButton = $this->test->byXPath("//*[@id='sbmPesquisar']"); + $this->presquisarProcessoButton->click(); + + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php index 5a481b9ff..f3b0eec38 100644 --- a/tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php +++ b/tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -14,65 +14,111 @@ class PaginaTramiteEmBloco extends PaginaTeste /** * @inheritdoc */ - public function __construct($test) + public function __construct($test) { - parent::__construct($test); - } + parent::__construct($test); + } /** * Selecionar processo * @param array $arrNumProtocolo * @return void */ - public function selecionarProcessos($arrNumProtocolo = array()) + public function selecionarProcessos($arrNumProtocolo = array()) { - foreach ($arrNumProtocolo as $numProtocolo) { - $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); - $chkProtocolo->click(); - } + foreach ($arrNumProtocolo as $numProtocolo) { + $chkProtocolo = $this->test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); } + } /** * Selecionar tramite em bloco * @return void */ - public function selecionarTramiteEmBloco() + public function selecionarTramiteEmBloco() { - $btnTramiteEmBloco = $this->test->byXPath( - "//img[@alt='". utf8_encode("Incluir Processos no Bloco de Trâmite") ."']" - ); - $btnTramiteEmBloco->click(); - } + $btnTramiteEmBloco = $this->test->byXPath( + "//img[@alt='". mb_convert_encoding("Incluir Processos no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1') ."']" + ); + $btnTramiteEmBloco->click(); + } + + /** + * Seleciona a visualização detalhada do processo. + * + * Este método simula o clique no botão que troca a visualização para + * a opção detalhada. Ele utiliza o XPath para encontrar o botão + * correspondente na interface da aplicação. + * + * @return void + */ + public function selecionarVisualizacaoDetalhada() + { + $btnTramiteEmBloco = $this->test->byXPath('//a[@onclick="trocarVisualizacao(\'D\');"]'); + $btnTramiteEmBloco->click(); + } + + /** + * Seleciona um processo específico com base no número do protocolo formatado. + * + * Este método busca o rótulo que contém o número do protocolo + * fornecido e simula um clique sobre ele para selecionar o processo. + * + * @param string $numProtocoloFormatado O número do protocolo formatado a ser selecionado. + * @return void + */ + public function selecionarProcesso($numProtocoloFormatado) + { + $btnTramiteEmBloco = $this->test->byXPath('//label[@title="' . $numProtocoloFormatado . '"]'); + $btnTramiteEmBloco->click(); + } + + /** + * Verifica o título da página atual. + * + * Este método busca e retorna o texto do título da página + * atual, comparando-o com o título fornecido. Ele é útil para + * garantir que a navegação ocorreu corretamente. + * + * @param string $titulo O título esperado da página. + * @return string O título da página atual. + */ + public function verificarTituloDaPagina($titulo) + { + $tituloDaPagina = $this->test->byXPath('//div[text()="' . $titulo . '"]'); + return $tituloDaPagina->text(); + } /** * Selecionar bloco * @param string $selAndamento * @return void */ - public function selecionarBloco($selAndamento) + public function selecionarBloco($selAndamento) { - $select = $this->test->select($this->test->byId('selBlocos')); - $select->selectOptionByValue($selAndamento); - } + $select = $this->test->select($this->test->byId('selBlocos')); + $select->selectOptionByValue($selAndamento); + } /** * Clicar em salvar * @return void */ - public function clicarSalvar() + public function clicarSalvar() { - $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); - $btnSalvar->click(); - } + $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); + $btnSalvar->click(); + } /** * Buscar mensagem de alerta da página * * @return string */ - public function buscarMensagemAlerta() + public function buscarMensagemAlerta() { - $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); - return !empty($alerta->text()) ? $alerta->text() : ""; - } + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } } \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php index 011872e2a..4666cf75c 100644 --- a/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php +++ b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -4,51 +4,55 @@ class PaginaTramiteMapeamentoOrgaoExterno extends PaginaTeste { - public function __construct($test) + public function __construct($test) { - parent::__construct($test); + parent::__construct($test); - } + } - public function navegarRelacionamentoEntreOrgaos() + public function navegarRelacionamentoEntreOrgaos() { - $this->test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Unidades')); + $this->test->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1')); - $this->test->byLinkText(utf8_encode('Relacionamento entre Unidades'))->click(); - $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); - } + $this->test->byLinkText(mb_convert_encoding('Relacionamento entre Unidades', 'UTF-8', 'ISO-8859-1'))->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 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 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 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 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); - } + public function selectEstado($estado) { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } } diff --git a/tests_super/funcional/src/utils/DatabaseUtils.php b/tests_super/funcional/src/utils/DatabaseUtils.php index 6c43f4bd4..a5df11180 100755 --- a/tests_super/funcional/src/utils/DatabaseUtils.php +++ b/tests_super/funcional/src/utils/DatabaseUtils.php @@ -1,33 +1,33 @@ -connection = new PDO($dns, $user, $password); - } - - - public function execute($sql, $params){ - $statement = $this->connection->prepare($sql); - $result = $statement->execute($params); - return $result; - } - - - public function query($sql, $params){ - $statement = $this->connection->prepare($sql); - $statement->execute($params); - return $statement->fetchAll(); - } - - - public function getBdType(){ - return $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME); - } -} +connection = new PDO($dns, $user, $password); + } + + + public function execute($sql, $params){ + $statement = $this->connection->prepare($sql); + $result = $statement->execute($params); + return $result; + } + + + public function query($sql, $params){ + $statement = $this->connection->prepare($sql); + $statement->execute($params); + return $statement->fetchAll(); + } + + + public function getBdType(){ + return $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME); + } +} diff --git a/tests_super/funcional/src/utils/ParameterUtils.php b/tests_super/funcional/src/utils/ParameterUtils.php index d91d90ead..6366c7e0b 100755 --- a/tests_super/funcional/src/utils/ParameterUtils.php +++ b/tests_super/funcional/src/utils/ParameterUtils.php @@ -1,35 +1,35 @@ -databaseUtils = new DatabaseUtils($nomeContexto); - } - - public function getParameter($parameter){ - $result = null; - $query = "SELECT valor FROM md_pen_parametro WHERE nome = ?"; - $values = $this->databaseUtils->query($query, array($parameter)); - - if(isset($values)){ - $result = $values[0]["valor"]; - } - - return $result; - } - - public function setParameter($parameter, $value){ - $query = "UPDATE md_pen_parametro SET valor = ? WHERE nome = ?"; - return $this->databaseUtils->execute($query, array($value, $parameter)); - } -} +databaseUtils = new DatabaseUtils($nomeContexto); + } + + public function getParameter($parameter){ + $result = null; + $query = "SELECT valor FROM md_pen_parametro WHERE nome = ?"; + $values = $this->databaseUtils->query($query, array($parameter)); + + if(isset($values)){ + $result = $values[0]["valor"]; + } + + return $result; + } + + public function setParameter($parameter, $value){ + $query = "UPDATE md_pen_parametro SET valor = ? WHERE nome = ?"; + return $this->databaseUtils->execute($query, array($value, $parameter)); + } +} diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php index bed09e7c8..6da11d142 100755 --- a/tests_super/funcional/tests/CenarioBaseTestCase.php +++ b/tests_super/funcional/tests/CenarioBaseTestCase.php @@ -49,6 +49,8 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaCadastrarProcessoEmBloco = null; protected $paginaTramiteEmBloco = null; protected $paginaEnvioParcialListar = null; + protected $paginaPenHipoteseLegalListar = null; + protected $paginaMapUnidades = null; public function setUpPage(): void { @@ -77,6 +79,8 @@ public function setUpPage(): void $this->paginaCadastrarProcessoEmBloco = new PaginaCadastrarProcessoEmBloco($this); $this->paginaTramiteEmBloco = new PaginaTramiteEmBloco($this); $this->paginaEnvioParcialListar = new PaginaEnvioParcialListar($this); + $this->paginaPenHipoteseLegalListar = new PaginaPenHipoteseLegalListar($this); + $this->paginaMapUnidades = new PaginaMapUnidades($this); $this->currentWindow()->maximize(); } @@ -106,10 +110,11 @@ public static function setUpBeforeClass(): void // Configuração do prefíxo de processos $bancoOrgaoA->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_A_NUMERO_SEI, CONTEXTO_ORGAO_A_SIGLA_ORGAO)); $bancoOrgaoA->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_A_SIGLA_UNIDADE)); - $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasPEN'", null); + $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasEnvioPEN'", null); + $bancoOrgaoA->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasRecebimentoPEN'", null); // Remoção de mapeamento de espécie não mapeada na origem - $nomeSerieNaoMapeada = utf8_encode(CONTEXTO_ORGAO_A_TIPO_DOCUMENTO_NAO_MAPEADO); + $nomeSerieNaoMapeada = mb_convert_encoding(CONTEXTO_ORGAO_A_TIPO_DOCUMENTO_NAO_MAPEADO, 'UTF-8', 'ISO-8859-1'); $serieNaoMapeadaOrigem = $bancoOrgaoA->query('select ID_SERIE from serie where nome = ?', array($nomeSerieNaoMapeada)); $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); @@ -146,11 +151,12 @@ public static function setUpBeforeClass(): void $bancoOrgaoB->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_B_NUMERO_SEI, CONTEXTO_ORGAO_B_SIGLA_ORGAO)); $bancoOrgaoB->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_B_SIGLA_UNIDADE)); - $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasPEN'", null); + $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasEnvioPEN'", null); + $bancoOrgaoB->execute("update infra_agendamento_tarefa set parametro='debug=true' where comando='PENAgendamentoRN::processarTarefasRecebimentoPEN'", null); $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); // Remoção de mapeamento de espécie não mapeada na origem - $nomeSerieNaoMapeada = utf8_encode(CONTEXTO_ORGAO_B_TIPO_DOCUMENTO_NAO_MAPEADO); + $nomeSerieNaoMapeada = mb_convert_encoding(CONTEXTO_ORGAO_B_TIPO_DOCUMENTO_NAO_MAPEADO, 'UTF-8', 'ISO-8859-1'); $serieNaoMapeadaOrigem = $bancoOrgaoB->query('select ID_SERIE from serie where nome = ?', array($nomeSerieNaoMapeada)); $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); @@ -226,6 +232,7 @@ protected function definirContextoTeste($nomeContexto) 'SIGLA_UNIDADE_SECUNDARIA' => constant($nomeContexto . '_SIGLA_UNIDADE_SECUNDARIA'), 'SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA' => constant($nomeContexto . '_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'), 'NOME_UNIDADE_SECUNDARIA' => constant($nomeContexto . '_NOME_UNIDADE_SECUNDARIA'), + 'HIPOTESE_RESTRICAO_ID' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_ID'), 'HIPOTESE_RESTRICAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO'), 'HIPOTESE_RESTRICAO_NAO_MAPEADO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_NAO_MAPEADO'), 'REP_ESTRUTURAS' => constant($nomeContexto . '_REP_ESTRUTURAS'), @@ -275,15 +282,6 @@ protected function sairSistema() $this->paginaBase->sairSistema(); } - protected function cadastrarProcesso(&$dadosProcesso) - { - $this->paginaBase->navegarParaControleProcesso(); - $protocoloGerado = PaginaIniciarProcesso::gerarProcessoTeste($this, $dadosProcesso); - $dadosProcesso['PROTOCOLO'] = $protocoloGerado; - sleep(2); - return $protocoloGerado; - } - protected function abrirProcesso($protocolo) { $this->paginaBase->navegarParaControleProcesso(); @@ -300,19 +298,6 @@ protected function abrirProcessoPelaDescricao($descricao) return $protocolo; } - protected function cadastrarDocumentoInterno($dadosDocumentoInterno) - { - $this->paginaProcesso->selecionarProcesso(); - $this->paginaIncluirDocumento->gerarDocumentoTeste($dadosDocumentoInterno); - sleep(2); - } - - protected function cadastrarDocumentoExterno($dadosDocumentoExterno, $comAnexo = true) - { - $this->paginaProcesso->selecionarProcesso(); - $this->paginaIncluirDocumento->gerarDocumentoExternoTeste($dadosDocumentoExterno, $comAnexo); - sleep(2); - } protected function assinarDocumento($siglaOrgao, $cargoAssinante, $loginSenha) { @@ -328,12 +313,6 @@ protected function assinarDocumento($siglaOrgao, $cargoAssinante, $loginSenha) sleep(2); } - protected function anexarProcesso($protocoloProcessoAnexado) - { - $this->paginaProcesso->navegarParaAnexarProcesso(); - $this->paginaAnexarProcesso->anexarProcesso($protocoloProcessoAnexado); - } - protected function tramitarProcessoExternamente($protocolo, $repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) { // Acessar funcionalidade de trâmite externo @@ -371,7 +350,7 @@ protected function tramitarProcessoExternamente($protocolo, $repositorio, $unida $callbackEnvio = $callbackEnvio ?: function ($testCase) { try { $testCase->frame('ifrEnvioProcesso'); - $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); + $mensagemSucesso = mb_convert_encoding('Trâmite externo do processo finalizado com sucesso!', 'UTF-8', 'ISO-8859-1'); $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); $btnFechar->click(); @@ -399,7 +378,7 @@ protected function tramitarProcessoExternamente($protocolo, $repositorio, $unida sleep(1); } - protected function tramitarProcessoExternamenteGestorNaoResponsavelUnidade ($repositorio, $unidadeDestino, $unidadeDestinoHierarquia) { + protected function tramitarProcessoExternamenteGestorNaoResponsavelUnidade ($dados) { // Acessar funcionalidade de trâmite externo try { @@ -409,14 +388,14 @@ protected function tramitarProcessoExternamenteGestorNaoResponsavelUnidade ($rep } // Preencher parâmetros do trâmite - $this->paginaTramitar->repositorio($repositorio); - $this->paginaTramitar->unidade($unidadeDestino, $unidadeDestinoHierarquia); + $this->paginaTramitar->repositorio($dados['repositorio']); + $this->paginaTramitar->unidade($dados['unidadeDestino'], ''); $this->paginaTramitar->tramitar(); - $callbackEnvio = function ($testCase) { + $callbackEnvio = function ($testCase) use ($dados) { try { $testCase->frame('ifrEnvioProcesso'); - $mensagemValidacao = utf8_encode('Por favor, observe o seguinte procedimento para realizar o mapeamento adequado: Acesse a funcionalidade Administração, em seguida selecione Tramita GOV.BR e, por fim, proceda ao mapeamento utilizando somente as unidades pertinentes ao seu órgão/entidade na funcionalidade Mapeamento de Unidades. Certifique-se de seguir esse processo para garantir a correta execução do mapeamento.'); + $mensagemValidacao = mb_convert_encoding('A unidade ' . $dados['nomeUnidadeMalMapeada'] . ' (' . $dados['idUnidadeMalMapeada'] . ') foi mapeada de forma errada. Desse modo, entre em contato com os Gestores do seu órgão e informe que o mapeamento não está correto.', 'UTF-8', 'ISO-8859-1'); $testCase->assertStringContainsString($mensagemValidacao, $testCase->byCssSelector('body')->text()); $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); $btnFechar->click(); @@ -442,13 +421,16 @@ protected function tramitarProcessoExternamenteGestorNaoResponsavelUnidade ($rep } } - protected function tramitarProcessoInternamente($unidadeDestino) + protected function tramitarProcessoInternamente($unidadeDestino, $manterAbertoNaUnidadeAtual = false) { // Acessar funcionalidade de trâmite interno $this->paginaProcesso->navegarParaTramitarProcessoInterno(); // Preencher parâmetros do trâmite $this->paginaTramitar->unidadeInterna($unidadeDestino); + if ($manterAbertoNaUnidadeAtual) { + $this->paginaTramitar->manterAbertoNaUnidadeAtual(); + } $this->paginaTramitar->tramitarInterno(); sleep(1); @@ -486,7 +468,7 @@ protected function tramitarProcessoInternamenteParaCancelamento($unidadeOrigem, protected function validarRecibosTramite($mensagem, $verificarReciboEnvio, $verificarReciboConclusao) { - $mensagem = utf8_encode($mensagem); + $mensagem = mb_convert_encoding($mensagem, 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($mensagem, $verificarReciboEnvio, $verificarReciboConclusao) { sleep(5); $testCase->refresh(); @@ -515,7 +497,7 @@ protected function validarHistoricoTramite( if ($verificarProcessoRejeitado) { - $motivoRecusa = utf8_encode($motivoRecusa); + $motivoRecusa = mb_convert_encoding($motivoRecusa, 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($unidadeDestino, $motivoRecusa) { sleep(5); $testCase->refresh(); @@ -531,7 +513,7 @@ protected function validarDadosProcesso($descricao, $restricao, $observacoes, $l sleep(2); $this->paginaProcesso->navegarParaEditarProcesso(); $this->paginaEditarProcesso = new PaginaEditarProcesso($this); - $this->assertEquals(utf8_encode($descricao), $this->paginaEditarProcesso->descricao()); + $this->assertEquals(mb_convert_encoding($descricao, 'UTF-8', 'ISO-8859-1'), $this->paginaEditarProcesso->descricao()); $this->assertEquals($restricao, $this->paginaEditarProcesso->restricao()); $listaInteressados = is_array($listaInteressados) ? $listaInteressados : array($listaInteressados); @@ -601,8 +583,8 @@ protected function validarProcessosTramitados($protocolo, $deveExistir) { $this->frame(null); $this->paginaBase->navegarParaControleProcesso(); - $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados Externamente')); - $this->byLinkText("Processos Tramitados Externamente")->click(); + $this->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Processos em Tramitação Externa', 'UTF-8', 'ISO-8859-1')); + $this->byLinkText(mb_convert_encoding("Processos em Tramitação Externa", 'UTF-8', 'ISO-8859-1'))->click(); $this->assertEquals($deveExistir, $this->paginaProcessosTramitadosExternamente->contemProcesso($protocolo)); } @@ -686,74 +668,6 @@ public function gerarDadosDocumentoExternoGrandeTeste($contextoProducao, $nomesA ); } - protected function realizarTramiteExterno(&$processoTeste, $documentosTeste, $remetente, $destinatario, $validarTramite) - { - $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; - - // 1 - Acessar sistema do REMETENTE do processo - $this->acessarSistema($remetente['URL'], $remetente['SIGLA_UNIDADE'], $remetente['LOGIN'], $remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - if (isset($processoTeste['PROTOCOLO'])) { - $strProtocoloTeste = $processoTeste['PROTOCOLO']; - $this->abrirProcesso($strProtocoloTeste); - } else { - $strProtocoloTeste = $this->cadastrarProcesso($processoTeste); - $processoTeste['PROTOCOLO'] = $strProtocoloTeste; - } - - // 3 - Incluir Documentos no Processo - $documentosTeste = array_key_exists('TIPO', $documentosTeste) ? array($documentosTeste) : $documentosTeste; - foreach ($documentosTeste as $doc) { - if ($doc['TIPO'] == 'G') { - $this->cadastrarDocumentoInterno($doc); - $this->assinarDocumento($remetente['ORGAO'], $remetente['CARGO_ASSINATURA'], $remetente['SENHA']); - } else if ($doc['TIPO'] == 'R') { - $this->cadastrarDocumentoExterno($doc); - } - } - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $paginaTramitar = $this->paginaTramitar; - $this->tramitarProcessoExternamente($strProtocoloTeste, $destinatario['REP_ESTRUTURAS'], $destinatario['NOME_UNIDADE'], $destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - - if ($validarTramite) { - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding($destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", $strProtocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$nomeUnidadeDestinatario, true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $deveExistir = $remetente['URL'] != $destinatario['URL']; - $this->validarProcessosTramitados($strProtocoloTeste, $deveExistir); - } - } - - public function realizarTramiteExternoSemvalidacaoNoRemetente(&$processoTeste, $documentosTeste, $remetente, $destinatario) - { - $this->realizarTramiteExterno($processoTeste, $documentosTeste, $remetente, $destinatario, false); - } - - public function realizarTramiteExternoComValidacaoNoRemetente(&$processoTeste, $documentosTeste, $remetente, $destinatario) - { - $this->realizarTramiteExterno($processoTeste, $documentosTeste, $remetente, $destinatario, true); - } - public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste, $documentosTeste, $destinatario, $devolucao = false, $unidadeSecundaria = false) { $strProtocoloTeste = $processoTeste['PROTOCOLO']; @@ -772,7 +686,7 @@ public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTest // 12 - Validar dados do processo $devolucao = $processoTeste['ORIGEM'] == $destinatario['URL']; - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= $processoTeste['TIPO_PROCESSO']; $processoTeste['OBSERVACOES'] = (!$devolucao) ? $strTipoProcesso : $processoTeste['OBSERVACOES']; $this->validarDadosProcesso($processoTeste['DESCRICAO'], $processoTeste['RESTRICAO'], $processoTeste['OBSERVACOES'], $processoTeste['INTERESSADOS']); @@ -849,7 +763,7 @@ protected function selecionarProcessos($numProtocolo=null) protected function visualizarProcessoTramitadosEmLote($test) { $this->paginaBase->navegarParaControleProcesso(); - $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados em Bloco')); + $this->byId("txtInfraPesquisarMenu")->value(mb_convert_encoding('Processos Tramitados em Bloco', 'UTF-8', 'ISO-8859-1')); $this->byLinkText("Processos Tramitados em Bloco")->click(); } @@ -865,22 +779,9 @@ protected function navegarProcessoEmLote($selAndamento, $numProtocolo=null) $this->paginaTramitarProcessoEmLote->navegarProcessoEmLote($selAndamento, $numProtocolo); } - protected function navegarMapeamentoUnidade () { + protected function navegarMapeamentoUnidade() { $this->frame(null); $this->byXPath("//img[contains(@title, 'Controle de Processos')]")->click(); $this->paginaMapeamentoUnidade->navegarMapeamentoUnidade(); } - - public function atualizarTramitesPEN($bolOrg1 = true, $bolOrg2 = true, $org2Primeiro = true, $quantidade = 1) - { - /*for($i=0;$i<$quantidade;$i++){ - if($org2Primeiro){ - if($bolOrg2)exec(PEN_SCRIPT_MONITORAMENTO_ORG2); - if($bolOrg1)exec(PEN_SCRIPT_MONITORAMENTO_ORG1); - }else{ - if($bolOrg1)exec(PEN_SCRIPT_MONITORAMENTO_ORG1); - if($bolOrg2)exec(PEN_SCRIPT_MONITORAMENTO_ORG2); - } - }*/ - } } diff --git a/tests_super/funcional/tests/FixtureCenarioBaseTestCase.php b/tests_super/funcional/tests/FixtureCenarioBaseTestCase.php new file mode 100755 index 000000000..8daf39101 --- /dev/null +++ b/tests_super/funcional/tests/FixtureCenarioBaseTestCase.php @@ -0,0 +1,331 @@ +buscarHipoteseLegal($dadosProcesso); + } + + $parametros = [ + 'Descricao' => $dadosProcesso['DESCRICAO'] ?: util::random_string(20), + 'Interessados' => $dadosProcesso['INTERESSADOS'] ?: util::random_string(40), + 'IdHipoteseLegal' => $dadosProcesso['HIPOTESE_LEGAL'] ? $objHipLegalDTO->getNumIdHipoteseLegal() : null, + 'StaNivelAcessoLocal' => $dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO, + 'StaNivelAcessoGlobal' => $dadosProcesso["RESTRICAO"] ?: PaginaIniciarProcesso::STA_NIVEL_ACESSO_PUBLICO + ]; + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloDTO = $objProtocoloFixture->carregar($parametros); + $objProcedimentoFixture = new ProcedimentoFixture(); + + $parametrosProcedimento = [ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]; + if (!is_null($dadosProcesso['ID_TIPO_PROCESSO'])) { + $parametrosProcedimento['IdTipoProcedimento'] = $dadosProcesso['ID_TIPO_PROCESSO']; + } + $objProcedimentoDTO = $objProcedimentoFixture->carregar($parametrosProcedimento); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdTarefa' => \TarefaRN::$TI_GERACAO_PROCEDIMENTO, + 'IdUsuarioConclusao' => 100000001 + ]); + + $objContatoFixture = new ContatoFixture(); + $objContatoDTO = $objContatoFixture->carregar([ + 'Nome' => $parametros['Interessados'] + ]); + + if ($cadastrarParticipante) { + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteDTO = $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdContato' => $objContatoDTO->getNumIdContato() + ]); + } + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdAssunto' => 377 + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $dadosProcesso['PROTOCOLO'] = $objProtocoloDTO->getStrProtocoloFormatado(); + + return $objProtocoloDTO; + } + + protected function buscarHipoteseLegal($dados) + { + $param = [ + 'Nome' => trim(explode('(',$dados['HIPOTESE_LEGAL'])[0]), + 'BaseLegal' => explode(')',trim(explode('(',$dados['HIPOTESE_LEGAL'])[1]))[0] + ]; + $objHipLegalFixture = new HipoteseLegalFixture(); + return $objHipLegalFixture->buscar($param)[0]; + } + + protected function cadastrarDocumentoInternoFixture($dadosDocumentoInterno, $idProtocolo, $assinarDocumento = true) + { + + if (!is_null($dadosDocumentoInterno['HIPOTESE_LEGAL'])){ + $objHipLegalDTO = $this->buscarHipoteseLegal($dadosDocumentoInterno); + } + + $dadosDocumentoDTO = [ + 'IdProtocolo' => $idProtocolo, + 'IdProcedimento' => $idProtocolo, + 'Descricao' => $dadosDocumentoInterno['DESCRICAO'], + 'IdHipoteseLegal' => $dadosDocumentoInterno["HIPOTESE_LEGAL"] ? $objHipLegalDTO->getNumIdHipoteseLegal() : null, + 'StaNivelAcessoGlobal' => $dadosDocumentoInterno["RESTRICAO"] ?: \ProtocoloRN::$NA_PUBLICO, + 'StaNivelAcessoLocal' => $dadosDocumentoInterno["RESTRICAO"] ?: \ProtocoloRN::$NA_PUBLICO, + 'IdUnidadeResponsavel' => $dadosDocumentoInterno["UNIDADE_RESPONSAVEL"] ?: null + ]; + + if ($serieDTO = $this->buscarIdSerieDoDocumento($dadosDocumentoInterno['TIPO_DOCUMENTO'])) { + $dadosDocumentoDTO['IdSerie'] = $serieDTO->getNumIdSerie(); + } + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar($dadosDocumentoDTO); + + if ($assinarDocumento) { + //Adicionar assinatura ao documento + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $idProtocolo, + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + } + + return $objDocumentoDTO; + + } + + protected function cadastrarDocumentoExternoFixture($dadosDocumentoExterno, $idProtocolo) + { + $dadosDocumentoDTO = [ + 'IdProtocolo' => $idProtocolo, + 'IdProcedimento' => $idProtocolo, + 'Descricao' => $dadosDocumentoExterno['DESCRICAO'], + 'StaProtocolo' => \ProtocoloRN::$TP_DOCUMENTO_RECEBIDO, + 'StaDocumento' => \DocumentoRN::$TD_EXTERNO, + 'IdConjuntoEstilos' => NULL, + ]; + + if ($serieDTO = $this->buscarIdSerieDoDocumento($dadosDocumentoExterno['TIPO_DOCUMENTO'])) { + $dadosDocumentoDTO['IdSerie'] = $serieDTO->getNumIdSerie(); + } + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar($dadosDocumentoDTO); + + //Adicionar anexo ao documento + $objAnexoFixture = new AnexoFixture(); + $objAnexoFixture->carregar([ + 'IdProtocolo' => $objDocumentoDTO->getDblIdDocumento(), + 'Nome' => basename($dadosDocumentoExterno['ARQUIVO']), + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $idProtocolo, + 'Conclusao' => \InfraData::getStrDataHoraAtual(), + 'IdTarefa' => \TarefaRN::$TI_ARQUIVO_ANEXADO, + 'IdUsuarioConclusao' => 100000001 + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), + 'Nome' => 'ANEXO' + ]); + + return $objDocumentoDTO; + } + + protected function anexarProcessoFixture($protocoloPrincipalId, $protocoloProcessoAnexadoId) + { + // Realizar a anexação de processos + $objAnexoProcessoFixture = new AnexoProcessoFixture(); + $objAnexoProcessoFixture->carregar([ + 'IdProtocolo' => $protocoloPrincipalId, + 'IdDocumento' => $protocoloProcessoAnexadoId, + ]); + } + + protected function consultarProcessoFixture($protocoloFormatado, $staProtocolo = null) + { + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloDTO = $objProtocoloFixture->buscar([ + 'ProtocoloFormatado' => $protocoloFormatado, + 'StaProtocolo' => $staProtocolo ?: \ProtocoloRN::$TP_DOCUMENTO_GERADO, + ]); + return $objProtocoloDTO[0]; + } + + protected function realizarTramiteExternoFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario, $validarTramite) + { + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; + + // 1 - Cadastrar novo processo de teste + if (isset($processoTeste['PROTOCOLO'])) { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + $objProtocoloDTO = $this->consultarProcessoFixture($strProtocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + + } else { + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $strProtocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + $processoTeste['PROTOCOLO'] = $strProtocoloTeste; + } + + // 2 - Incluir Documentos no Processo + $documentosTeste = array_key_exists('TIPO', $documentosTeste) ? array($documentosTeste) : $documentosTeste; + foreach ($documentosTeste as $doc) { + if ($doc['TIPO'] == 'G') { + // cadastra e assina documento interno + $this->cadastrarDocumentoInternoFixture($doc,$objProtocoloDTO->getDblIdProtocolo()); + } else if ($doc['TIPO'] == 'R') { + $this->cadastrarDocumentoExternoFixture($doc, $objProtocoloDTO->getDblIdProtocolo()); + } + } + + // 3 - Acessar sistema do REMETENTE do processo + $this->acessarSistema($remetente['URL'], $remetente['SIGLA_UNIDADE'], $remetente['LOGIN'], $remetente['SENHA']); + + // 4 - Abrir processo + $this->abrirProcesso($strProtocoloTeste); + + // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + $paginaTramitar = $this->paginaTramitar; + $this->tramitarProcessoExternamente($strProtocoloTeste, $destinatario['REP_ESTRUTURAS'], $destinatario['NOME_UNIDADE'], $destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + + if ($validarTramite) { + // 6 - Verificar se situação atual do processo está como bloqueado + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + $unidade = mb_convert_encoding($destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", $strProtocoloTeste, $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + + // 8 - Validar histórico de trâmite do processo + $this->validarHistoricoTramite(self::$nomeUnidadeDestinatario, true, true); + + // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + $deveExistir = $remetente['URL'] != $destinatario['URL']; + $this->validarProcessosTramitados($strProtocoloTeste, $deveExistir); + } + } + + public function realizarTramiteExternoComValidacaoNoRemetenteFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario) + { + $this->realizarTramiteExternoFixture($processoTeste, $documentosTeste, $remetente, $destinatario, true); + } + + public function realizarTramiteExternoSemValidacaoNoRemetenteFixture(&$processoTeste, $documentosTeste, $remetente, $destinatario) + { + $this->realizarTramiteExternoFixture($processoTeste, $documentosTeste, $remetente, $destinatario, false); + } + + protected function buscarIdSerieDoDocumento($tipoDocumento) + { + $serieDTO = new \SerieDTO(); + $serieDTO->setStrNome($tipoDocumento); + $serieDTO->retNumIdSerie(); + $serieDTO->setNumMaxRegistrosRetorno(1); + + $objBD = new \SerieBD(\BancoSEI::getInstance()); + return $objBD->consultar($serieDTO); + } + + protected function atualizarProcessoFixture($objProtocoloDTO, $dadosProcesso = []) + { + if (!is_null($dadosProcesso['DESCRICAO'])) { + $parametros['Descricao'] = $dadosProcesso['DESCRICAO']; + } + + if (!is_null($dadosProcesso['INTERESSADOS'])) { + $parametros['Interessados'] = $dadosProcesso['INTERESSADOS']; + } + + $parametros['IdProtocolo'] = $objProtocoloDTO->getDblIdProtocolo(); + $objProtocoloFixture = new ProtocoloFixture(); + + return $objProtocoloFixture->atualizar($parametros); + } + /** + * Método cadastrarHipoteseLegal + * + * Este método realiza o cadastro de uma hipótese legal para testes de trâmite de processos e documentos. + * Ele recebe um array com os dados da hipótese legal, cria uma nova instância de `HipoteseLegalFixture`, + * e utiliza esses dados para carregar a hipótese legal no sistema. + * + * @param array $hipotesLegal Um array contendo os dados da hipótese legal a ser cadastrada, com as seguintes chaves: + * - `HIPOTESE_LEGAL` (string): O nome da hipótese legal. + * - `HIPOTESE_LEGAL_BASE_LEGAL` (string): A base legal associada à hipótese. + * - `HIPOTESE_LEGAL_DESCRICAO` (string) [opcional]: Uma descrição para a hipótese legal (padrão: 'Nova hipotese legal para testes'). + * - `HIPOTESE_LEGAL_STA_NIVEL_ACESSO` (int) [opcional]: O nível de acesso para a hipótese legal (padrão: nível restrito). + * - `HIPOTESE_LEGAL_SIN_ATIVO` (string) [opcional]: Indicador de atividade da hipótese legal ('S' para ativo por padrão). + * + * @return object $objHipoteseLegalDTO Retorna um objeto `HipoteseLegalDTO` contendo os dados da hipótese legal cadastrada. + */ + protected function cadastrarHipoteseLegal($hipotesLegal) + { + // Criação de uma nova instância de HipoteseLegalFixture + $objHipLegalFixture = new HipoteseLegalFixture(); + + // Definição dos parâmetros para cadastro da hipótese legal + $param = [ + 'Nome' => $hipotesLegal['HIPOTESE_LEGAL'], + 'BaseLegal' => $hipotesLegal['HIPOTESE_LEGAL_BASE_LEGAL'], + 'Descricao' => $hipotesLegal['HIPOTESE_LEGAL_DESCRICAO'] ?? 'Nova hipotese legal para testes', + 'StaNivelAcesso' => $hipotesLegal['HIPOTESE_LEGAL_STA_NIVEL_ACESSO'] ?? \ProtocoloRN::$NA_RESTRITO, + 'SinAtivo' => $hipotesLegal['HIPOTESE_LEGAL_SIN_ATIVO'] ?? "S" + ]; + + // Carregar a hipótese legal com os parâmetros fornecidos + $objHipoteseLegalDTO = $objHipLegalFixture->carregar($param); + + // Retorna o objeto DTO da hipótese legal cadastrada + return $objHipoteseLegalDTO; + } + + protected function cadastrarTipoProcedimentoFixture($dados = []) + { + $objTipoProcedimentoFixture = new TipoProcedimentoFixture(); + $objTipoProcedimentoDTO = $objTipoProcedimentoFixture->carregar([ + 'Nome' => $dados['NOME'] + ]); + + return $objTipoProcedimentoDTO; + } + +} diff --git a/tests_super/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php b/tests_super/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php new file mode 100644 index 000000000..f7f85352a --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php @@ -0,0 +1,123 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $this->penMapUnidadesFixture = $penMapUnidadesFixture->carregar([ + 'Id' => self::$remetente['ID_ESTRUTURA'], + 'Sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'Nome' => self::$remetente['NOME_UNIDADE'] + ]); + } + + /** + * Teste mapeamento de unidades e limitação dos repositórios para tramite + * + * @return void + */ + public function test_mapeamento_unidades_com_limitacao_de_repositorios() + { + $this->removerRestricaoUnidade(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaMapUnidades->navegarPenMapeamentoUnidades(); + $this->paginaMapUnidades->pesquisarUnidade(self::$remetente['SIGLA_UNIDADE']); + sleep(2); + + $this->paginaMapUnidades->selecionarEditar(); + $this->paginaMapUnidades->limparRestricoes(); + + $this->paginaMapUnidades->selecionarRepoEstruturas(self::$remetente['REP_ESTRUTURAS']); + $this->paginaMapUnidades->selecionarUnidade(self::$remetente['NOME_UNIDADE']); + + $this->paginaMapUnidades->salvar(); + sleep(2); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + 'Mapeamento de Unidade gravado com sucesso.', + $mensagem + ); + $this->sairSistema(); + } + + /** + * Teste para validar se aplicou a restrição de mapeamento de unidades no tramite + * + * @return void + */ + public function test_tramitar_com_limitacao_de_repositorios() + { + $this->criarProcesso(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->abrirProcesso($this->objProtocoloDTO->getStrProtocoloFormatado()); + + $this->paginaProcesso->navegarParaTramitarProcesso(); + $this->paginaMapUnidades->validarRepositorio(self::$remetente['REP_ESTRUTURAS']); + $this->paginaMapUnidades->selecionarUnidade(self::$remetente['NOME_UNIDADE']); + + $this->removerRestricaoUnidade(); + + $this->sairSistema(); + } + + /** + * Criar processo para validar tramitação por Fixture + * + * @return void + */ + private function criarProcesso() + { + // Definição de dados de teste do processo principal + $processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + $this->objProtocoloDTO = $this->cadastrarProcessoFixture($processoTestePrincipal); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $this->objProtocoloDTO->getDblIdProtocolo()); + + } + + /** + * Remover restricao para limpar teste + * + * @return void + */ + private function removerRestricaoUnidade() + { + $penUnidadeRestricaoFixture = new \PenUnidadeRestricaoFixture(); + $penUnidadeRestricaoFixture->remover([ + 'NomeUnidadeRestricao' => self::$remetente['REP_ESTRUTURAS'], + 'NomeUnidadeRHRestricao' => self::$remetente['NOME_UNIDADE'] + ]); + } + +} diff --git a/tests_super/funcional/tests/MapeamentoEnvioParcialTest.php b/tests_super/funcional/tests/MapeamentoEnvioParcialTest.php index f30dd077f..309e7b77c 100644 --- a/tests_super/funcional/tests/MapeamentoEnvioParcialTest.php +++ b/tests_super/funcional/tests/MapeamentoEnvioParcialTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoEnvioParcialTest extends CenarioBaseTestCase +class MapeamentoEnvioParcialTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $remetenteB; @@ -46,7 +46,7 @@ public function test_novo_mapeamento_envio_parcial_test() $this->assertNotNull($nomeUnidadeCadastrado); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial cadastrado com sucesso.'), + mb_convert_encoding('Mapeamento de Envio Parcial cadastrado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } @@ -87,7 +87,7 @@ public function test_editar_mapeamento_envio_parcial_test() $this->assertNotNull($nomeUnidadeCadastrado); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento de Envio Parcial atualizado com sucesso.'), + mb_convert_encoding('Mapeamento de Envio Parcial atualizado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } @@ -175,7 +175,7 @@ public function test_excluir_mapeamento_envio_parcial_test() sleep(1); $mensagem = $this->paginaCadastroMapEnvioCompDigitais->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Mapeamento excluído com sucesso.'), + mb_convert_encoding('Mapeamento excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); } diff --git a/tests_super/funcional/tests/MapeamentoHipoteseLegalTest.php b/tests_super/funcional/tests/MapeamentoHipoteseLegalTest.php new file mode 100644 index 000000000..67230d3a2 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoHipoteseLegalTest.php @@ -0,0 +1,39 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaPenHipoteseLegalListar->navegarMapeamentoHipoteseLegalListar(); + $this->assertTrue($this->paginaPenHipoteseLegalListar->existeTabela()); + + $this->sairSistema(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php index 0489546e1..696b26a21 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoDesativarReativarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoDesativarReativarTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -58,7 +58,7 @@ public function test_desativacao_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi desativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi desativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -87,7 +87,7 @@ public function test_reativacao_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -116,7 +116,7 @@ public function test_desativacao_checkbox_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi desativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi desativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -145,7 +145,7 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Relacionamento entre Unidades foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Relacionamento entre Unidades foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php index b93b63f4b..0276282ae 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoExcluirTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoExcluirTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -62,7 +62,7 @@ public function test_excluir_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre unidades foi excluído com sucesso.'), + mb_convert_encoding('Relacionamento entre unidades foi excluído com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php index 7ccfc62a7..9524d5c5c 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -8,7 +8,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoExportarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoExportarTest extends FixtureCenarioBaseTestCase { public static $remetente; diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php index 74749a272..d171c163d 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoReativarTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoReativarTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -66,7 +66,7 @@ public function test_reativacao_mapeamento_orgao_externo() $this->paginaTipoProcessoReativar->reativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Mapeamento de Tipo de Processo foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -94,7 +94,7 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); - $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $menssagemValidacao = mb_convert_encoding('Mapeamento de Tipo de Processo foi reativado com sucesso.', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); @@ -129,14 +129,14 @@ private function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') array( 'IdMapeamento' => $idMapeamento, 'IdProcedimento' => 100000348, - 'NomeProcedimento' => utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), - 'SimAtivo' => $sinAtivo + 'NomeProcedimento' => mb_convert_encoding('Acompanhamento Legislativo: Congresso Nacional', 'UTF-8', 'ISO-8859-1'), + 'SinAtivo' => $sinAtivo ), array( 'IdMapeamento' => $idMapeamento, 'IdProcedimento' => 100000425, - 'NomeProcedimento' => utf8_encode('mauro teste'), - 'SimAtivo' => $sinAtivo + 'NomeProcedimento' => mb_convert_encoding('mauro teste', 'UTF-8', 'ISO-8859-1'), + 'SinAtivo' => $sinAtivo ) ); } diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php index 1e31a79b0..bf15fc0b7 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -7,7 +7,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -55,7 +55,7 @@ public function test_cadastrar_novo_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre Unidades cadastrado com sucesso.'), + mb_convert_encoding('Relacionamento entre Unidades cadastrado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -91,7 +91,7 @@ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Cadastro de relacionamento entre unidades já existente.'), + mb_convert_encoding('Cadastro de relacionamento entre unidades já existente.', 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -133,7 +133,7 @@ public function test_editar_mapeamento_orgao_externo() sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Relacionamento entre Unidades atualizado com sucesso.'), + mb_convert_encoding('Relacionamento entre Unidades atualizado com sucesso.', 'UTF-8', 'ISO-8859-1'), $mensagem ); diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php index 6bcf6dbc0..3ad753e1f 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -8,7 +8,7 @@ * Execution Groups * @group execute_alone_group1 */ -class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends CenarioBaseTestCase +class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; diff --git a/tests_super/funcional/tests/PaginaConfiguracaoModuloRenomeadoTest.php b/tests_super/funcional/tests/PaginaConfiguracaoModuloRenomeadoTest.php index cef972f96..c3b163208 100644 --- a/tests_super/funcional/tests/PaginaConfiguracaoModuloRenomeadoTest.php +++ b/tests_super/funcional/tests/PaginaConfiguracaoModuloRenomeadoTest.php @@ -1,6 +1,6 @@ paginaConfiguracaoModuloRenomeado->getTituloPaginaConfiguracao(); - $menssagemValidacao = utf8_encode('Parâmetros de Configuração do Módulo Tramita GOV.BR'); + $menssagemValidacao = mb_convert_encoding('Parâmetros de Configuração do Módulo Tramita GOV.BR', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString( $menssagemValidacao, @@ -48,7 +48,7 @@ public function test_pagina_novo_mapeamento_unidade() $value = $this->paginaConfiguracaoModuloRenomeado->getTituloPaginaNovoMapeamentoUnidade(); - $menssagemValidacao = utf8_encode('Unidades do Tramita GOV.BR (Estruturas Organizacionais):'); + $menssagemValidacao = mb_convert_encoding('Unidades do Tramita GOV.BR (Estruturas Organizacionais):', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString( $menssagemValidacao, @@ -71,7 +71,7 @@ public function test_pagina_hipotese_restricao_padrao() $value = $this->paginaConfiguracaoModuloRenomeado->getTituloPaginaHipoteseRestricaoPadrao(); - $menssagemValidacao = utf8_encode('Hipótese de Restrição Padrão - Tramita GOV.BR'); + $menssagemValidacao = mb_convert_encoding('Hipótese de Restrição Padrão - Tramita GOV.BR', 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString( $menssagemValidacao, diff --git a/tests_super/funcional/tests/PesquisarMapeamentoUnidadeTest.php b/tests_super/funcional/tests/PesquisarMapeamentoUnidadeTest.php index 184c9ecb2..8cc3e8c3c 100644 --- a/tests_super/funcional/tests/PesquisarMapeamentoUnidadeTest.php +++ b/tests_super/funcional/tests/PesquisarMapeamentoUnidadeTest.php @@ -1,6 +1,6 @@ byId('txtSiglaUnidade')->value('00000'); $this->byId('btnPesquisar')->click(); - $mensagem = utf8_encode('Nenhum mapeamento foi encontrado'); + $mensagem = mb_convert_encoding('Nenhum mapeamento foi encontrado', 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($mensagem) { $this->assertStringContainsString($mensagem, $testCase->byCssSelector('body')->text()); @@ -38,7 +38,7 @@ public function test_listagem_mapeamento_unidade_sigla_encontrada() $this->byId('txtSiglaUnidade')->value('TESTE'); $this->byId('btnPesquisar')->click(); - $mensagem = utf8_encode('TESTE'); + $mensagem = mb_convert_encoding('TESTE', 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($mensagem) { $this->assertStringContainsString($mensagem, $testCase->byCssSelector('body')->text()); @@ -54,7 +54,7 @@ public function test_listagem_mapeamento_unidade_descricao_nao_encontrada() $this->byId('txtDescricaoUnidade')->value('00000'); $this->byId('btnPesquisar')->click(); - $mensagem = utf8_encode('Nenhum mapeamento foi encontrado'); + $mensagem = mb_convert_encoding('Nenhum mapeamento foi encontrado', 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($mensagem) { $this->assertStringContainsString($mensagem, $testCase->byCssSelector('body')->text()); @@ -70,7 +70,7 @@ public function test_listagem_mapeamento_unidade_descricao_encontrada() $this->byId('txtDescricaoUnidade')->value('Unidade de Teste'); $this->byId('btnPesquisar')->click(); - $mensagem = utf8_encode('Unidade de Teste'); + $mensagem = mb_convert_encoding('Unidade de Teste', 'UTF-8', 'ISO-8859-1'); $this->waitUntil(function ($testCase) use ($mensagem) { $this->assertStringContainsString($mensagem, $testCase->byCssSelector('body')->text()); diff --git a/tests_super/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php b/tests_super/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php new file mode 100644 index 000000000..2912e6c6a --- /dev/null +++ b/tests_super/funcional/tests/ProcessoBlocoDeTramiteTravasDeTramitacaoTest.php @@ -0,0 +1,96 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $processoTeste = $this->gerarDadosProcessoTeste($remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste($remetente); + + // Cadastrar novo processo de teste e documento + self::$objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, self::$objProtocoloDTO->getDblIdProtocolo()); + + // Cadastrar novo bloco de tramite e insere protocolo + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre processo e tramita internamente ele para a unidade secundária, deixando ele aberto na atual + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + try { + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + } catch (Exception $ex) { + $this->assertStringContainsString( + utf8_encode('Não é possível tramitar um processo aberto em mais de uma unidade.'), + $ex->getMessage() + ); + } + } + + /** + * Teste seguinte que finaliza o processo na unidade atual deixando-o aberto apenas na unidade secundaria + * e tenta executar o tramite em bloco para receber a mensagem de erro + * + * @group mapeamento + * + * @return void + */ + public function test_validar_tramite_bloco_mensagem_nao_possui_andamento_aberto() + { + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre e conclui processo na unidade atual, desta forma ficando aberto apenas na unidade secundaria + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->paginaProcesso->concluirProcesso(); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + try { + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + } catch (Exception $ex) { + $this->assertStringContainsString( + utf8_encode('O processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() . ' não possui andamento aberto nesta unidade'), + $ex->getMessage() + ); + } + } + +} \ No newline at end of file diff --git a/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index dfe3006c0..ba6aafd51 100755 --- a/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group4 */ -class RecebimentoRecusaJustificativaGrandeTest extends CenarioBaseTestCase +class RecebimentoRecusaJustificativaGrandeTest extends FixtureCenarioBaseTestCase { protected $destinatarioWs; @@ -47,7 +47,7 @@ public function test_tramitar_processo_da_origem() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); @@ -97,7 +97,7 @@ private function recusarTramite($servicoPEN, $id_tramite) $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $id_tramite; - $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); + $parametros->recusaDeTramite->justificativa = mb_convert_encoding($justificativa, 'UTF-8', 'ISO-8859-1'); $parametros->recusaDeTramite->motivo = "99"; return $servicoPEN->recusarTramite($parametros); } diff --git a/tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php b/tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php new file mode 100755 index 000000000..f3eb491a8 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoConcluidoTest.php @@ -0,0 +1,234 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(6, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_situacao_do_processo_no_bloco_status7() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->abrirProcesso($objProtocoloDTO->getStrProtocoloFormatado()); + $this->paginaProcesso->cancelarTramitacaoExterna(); + $this->paginaTramitar->alertTextAndClose(true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(7, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_situacao_do_processo_no_bloco_status9() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoExternoTeste($remetente, 'arquivo_extensao_nao_permitida.docx'); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocolo = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $this->assertEquals(9, $objBlocoDeTramiteProtocolo[0]->getNumIdAndamento()); + return true; + }, PEN_WAIT_TIMEOUT); + } + +} diff --git a/tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php b/tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php new file mode 100755 index 000000000..c76e5b886 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoDeTramiteSituacaoProcessoTest.php @@ -0,0 +1,95 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + $this->waitUntil(function ($testCase) use ($objProtocoloDTO) { + sleep(5); + $testCase->refresh(); + + $colunaEstado = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr/td[3]')); + $this->assertEquals("Aguardando Processamento", $colunaEstado[0]->text()); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->buscar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ])[0]; + + $statusEmAndamento = in_array($objBlocoDeTramiteProtocoloFixtureDTO->getNumIdAndamento(), self::$idsEmAndamento); + $this->assertTrue($statusEmAndamento); + return true; + }, PEN_WAIT_TIMEOUT); + } + +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php index 94ce78458..7e37d24e1 100644 --- a/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php +++ b/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteBlocoExternoCadastroTest extends CenarioBaseTestCase +class TramiteBlocoExternoCadastroTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,7 +36,7 @@ public function test_cadastrar_novo_bloco_para_tramite_externo() sleep(1); $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Bloco de Trâmite externo criado com sucesso!'), + mb_convert_encoding('Bloco de Trâmite externo criado com sucesso!', 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -65,7 +65,7 @@ public function test_editar_bloco_de_tramite() sleep(1); $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Bloco de trâmite externo alterado com sucesso!'), + mb_convert_encoding('Bloco de trâmite externo alterado com sucesso!', 'UTF-8', 'ISO-8859-1'), $mensagem ); diff --git a/tests_super/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php b/tests_super/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php new file mode 100644 index 000000000..8967980f4 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoComProcessoNaoMapeadoRecusaTest.php @@ -0,0 +1,240 @@ +carregar([ + 'Nome' => 'PEN_TIPO_PROCESSO_EXTERNO', + 'Valor' => null + ]); + putenv("DATABASE_HOST=org1-database"); + } + + public function test_tramite_bloco_externo_com_processo_nao_mapeado() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $this->prepararCenariosFixtures(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + // Saída do sistema + $this->sairSistema(); + } + + public function test_verificar_envio_processo() + { + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalEmProcessamento = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + try { + $statusImg = $statusTd->byXPath(mb_convert_encoding(".//img[@title='Aguardando Processamento']", 'UTF-8', 'ISO-8859-1')); + if ($statusImg){ + $totalEmProcessamento++; + } + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada + } + } + $this->assertEquals($totalEmProcessamento,0); // Todos processos enviados + return true; + }, PEN_WAIT_TIMEOUT); + + sleep(5); + } + + public function test_verificar_envio_tramite_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); + + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $quantidadeLinhasRecusadas = $this->paginaCadastrarProcessoEmBloco->buscarQuantidadeProcessosRecusados(); + + $this->assertEquals($quantidadeLinhasRecusadas, 1); + + // Saída do sistema + $this->sairSistema(); + } + + public function test_incluir_processo_recusado_em_novo_bloco() + { + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + self::$objBlocoDeTramiteDTO2 = $objBlocoDeTramiteFixture->carregar(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = self::$objProtocoloDTO3->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Verificação do título da página + $titulo = mb_convert_encoding("Incluir Processo(s) no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'); + $tituloRetorno = $this->paginaTramiteEmBloco->verificarTituloDaPagina($titulo); + $this->assertEquals($titulo, $tituloRetorno); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO2->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Espera para a mensagem de sucesso aparecer + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . self::$objBlocoDeTramiteDTO2->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } + + private function prepararCenariosFixtures() + { + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + self::$objBlocoDeTramiteDTO1 = $objBlocoDeTramiteFixture->carregar(); + + // Geração dos dados para o processo e documento de teste 1 + self::$processoTeste1 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + // Cadastro do processo e documento 1 + self::$objProtocoloDTO1 = $this->cadastrarProcessoFixture(self::$processoTeste1); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, self::$objProtocoloDTO1->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO1->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + + // Geração dos dados para o processo e documento de teste 2 + self::$processoTeste2 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento 2 + self::$objProtocoloDTO2 = $this->cadastrarProcessoFixture(self::$processoTeste2); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$objProtocoloDTO2->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO2->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + + // Geração dos dados para o processo e documento de teste 3 recusa + self::$processoTeste3 = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objTipoProcedimentoDTO = $this->cadastrarTipoProcedimentoFixture([ + 'NOME' => 'Recusa: Teste Funcional', + ]); + self::$processoTeste3['ID_TIPO_PROCESSO'] = $objTipoProcedimentoDTO->getNumIdTipoProcedimento(); + + // Cadastro do processo e documento 3 recusa + self::$objProtocoloDTO3 = $this->cadastrarProcessoFixture(self::$processoTeste3); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, self::$objProtocoloDTO3->getDblIdProtocolo()); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => self::$objProtocoloDTO3->getDblIdProtocolo(), + 'IdBloco' => self::$objBlocoDeTramiteDTO1->getNumId() + ]); + } + + public static function tearDownAfterClass(): void + { + putenv("DATABASE_HOST=org2-database"); + parent::tearDownAfterClass(); + $objTipoProcessoPadraoFixture = new \TipoProcessoPadraoFixture(); + $objTipoProcessoPadraoFixture->carregar([ + 'Nome' => 'PEN_TIPO_PROCESSO_EXTERNO', + 'Valor' => '100000256' + ]); + putenv("DATABASE_HOST=org1-database"); + } +} diff --git a/tests_super/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php b/tests_super/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php new file mode 100644 index 000000000..6ed68cd23 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoEstadoProcessosTest.php @@ -0,0 +1,177 @@ +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'] + ); + + $arrProcessosTestes = $this->cadastrarBlocoComProcessosComEstadoDeTramite(); + + $arrNupsProcessosTestes = array_keys($arrProcessosTestes); + + $strProcessoNaoEnviado = $arrNupsProcessosTestes[0]; + $strProcessoSucesso = $arrNupsProcessosTestes[1]; + $strProcessoCancelado = $arrNupsProcessosTestes[2]; + $strProcessoRecusado = $arrNupsProcessosTestes[3]; + $strProcessoAguardandoProcessamento = $arrNupsProcessosTestes[4]; + + // Testar Inclusão de processo com estado de NÃO ENVIADO no bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoNaoEnviado, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding( + "Prezado(a) usuário(a), o processo " . $strProcessoNaoEnviado + . " encontra-se inserido no bloco" + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de SUCESSO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoSucesso, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de CANCELADO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoCancelado, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Testar Inclusão de processo com estado de AGUARDANDO PROCESSAMENTO em outro bloco de tramite + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $mensagem = $this->inserirProcessoEmUmBloco($strProcessoAguardandoProcessamento, $objBlocoDeTramiteDTO->getNumId()); + $this->assertStringContainsString( + mb_convert_encoding( + "Prezado(a) usuário(a), o processo " . $strProcessoAguardandoProcessamento + . " encontra-se inserido no bloco" + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } + + /** + * Registra um bloco contendo um processo, atribuindo-lhe o estado especificado do processo em um tramite em bloco. + * Estados possíveis: Aberto, Em processamento, Recusado, Cancelado, Sucesso + * + * @return array + */ + private function cadastrarBlocoComProcessosComEstadoDeTramite() + { + $arrEstados = [ + null, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, + ]; + + $arrProcessosComEstado = []; + for ($i = 0; $i < count($arrEstados); $i++) { + + $objProtocoloDTO = $this->cadastrarProcessos(); + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $dadosBlocoProcesso = []; + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + + $arrProcessosComEstado[$protocoloFormatado] = $arrEstados[$i]; + + // Popula o array com os dados necessários para esta iteração + $dadosBlocoProcesso['IdUnidadeOrigem'] = self::$remetente['ID_ESTRUTURA']; + $dadosBlocoProcesso['IdUnidadeDestino'] = self::$destinatario['ID_ESTRUTURA']; + $dadosBlocoProcesso['UnidadeDestino'] = self::$destinatario['NOME_UNIDADE']; + $dadosBlocoProcesso['IdBloco'] = $objBlocoDeTramiteDTO->getNumId(); + $dadosBlocoProcesso['IdProtocolo'] = $objProtocoloDTO->getDblIdProtocolo(); + $dadosBlocoProcesso['IdAndamento'] = $arrEstados[$i]; + + $dadosBlocoProcesso['IdRepositorioOrigem'] = self::$remetente['ID_ESTRUTURA'] ?: null; + $dadosBlocoProcesso['IdRepositorioDestino'] = self::$destinatario['ID_REP_ESTRUTURAS'] ?: null; + $dadosBlocoProcesso['RepositorioDestino'] = self::$remetente['NOME_UNIDADE'] ?: null; + + $this->cadastrarProcessoBlocoDeTramite($dadosBlocoProcesso); + } + + return $arrProcessosComEstado; + } + + private function inserirProcessoEmUmBloco($strProtocoloFormatado, $numIdBloco) + { + $this->paginaBase->navegarParaControleProcesso(); + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + $this->paginaTramiteEmBloco->selecionarProcessos([$strProtocoloFormatado]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($numIdBloco); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + return $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php b/tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php new file mode 100644 index 000000000..ff03308d5 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoEmBlocoComHipoteseLegalNaoMapeadaTest.php @@ -0,0 +1,172 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar Hipótese Legal não mapeada para tramitar o processo + $objHipoteseLegalDTO = $this->cadastrarHipoteseLegal([ + 'HIPOTESE_LEGAL' => 'Hipotese Legal Recusa Processo', + 'HIPOTESE_LEGAL_BASE_LEGAL' => 'Base Hipotese Legal Recusa Processo' + ]); + $processoTeste["HIPOTESE_LEGAL"] = $objHipoteseLegalDTO->getStrNome(). '('. $objHipoteseLegalDTO->getStrBaseLegal().')'; + $processoTeste["RESTRICAO"] = PaginaIniciarProcesso::STA_NIVEL_ACESSO_RESTRITO; + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Verificar se a mensagem de sucesso foi exibida + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + // Validação: a mensagem de alerta deve conter a hipótese legal não mapeada + $this->assertStringContainsString( + mb_convert_encoding('Hipótese legal "'. $objHipoteseLegalDTO->getStrNome() . '" do processo '.$protocoloFormatado.' não mapeada', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } + + /** + * Teste: Inclusão de documento restrito com hipótese legal não mapeada + * + * Este método testa a inclusão de um documento restrito em um processo com + * uma hipótese legal não mapeada. + * + * Passos do teste: + * - Configuração do cenário de teste com remetente e destinatário. + * - Geração de dados do processo e documento para o teste. + * - Cadastro de uma hipótese legal não mapeada para o documento. + * - Inclusão do documento no bloco de trâmite e verificação da mensagem de alerta. + */ + public function teste_inclusao_de_processo_em_bloco_com_documento_restrito_com_hipotese_legal_nao_mapeada() + { + // Configuração dos dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Cadastrar Hipótese Legal não mapeada para tramitar o documento + $objHipoteseLegalDTO = $this->cadastrarHipoteseLegal([ + 'HIPOTESE_LEGAL' => 'Hipotese Legal Recusa Documento', + 'HIPOTESE_LEGAL_BASE_LEGAL' => 'Base Hipotese Legal Recusa Documento' + ]); + + $documentoTeste["HIPOTESE_LEGAL"] = $objHipoteseLegalDTO->getStrNome(). '('. $objHipoteseLegalDTO->getStrBaseLegal().')'; + $documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; + + // Cadastro do documento restrito + $objDocummentoDTO = $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Verificar se a mensagem de sucesso foi exibida + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + // Validação: a mensagem de alerta deve conter a hipótese legal não mapeada + $numeroDocumento = str_pad($objDocummentoDTO->getDblIdDocumento(), 6, "0", STR_PAD_LEFT); + $this->assertStringContainsString( + mb_convert_encoding('Hipótese legal "'. $objHipoteseLegalDTO->getStrNome() . '" do documento Ofício '.$numeroDocumento.' não mapeada', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } +} diff --git a/tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php b/tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php new file mode 100644 index 000000000..5cad66c85 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php @@ -0,0 +1,80 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Geração dos dados para o processo e documento de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastro do processo e documento + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Carregar dados do bloco de trâmite + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acesso ao sistema + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegação para controle de processo e seleção de visualização detalhada + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarVisualizacaoDetalhada(); + + // Seleção do processo e do bloco de trâmite + $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); + $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + + // Verificação do título da página + $titulo = mb_convert_encoding("Incluir Processo(s) no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'); + $tituloRetorno = $this->paginaTramiteEmBloco->verificarTituloDaPagina($titulo); + $this->assertEquals($titulo, $tituloRetorno); + + // Inclusão do processo no bloco de trâmite + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + // Espera para a mensagem de sucesso aparecer + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + // Saída do sistema + $this->sairSistema(); + } +} diff --git a/tests_super/funcional/tests/TramiteBlocoExternoInclusaoTest.php b/tests_super/funcional/tests/TramiteBlocoExternoInclusaoTest.php new file mode 100644 index 000000000..3734072c5 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoInclusaoTest.php @@ -0,0 +1,156 @@ +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->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + $dados = [ + 'IdUnidade' => 110000002, + 'Descricao' => 'bloco_criado_' . self::$remetente['SIGLA_UNIDADE_SECUNDARIA'] + ]; + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite($dados); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + // etapa 1 + $arrColunaDescricao = $this->elements($this->using('xpath')->value("//td[4]")); + $bolEncontrado = false; + foreach ($arrColunaDescricao as $elemento) { + if (trim($elemento->text()) === self::$objBlocoDeTramiteDTO->getStrDescricao()) { + $bolEncontrado = true; + break; + } + } + + $this->assertTrue($bolEncontrado); + + // etapa 2 + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE']); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + $arrColunaDescricao = $this->elements($this->using('xpath')->value("//td[4]")); + + $bolEncontrado = false; + foreach ($arrColunaDescricao as $elemento) { + if (trim($elemento->text()) === self::$objBlocoDeTramiteDTO->getStrDescricao()) { + $bolEncontrado = true; + break; + } + } + + $this->assertFalse($bolEncontrado); + + $this->sairSistema(); + } + + /** + * Teste Incluir processo já adicionado em outro bloco + * + * @return void + */ + public function test_incluir_processo_em_mais_de_um_bloco() + { + 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'] + ); + self::$objProtocoloDTO = $this->cadastrarProcessos(); + $objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $dados = [ + 'IdProtocolo' => self::$objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]; + + $this->cadastrarProcessoBlocoDeTramite($dados); + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + + $this->paginaBase->navegarParaControleProcesso(); + + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding( + 'Prezado(a) usuário(a), o processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco ' . $objBlocoDeTramiteDTO->getNumOrdem() . ' - ' + . self::$objBlocoDeTramiteDTO->getStrDescricao() + . ' da unidade ' . self::$remetente['SIGLA_UNIDADE'] + . '. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php b/tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php index f0f984fca..ae069d57f 100644 --- a/tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php +++ b/tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php @@ -1,24 +1,18 @@ gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); for ($i = 0; $i < self::$numQtyProcessos; $i++) { - $objProtocoloFixture = new ProtocoloFixture(); - $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ - 'Descricao' => 'teste' - ]); - - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - //Incluir novos documentos relacionados - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - 'Descricao' => self::$documentoTeste1['DESCRICAO'], - 'StaProtocolo' => ProtocoloRN::$TP_DOCUMENTO_RECEBIDO, - 'StaDocumento' => DocumentoRN::$TD_EXTERNO, - 'IdConjuntoEstilos' => NULL, - ]); - - //Adicionar anexo ao documento - $objAnexoFixture = new AnexoFixture(); - $objAnexoFixture->carregar([ - 'IdProtocolo' => $objDocumentoDTO->getDblIdDocumento(), - 'Nome' => basename(self::$documentoTeste1['ARQUIVO']), - ]); - - // $objAssinaturaFixture = new AssinaturaFixture(); - // $objAssinaturaFixture->carregar([ - // 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - // 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - // 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), - // ]); + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() ]); - self::$protocoloTestePrincipal['PROTOCOLO'] = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); } $this->acessarSistema( @@ -125,7 +64,24 @@ public function test_tramitar_processo_anexado_da_origem() $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } ); sleep(10); } else { @@ -139,24 +95,32 @@ public function test_tramitar_processo_anexado_da_origem() } public function test_verificar_envio_processo() - { - $this->markTestIncomplete( - 'Tela de confirmação de envio suprimida. Aguardando refatoração da funcionalidade do bloco para refatorar este teste.' - ); - + { $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - $this->navegarProcessoEmLote(0); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); $testCase->refresh(); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + if (self::$tramitar == true) { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Concluído'])", 'UTF-8', 'ISO-8859-1')); + } else { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Em aberto'])", 'UTF-8', 'ISO-8859-1')); + } + $totalConcluidos++; + } + $this->assertEquals($totalConcluidos, self::$numQtyProcessos); return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + }, PEN_WAIT_TIMEOUT); sleep(5); } @@ -173,9 +137,9 @@ public function test_verificar_envio_tramite_em_bloco() $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); if (self::$tramitar == true) { - $this->assertNotEquals('Aberto', $novoStatus); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); } else { - $this->assertEquals('Aberto', $novoStatus); + $this->assertEquals(mb_convert_encoding("Aberto", 'UTF-8', 'ISO-8859-1'), $novoStatus); } $this->sairSistema(); diff --git a/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php b/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php index 3178e65a1..0afa56e49 100644 --- a/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php +++ b/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php @@ -1,22 +1,18 @@ gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); for ($i = 0; $i < self::$numQtyProcessos; $i++) { - $objProtocoloFixture = new ProtocoloFixture(); - $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ - 'Descricao' => 'teste' - ]); - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - ]); + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() ]); - self::$protocoloTestePrincipal = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); } $this->acessarSistema( @@ -99,7 +56,24 @@ public function teste_tramite_bloco_externo() $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } ); sleep(5); @@ -121,23 +95,31 @@ public function teste_tramite_bloco_externo() */ public function test_verificar_envio_processo() { - $this->markTestIncomplete( - 'Tela de confirmação de envio suprimida. Aguardando refatoração da funcionalidade do bloco para refatorar este teste.' - ); - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - $this->navegarProcessoEmLote(0); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); $testCase->refresh(); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + if (self::$tramitar == true) { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Concluído'])", 'UTF-8', 'ISO-8859-1')); + } else { + $statusImg = $statusTd->byXPath(mb_convert_encoding("(//img[@title='Em aberto'])", 'UTF-8', 'ISO-8859-1')); + } + $totalConcluidos++; + } + $this->assertEquals($totalConcluidos, self::$numQtyProcessos); return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + }, PEN_WAIT_TIMEOUT); sleep(5); @@ -152,25 +134,30 @@ public function test_verificar_envio_processo() */ public function test_verificar_envio_tramite_em_bloco() { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->waitUntil(function ($testCase) { + sleep(5); + $testCase->refresh(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertNotEquals('Aguardando Processamento', $novoStatus); + return true; + }, PEN_WAIT_TIMEOUT); - 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + $this->assertEquals(mb_convert_encoding("Concluído", 'UTF-8', 'ISO-8859-1'), $novoStatus); + } else { + $this->assertEquals("Aberto", $novoStatus); + } - if (self::$tramitar == true) { - $this->assertNotEquals('Aberto', $novoStatus); - } else { - $this->assertEquals('Aberto', $novoStatus); - } - - $this->sairSistema(); + $this->sairSistema(); } } \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php b/tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php index 66b1a144c..48acc93a9 100644 --- a/tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php +++ b/tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php @@ -1,17 +1,15 @@ definirContextoTeste(CONTEXTO_ORGAO_A); - - $this->cadastrarBlocoDeTramite(); - $this->cadastrarProcessos(); } /** @@ -40,15 +35,17 @@ public function teste_incluir_processo_em_bloco() self::$remetente['SENHA'] ); + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + self::$objProtocoloDTO = $this->cadastrarProcessos(); $this->paginaBase->navegarParaControleProcesso(); - $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); - $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); $this->paginaTramiteEmBloco->clicarSalvar(); sleep(2); $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); $this->assertStringContainsString( - utf8_encode('Processo(s) incluído(s) com sucesso no bloco ' . $this->objBlocoDeTramiteDTO->getNumId()), + mb_convert_encoding('Processo(s) incluído(s) com sucesso no bloco ' . self::$objBlocoDeTramiteDTO->getNumOrdem(), 'UTF-8', 'ISO-8859-1'), $mensagem ); @@ -61,12 +58,6 @@ public function teste_incluir_processo_em_bloco() */ public function teste_mesmo_processo_em_bloco() { - $objBlocoDeTramiteProtocoloFixture = new BlocoDeTramiteProtocoloFixture(); - $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $this->objProtocoloDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $this->objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $this->objProtocoloDTO->getStrProtocoloFormatado() - ]); $this->acessarSistema( self::$remetente['URL'], @@ -76,84 +67,47 @@ public function teste_mesmo_processo_em_bloco() ); $this->paginaBase->navegarParaControleProcesso(); - $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); - $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); $this->paginaTramiteEmBloco->clicarSalvar(); sleep(2); $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( - utf8_encode( - 'Prezado(a) usuário(a), o processo ' . $this->objProtocoloDTO->getStrProtocoloFormatado() - . ' encontra-se inserido no bloco ' . $this->objBlocoDeTramiteDTO->getNumId() . ' - ' - . $this->objBlocoDeTramiteDTO->getStrDescricao() + mb_convert_encoding( + 'Prezado(a) usuário(a), o processo ' . self::$objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco ' . self::$objBlocoDeTramiteDTO->getNumOrdem() . ' - ' + . self::$objBlocoDeTramiteDTO->getStrDescricao() + . ' da unidade ' . self::$objBlocoDeTramiteDTO->getStrSiglaUnidade() . '. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' - ), + , 'UTF-8', 'ISO-8859-1'), $mensagem ); - + $this->paginaBase->sairSistema(); } /** * Cadastra o bloco de tramite - * @return void */ - private function cadastrarBlocoDeTramite() + public function cadastrarBlocoDeTramite() { $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); - $this->objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + return $objBlocoDeTramiteFixture->carregar(); } /** * Cadastra o bloco de tramite - * @return void */ private function cadastrarProcessos() { - $parametros = []; - $objProtocoloFixture = new ProtocoloFixture(); - $this->objProtocoloDTO = $objProtocoloFixture->carregar( - $parametros, - function($objProtocoloDTO) { - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - ]); - } - ); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; } } \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoTest.php b/tests_super/funcional/tests/TramiteBlocoExternoTest.php index 6de178ce3..8fcf31a76 100644 --- a/tests_super/funcional/tests/TramiteBlocoExternoTest.php +++ b/tests_super/funcional/tests/TramiteBlocoExternoTest.php @@ -1,88 +1,37 @@ definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - $parametros = [ - 'Descricao' => 'teste' - ]; - $this->objProtocoloFixture = new ProtocoloFixture(); - $this->objProtocoloFixture->carregar($parametros, function($objProtocoloDTO) { - - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - ]); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdContato' => 100000006, - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - 'IdAtividade' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); - $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); - - $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); - $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), - 'IdxRelBlocoProtocolo' => $objProtocoloDTO->getStrProtocoloFormatado() - ]); - - }); - - } public function teste_tramite_bloco_externo() { // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + $this->acessarSistema( self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], @@ -94,9 +43,26 @@ public function teste_tramite_bloco_externo() $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } ); - sleep(10); + sleep(1); $this->sairSistema(); } diff --git a/tests_super/funcional/tests/TramiteBlocoExternoUnidadeTest.php b/tests_super/funcional/tests/TramiteBlocoExternoUnidadeTest.php new file mode 100644 index 000000000..546b099fc --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoUnidadeTest.php @@ -0,0 +1,103 @@ +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'] + ); + + self::$objProtocoloDTO = $this->cadastrarProcessos(); + + $this->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $this->assertTrue($this->paginaProcesso->processoAberto()); + + // enviar processo e criar documento na unidade secundária + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE_SECUNDARIA']); + + $this->paginaControleProcesso->abrirProcesso(self::$objProtocoloDTO->getStrProtocoloFormatado()); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $documentoTeste['UNIDADE_RESPONSAVEL'] = 110000002; + $this->cadastrarDocumentoInternoFixture($documentoTeste, self::$objProtocoloDTO->getDblIdProtocolo()); + + // devolver processo com novo documento + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE']); + $this->selecionarUnidadeInterna(self::$remetente['SIGLA_UNIDADE']); + + self::$objBlocoDeTramiteDTO = $this->cadastrarBlocoDeTramite(); + sleep(2); + + $this->paginaTramiteEmBloco->selecionarProcessos([self::$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding( + "Processo(s) incluído(s) com sucesso no bloco " . self::$objBlocoDeTramiteDTO->getNumOrdem() + , 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + + $this->sairSistema(); + } + + + /** + * Cadastra o bloco de tramite + */ + public function cadastrarBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra processo em um bloco de tramite + */ + public function cadastrarProcessoBlocoDeTramite($dados = []) + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteProtocoloFixture(); + return $objBlocoDeTramiteFixture->carregar($dados); + } + + /** + * Cadastra o bloco de tramite + */ + private function cadastrarProcessos() + { + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + return $objProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteEnvioParcialTest.php b/tests_super/funcional/tests/TramiteEnvioParcialTest.php index 898c04608..43f5fd9eb 100644 --- a/tests_super/funcional/tests/TramiteEnvioParcialTest.php +++ b/tests_super/funcional/tests/TramiteEnvioParcialTest.php @@ -1,219 +1,264 @@ definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - } + private $objProtocoloFixture; + public static $remetente; + public static $destinatario; + public static $processoTestePrincipal; + public static $protocoloTestePrincipal; + public static $documentoTeste1; + public static $documentoTeste2; + public static $arrIdMapEnvioParcialOrgaoA; + public static $arrIdMapEnvioParcialOrgaoB; + + /** + * @inheritdoc + * @return void + */ + function setUp(): void + { + parent::setUp(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } - /* + /* * Tramitar processo para o Órgão 2 com envio parcial mapeado * @group mapeamento * * @return void */ - public function test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial() - { - $this->criarCenarioTramiteEnvioParcialTest(); - - $this->acessarSistema( - self::$remetente['URL'], - self::$remetente['SIGLA_UNIDADE'], - self::$remetente['LOGIN'], - self::$remetente['SENHA'] - ); - - self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - - self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste1); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - - $this->sairSistema(); - } + public function test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial() + { + $this->criarCenarioTramiteEnvioParcialTest(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTestePrincipal->getStrProtocoloFormatado()); + $this->tramitarProcessoExternamente( + self::$protocoloTestePrincipal, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); - /* + $this->sairSistema(); + } + + /* * Verificar processo recebido no Órgão 2 com envio parcial mapeado * @group mapeamento * + * @depends test_criar_processo_contendo_documento_tramitar_remetente_envio_parcial * @return void */ - public function test_verificar_processo_recebido_tramitar_destinatario_envio_parcial() - { - $documentos = array(self::$documentoTeste1); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTestePrincipal, $documentos, self::$destinatario); - } + public function test_verificar_processo_recebido_tramitar_destinatario_envio_parcial() + { + $strProtocoloTeste = self::$protocoloTestePrincipal->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - /* + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $testCase->refresh(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; + self::$processoTestePrincipal['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTestePrincipal['DESCRICAO'], + self::$processoTestePrincipal['RESTRICAO'], + self::$processoTestePrincipal['OBSERVACOES'], + array(self::$processoTestePrincipal['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + $this->assertTrue(count($listaDocumentos) == 1); + + $this->sairSistema(); + } + + /* * Devolver processo ao Órgão 1 com envio parcial mapeado * @group mapeamento * + * @depends test_verificar_processo_recebido_tramitar_destinatario_envio_parcial * @return void */ - public function test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial() - { - $this->acessarSistema( - self::$destinatario['URL'], - self::$destinatario['SIGLA_UNIDADE'], - self::$destinatario['LOGIN'], - self::$destinatario['SENHA'] - ); - - $this->abrirProcesso(self::$protocoloTestePrincipal); - - self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$destinatario); - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$destinatario['ORGAO'], self::$destinatario['CARGO_ASSINATURA'], self::$destinatario['SENHA']); - - $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$remetente['REP_ESTRUTURAS'], self::$remetente['NOME_UNIDADE'], self::$remetente['SIGLA_UNIDADE_HIERARQUIA'], false); - - $this->sairSistema(); - } + public function test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial() + { + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + putenv("DATABASE_HOST=org2-database"); + + $this->paginaBase->navegarParaControleProcesso(); + + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$destinatario); + $protocoloTestePrincipalOrg2 = $this->consultarProcessoFixture(self::$protocoloTestePrincipal->getStrProtocoloFormatado(), \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $protocoloTestePrincipalOrg2->getDblIdProtocolo()); + + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTestePrincipal->getStrProtocoloFormatado()); - /* + sleep(5); + + $this->tramitarProcessoExternamente( + self::$protocoloTestePrincipal, + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE'], + self::$remetente['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + + $this->sairSistema(); + } + + /* * Verificar processo recebido no Órgão 1 com envio parcial mapeado * @group mapeamento * + * @depends test_criar_documento_processo_recebido_tramitar_destinatario_envio_parcial * @return void */ - public function test_verificar_processo_recebido_tramitar_remetente_envio_parcial() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTestePrincipal, $documentos, self::$remetente); + public function test_verificar_processo_recebido_tramitar_remetente_envio_parcial() + { + $strProtocoloTeste = self::$protocoloTestePrincipal->getStrProtocoloFormatado(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $testCase->refresh(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; + self::$processoTestePrincipal['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTestePrincipal['DESCRICAO'], + self::$processoTestePrincipal['RESTRICAO'], + self::$processoTestePrincipal['OBSERVACOES'], + array(self::$processoTestePrincipal['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + $this->assertTrue(count($listaDocumentos) == 2); + + $documentosTeste = array(self::$documentoTeste1, self::$documentoTeste2); + for ($i = 0; $i < count($listaDocumentos); $i++) { + $this->validarDadosDocumento($listaDocumentos[$i], $documentosTeste[$i], self::$remetente, false, null); } + + $this->sairSistema(); + } - /** - * Excluir mapeamentos de Envio Parcial no Remetente e Destinatário - * @group mapeamento - */ - public static function tearDownAfterClass(): void - { - $penMapEnvioParcialFixture = new \PenMapEnvioParcialFixture(); - - putenv("DATABASE_HOST=org1-database"); - foreach(self::$arrIdMapEnvioParcialOrgaoA as $idMapEnvioParcial) { - $penMapEnvioParcialFixture->remover([ - 'Id' => $idMapEnvioParcial - ]); - } - - putenv("DATABASE_HOST=org2-database"); - foreach(self::$arrIdMapEnvioParcialOrgaoB as $idMapEnvioParcial) { - $penMapEnvioParcialFixture->remover([ - 'Id' => $idMapEnvioParcial - ]); - } - - parent::tearDownAfterClass(); + /** + * Excluir mapeamentos de Envio Parcial no Remetente e Destinatário + * @group mapeamento + */ + public static function tearDownAfterClass(): void + { + $penMapEnvioParcialFixture = new \PenMapEnvioParcialFixture(); + + putenv("DATABASE_HOST=org1-database"); + foreach (self::$arrIdMapEnvioParcialOrgaoA as $idMapEnvioParcial) { + $penMapEnvioParcialFixture->remover([ + 'Id' => $idMapEnvioParcial + ]); } - /* + putenv("DATABASE_HOST=org2-database"); + foreach (self::$arrIdMapEnvioParcialOrgaoB as $idMapEnvioParcial) { + $penMapEnvioParcialFixture->remover([ + 'Id' => $idMapEnvioParcial + ]); + } + putenv("DATABASE_HOST=org1-database"); + parent::tearDownAfterClass(); + } + + /* * Criar processo e mapear Envio Parcial no Remetente e Destinatário * @group mapeamento * * @return void */ - private function criarCenarioTramiteEnvioParcialTest() - { - $parametros = [ - 'Descricao' => 'teste' - ]; - $this->objProtocoloFixture = new ProtocoloFixture(); - $this->objProtocoloFixture->carregar($parametros, function($objProtocoloDTO) { - - $objProcedimentoFixture = new ProcedimentoFixture(); - $objProcedimentoDTO = $objProcedimentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtividadeFixture = new AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - ]); - - $objContatoFixture = new ContatoFixture(); - $objContatoDTO = $objContatoFixture->carregar(); - - $objParticipanteFixture = new ParticipanteFixture(); - $objParticipanteFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdContato' => $objContatoDTO->getNumIdContato() - ]); - - $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); - $objProtocoloAssuntoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); - $objAtributoAndamentoFixture->carregar([ - 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() - ]); - - $objDocumentoFixture = new DocumentoFixture(); - $objDocumentoDTO = $objDocumentoFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), - ]); - - $objAssinaturaFixture = new AssinaturaFixture(); - $objAssinaturaFixture->carregar([ - 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), - 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), - 'IdAtividade' => $objProtocoloDTO->getDblIdProtocolo() - ]); - - }); - - // Mapear Envio Parcial no Remetente - self::$arrIdMapEnvioParcialOrgaoA = array(); - putenv("DATABASE_HOST=org1-database"); - $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); - $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ - 'IdEstrutura' => self::$destinatario['ID_REP_ESTRUTURAS'], - 'StrEstrutura' => self::$destinatario['REP_ESTRUTURAS'], - 'IdUnidadePen' => self::$destinatario['ID_ESTRUTURA'], - 'StrUnidadePen' => self::$destinatario['NOME_UNIDADE'] - ]); - self::$arrIdMapEnvioParcialOrgaoA[]= $objMapEnvioParcial->getDblId(); - - // Mapear Envio Parcial no Destinatário - self::$arrIdMapEnvioParcialOrgaoB = array(); - putenv("DATABASE_HOST=org2-database"); - $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); - $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ - 'IdEstrutura' => self::$remetente['ID_REP_ESTRUTURAS'], - 'StrEstrutura' => self::$remetente['REP_ESTRUTURAS'], - 'IdUnidadePen' => self::$remetente['ID_ESTRUTURA'], - 'StrUnidadePen' => self::$remetente['NOME_UNIDADE'] - ]); - self::$arrIdMapEnvioParcialOrgaoB[]= $objMapEnvioParcial->getDblId(); - } -} \ No newline at end of file + private function criarCenarioTramiteEnvioParcialTest() + { + self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + self::$protocoloTestePrincipal = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, self::$protocoloTestePrincipal->getDblIdProtocolo()); + + // Mapear Envio Parcial no Remetente + self::$arrIdMapEnvioParcialOrgaoA = array(); + putenv("DATABASE_HOST=org1-database"); + $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); + $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ + 'IdEstrutura' => self::$destinatario['ID_REP_ESTRUTURAS'], + 'StrEstrutura' => self::$destinatario['REP_ESTRUTURAS'], + 'IdUnidadePen' => self::$destinatario['ID_ESTRUTURA'], + 'StrUnidadePen' => self::$destinatario['NOME_UNIDADE'] + ]); + self::$arrIdMapEnvioParcialOrgaoA[] = $objMapEnvioParcial->getDblId(); + + // Mapear Envio Parcial no Destinatário + self::$arrIdMapEnvioParcialOrgaoB = array(); + putenv("DATABASE_HOST=org2-database"); + $objPenMapEnvioParcialFixture = new PenMapEnvioParcialFixture(); + $objMapEnvioParcial = $objPenMapEnvioParcialFixture->carregar([ + 'IdEstrutura' => self::$remetente['ID_REP_ESTRUTURAS'], + 'StrEstrutura' => self::$remetente['REP_ESTRUTURAS'], + 'IdUnidadePen' => self::$remetente['ID_ESTRUTURA'], + 'StrUnidadePen' => self::$remetente['NOME_UNIDADE'] + ]); + self::$arrIdMapEnvioParcialOrgaoB[] = $objMapEnvioParcial->getDblId(); + + putenv("DATABASE_HOST=org1-database"); + } +} diff --git a/tests_super/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php b/tests_super/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php index e9604e732..1223a42fe 100755 --- a/tests_super/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteProcessoAnexadoComDevolucaoTest extends CenarioBaseTestCase +class TramiteProcessoAnexadoComDevolucaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -37,31 +37,37 @@ public function test_tramitar_processo_anexado_da_origem() // Definição de dados de teste do processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Definição de dados de teste do processo a ser anexado self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento1DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + $objDocumento2DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento3DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $objDocumento4DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + + // Preencher variaveis que serão usadas posteriormente nos testes + self::$documentoTeste1['ARQUIVO'] = str_pad($objDocumento1DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste2['ARQUIVO'] = str_pad($objDocumento2DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste3['ARQUIVO'] = str_pad($objDocumento3DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste4['ARQUIVO'] = str_pad($objDocumento4DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + // Realizar a anexação de processos + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste anexado e incluir documentos relacionados - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); - - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -71,9 +77,9 @@ public function test_tramitar_processo_anexado_da_origem() self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false ); + } - /** * Teste de verificação do correto envio do processo anexado no sistema remetente * @@ -94,10 +100,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -127,8 +132,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -144,7 +148,7 @@ public function test_verificar_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(3, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->paginaProcesso->selecionarDocumento(self::$protocoloTesteAnexado); $this->assertTrue($this->paginaDocumento->ehProcessoAnexado()); @@ -157,7 +161,6 @@ public function test_verificar_destino_processo_anexado() $this->validarDadosDocumento($listaDocumentosProcessoAnexado[1], self::$documentoTeste4, self::$destinatario); } - /** * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem * @@ -172,18 +175,29 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - + // Definição de dados de teste do processo principal self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente,'arquivo_pequeno_A.pdf'); + + // Selecionar banco do org2 para fazer inserção dos documentos + putenv("DATABASE_HOST=org2-database"); + + // Busca ID que Protocolo principal recebeu no org2 + $objProtocoloPrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + + //Incluir novos documentos relacionados + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloPrincipalOrg2DTO->getDblIdProtocolo()); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste6, $objProtocoloPrincipalOrg2DTO->getDblIdProtocolo()); + + + //Fim das operações no BD do org2 + putenv("DATABASE_HOST=org1-database"); // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Incluir novos documentos relacionados $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); - $this->cadastrarDocumentoExterno(self::$documentoTeste6); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -209,15 +223,15 @@ public function test_devolucao_processo_para_origem() public function test_verificar_devolucao_origem_processo_anexado() { $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -243,10 +257,8 @@ public function test_verificar_devolucao_origem_processo_anexado() public function test_verificar_devolucao_destino_processo_anexado() { $strProtocoloTeste = self::$protocoloTestePrincipal; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); + $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); $this->validarDadosProcesso( @@ -262,7 +274,7 @@ public function test_verificar_devolucao_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(5, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[3], self::$documentoTeste5, self::$destinatario); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[4], self::$documentoTeste6, self::$destinatario); diff --git a/tests_super/funcional/tests/TramiteProcessoAnexadoTest.php b/tests_super/funcional/tests/TramiteProcessoAnexadoTest.php index 5ebaa1cfc..2f79fb1a3 100755 --- a/tests_super/funcional/tests/TramiteProcessoAnexadoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoAnexadoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group2 */ -class TramiteProcessoAnexadoTest extends CenarioBaseTestCase +class TramiteProcessoAnexadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,32 +36,37 @@ public function test_tramitar_processo_anexado_da_origem() // Definição de dados de teste do processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Definição de dados de teste do processo a ser anexado self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento1DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + $objDocumento2DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + $objDocumento3DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $objDocumento4DTO = $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + + // Preencher variaveis que serão usadas posteriormente nos testes + self::$documentoTeste1['ARQUIVO'] = str_pad($objDocumento1DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste2['ARQUIVO'] = str_pad($objDocumento2DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste3['ARQUIVO'] = str_pad($objDocumento3DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + self::$documentoTeste4['ARQUIVO'] = str_pad($objDocumento4DTO->getDblIdDocumento(), 6, 0, STR_PAD_LEFT).'.html'; + // Realizar a anexação de processos + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste anexado e incluir documentos relacionados - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); - - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); - - // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); - + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -71,9 +76,9 @@ public function test_tramitar_processo_anexado_da_origem() self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false ); + } - - + /** * Teste de verificação do correto envio do processo anexado no sistema remetente * @@ -94,10 +99,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -109,7 +113,7 @@ public function test_verificar_origem_processo_anexado() $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); $this->validarProcessosTramitados(self::$protocoloTestePrincipal, $orgaosDiferentes); } - + /** * Teste de verificação do correto recebimento do processo anexado no destinatário * @@ -127,7 +131,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -143,7 +147,7 @@ public function test_verificar_destino_processo_anexado() $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); $this->assertEquals(3, count($listaDocumentosProcessoPrincipal)); $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[0], self::$documentoTeste1, self::$destinatario); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[2], self::$documentoTeste2, self::$destinatario); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); $this->paginaProcesso->selecionarDocumento(self::$protocoloTesteAnexado); $this->assertTrue($this->paginaDocumento->ehProcessoAnexado()); diff --git a/tests_super/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php b/tests_super/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php new file mode 100755 index 000000000..aebc5bbaf --- /dev/null +++ b/tests_super/funcional/tests/TramiteProcessoBlocoDeTramitePermissoesTest.php @@ -0,0 +1,294 @@ +execute("update infra_parametro set valor = ? where nome = ?", array(2, 'SEI_TAM_MB_DOC_EXTERNO')); + + } + + /** + * Volta tamanho de doc externo no ORG2 para default + */ + public static function tearDownAfterClass() : void { + + $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); + $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); + + } + + function setUp(): void + { + parent::setUp(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + /** + * Tramite para obter posteriormente processo com status cancelado + */ + public function test_tramite_contendo_documento_interno() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste1, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; + } + + + /** + * Troca ordenação de documento para ao tramitar obter status cancelado + * @depends test_tramite_contendo_documento_interno + */ + public function test_trocar_ordenacao_documento() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); + + // Definição de dados de teste + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objProtocoloDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloDTO->getDblIdProtocolo()); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); + + // Validação dos dados do processo principal + try { + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcesso)); + $this->validarDadosDocumento($listaDocumentosProcesso[0], self::$documentoTeste1, self::$remetente); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$remetente); + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada] + print_r($listaDocumentosProcesso); + } + + + $this->paginaProcesso->selecionarProcesso(); + $this->paginaProcesso->navegarParaOrdenarDocumentos(); + sleep(1); + $this->paginaProcesso->trocarOrdenacaoDocumentos(); + + // Validação dos dados do processo principal + try { + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcesso)); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste1, self::$remetente); + $this->validarDadosDocumento($listaDocumentosProcesso[0], self::$documentoTeste2, self::$remetente); + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada] + print_r($listaDocumentosProcesso); + } + sleep(1); + $this->sairSistema(); + + } + + /** + * Inclui processos ao bloco de tramite, excluir e adiciona novamente + * @depends test_trocar_ordenacao_documento + */ + public function test_criar_excluir_processos_em_bloco_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); + + // Definição de dados de teste + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $arrProtocolos = array(); + // cancelado + $objProtocoloDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + $arrProtocolos[] = $objProtocoloDTO; + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + // sucesso + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + $arrProtocolos[] = $objProtocoloDTO; + + } + + // recusado + $documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_003.pdf'); + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + $this->cadastrarDocumentoExternoFixture($documentoTeste3, $objProtocoloDTO->getDblIdProtocolo()); + $arrProtocolos[] = $objProtocoloDTO; + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + + foreach ($arrProtocolos as $objProtocoloDTO) { + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + } + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + sleep(1); + + // Executa remoção de protocolos do bloco e verifica status + $this->paginaCadastrarProcessoEmBloco->btnSelecionarTodosProcessos(); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorExcluir(); + $qtdProcessoBloco = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + $this->assertEquals($qtdProcessoBloco, 0); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorFechar(); + sleep(1); + + $linhasDaTabela = $this->elements($this->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + foreach ($linhasDaTabela as $linha) { + $numOrdem = $linha->byXPath('./td[2]')->text(); + if ($numOrdem == $objBlocoDeTramiteDTO->getNumOrdem()) { + $status = $linha->byXPath('./td[3]')->text(); + $this->assertEquals($status, 'Aberto'); + $this->assertEquals($objBlocoDeTramiteDTO->getStrStaEstado(), 'A'); + break; + } + } + + // Adiciona novamente protocolos ao bloco + foreach ($arrProtocolos as $objProtocoloDTO) { + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + } + + $this->sairSistema(); + } + + /** + * Tramitar bloco externamente + * @depends test_criar_excluir_processos_em_bloco_externo + */ + public function test_tramite_bloco_externo() + { + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + // Tramitar Bloco + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, + function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = mb_convert_encoding('Processo(s) aguardando envio. Favor acompanhar a tramitação por meio do bloco, na funcionalidade \'Blocos de Trâmite Externo\'', 'UTF-8', 'ISO-8859-1'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $testCase->frame(null); + $testCase->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + } + ); + + } + + + /** + * Verificar se o bloco foi enviado + * @depends test_tramite_bloco_externo + * @return void + */ + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $linhasDaTabela = $testCase->elements($testCase->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + $totalConcluidos = 0; + foreach ($linhasDaTabela as $linha) { + $statusTd = $linha->byXPath('./td[7]'); + try { + $statusImg = $statusTd->byXPath(mb_convert_encoding(".//img[@title='Concluído']", 'UTF-8', 'ISO-8859-1')); + if ($statusImg){ + $totalConcluidos++; + } + } catch (Exception $e) { + // Ignora a exceção se a imagem não for encontrada + } + } + $this->assertEquals($totalConcluidos,self::$numQtyProcessos); + return true; + }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); + } + /** + * Verificar se é possivel excluir processos do bloco após tramite + * @depends test_verificar_envio_processo + * @return void + */ + public function test_verificar_possivel_exclusao_processo_bloco() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtdProcessoBloco = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->paginaCadastrarProcessoEmBloco->btnSelecionarTodosProcessos(); + $this->paginaCadastrarProcessoEmBloco->btnComandoSuperiorExcluir(); + $qtdProcessoBlocoPos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtdProcessoBloco,$qtdProcessoBlocoPos); + + sleep(2); + + $this->sairSistema(); + } + +} diff --git a/tests_super/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php b/tests_super/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php new file mode 100755 index 000000000..3e1e44bf1 --- /dev/null +++ b/tests_super/funcional/tests/TramiteProcessoBlocoDeTramiteRegrasTest.php @@ -0,0 +1,172 @@ +carregar(); + } + + /** + * Teste pra validar mensagem de documento não assinado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_documento_nao_assinado() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo(), false); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processos com documentos gerados e não assinados', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar mensagem de processo bloqueado ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_bloqueado() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("update protocolo set sta_estado=? where id_protocolo=?", array(4, $objProtocoloDTO->getDblIdProtocolo())); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Prezado(a) usuário(a), o processo ' . $objProtocoloDTO->getStrProtocoloFormatado() . ' encontra-se bloqueado. Dessa forma, não foi possível realizar a sua inserção no bloco selecionado.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar a mensagem de processo aberto em mais de uma unidade ao ser inserido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_aberto_em_mais_de_uma_unidade() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture($documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso($objProtocoloDTO->getStrProtocoloFormatado()); + + $this->tramitarProcessoInternamente(self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], true); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processo aberto em mais de uma unidade.', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + $this->assertStringContainsString( + mb_convert_encoding('Processo ' . $objProtocoloDTO->getStrProtocoloFormatado() . ' está aberto na(s) unidade(s): ' . self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } + + /** + * Teste pra validar a mensagem de processo sem documentos nao pode ser incluido em bloco + * + * @group envio + * @large + * + * @return void + */ + public function test_validar_mensagem_de_processo_sem_documento() + { + // Configuração do dados para teste do cenário + $processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + + $objProtocoloDTO = $this->cadastrarProcessoFixture($processoTeste); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco(self::$objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + mb_convert_encoding('Não é possível tramitar um processo sem documentos', 'UTF-8', 'ISO-8859-1'), + $mensagem + ); + } +} diff --git a/tests_super/funcional/tests/TramiteProcessoComCancelamentoTest.php b/tests_super/funcional/tests/TramiteProcessoComCancelamentoTest.php index aa8c96d79..f32641701 100755 --- a/tests_super/funcional/tests/TramiteProcessoComCancelamentoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComCancelamentoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_without_receiving */ -class TramiteProcessoComCancelamentoTest extends CenarioBaseTestCase +class TramiteProcessoComCancelamentoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -32,19 +32,12 @@ public function test_cancelamento_tramite_contendo_documento_interno() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false - ); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $this->paginaProcesso->cancelarTramitacaoExterna(); $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); + $mensagemEsperada = mb_convert_encoding("O trâmite externo do processo foi cancelado com sucesso!", 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); $this->assertFalse($this->paginaProcesso->processoBloqueado()); $this->assertTrue($this->paginaProcesso->processoAberto()); @@ -95,18 +88,12 @@ public function test_cancelamento_tramite_contendo_documento_externo() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_001.pdf'); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); - - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false - ); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $this->paginaProcesso->cancelarTramitacaoExterna(); $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); + $mensagemEsperada = mb_convert_encoding("O trâmite externo do processo foi cancelado com sucesso!", 'UTF-8', 'ISO-8859-1'); $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); $this->assertFalse($this->paginaProcesso->processoBloqueado()); $this->assertTrue($this->paginaProcesso->processoAberto()); diff --git a/tests_super/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php b/tests_super/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php index 097b5295d..9b0848036 100755 --- a/tests_super/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComDevolucaoAlteracaoURLTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoComDevolucaoAlteracaoURLTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoAlteracaoURLTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -58,7 +58,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -98,7 +98,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } @@ -136,6 +137,7 @@ public function test_tramitar_processo_da_origem_novo_url() self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$documentoTeste5 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + putenv("DATABASE_HOST=org1-database"); $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); $result=$bancoOrgaoA->query("SELECT texto FROM tarja_assinatura where sta_tarja_assinatura=? and sin_ativo=?", array("V","S")); @@ -154,7 +156,7 @@ public function test_tramitar_processo_da_origem_novo_url() $bancoOrgaoA->execute("update tarja_assinatura set texto=? where sta_tarja_assinatura=? and sin_ativo=?", array($strTarja,"V","S")); $documentos = array(self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } diff --git a/tests_super/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php b/tests_super/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php index 4774100f4..d0335677a 100755 --- a/tests_super/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComDevolucaoAnexadoOutroTest.php @@ -10,7 +10,7 @@ * Execution Groups * @group execute_alone_group5 */ -class TramiteProcessoComDevolucaoAnexadoOutroTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoAnexadoOutroTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -48,7 +48,8 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -84,15 +85,14 @@ public function test_devolucao_processo_anexado_em_outro_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + // Selecionar banco do org2 para fazer inserção dos documentos + putenv("DATABASE_HOST=org2-database"); self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + // Busca ID que Protocolo principal recebeu no org2 + $objProtocoloAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloAnexadoDTO->getDblIdProtocolo()); // Gerar dados de testes para representar o processo principal self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); @@ -100,14 +100,23 @@ public function test_devolucao_processo_anexado_em_outro_para_origem() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); // Cadastra processo principal, seus documentos e anexa processo recebido anteriormente - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + + // Cadastra e assina + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4,$objProtocoloPrincipalDTO->getDblIdProtocolo()); - $this->anexarProcesso(self::$protocoloTesteAnexado); + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abre processo principal para tramitar + $this->abrirProcesso(self::$protocoloTestePrincipal); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -138,10 +147,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php b/tests_super/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php index bcdf62d9c..7dd5d7fd4 100755 --- a/tests_super/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComDevolucaoContendoOutroAnexadoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_alone_group5 */ -class TramiteProcessoComDevolucaoContendoOutroAnexadoTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoContendoOutroAnexadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -45,7 +45,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComvalidacaoNoRemetenteFixture(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); self::$protocoloTestePrincipal = self::$processoTestePrincipal["PROTOCOLO"]; } @@ -81,9 +81,7 @@ public function test_devolucao_processo_contendo_outro_anexado_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + putenv("DATABASE_HOST=org2-database"); // Gerar dados de testes para representar o processo principal self::$processoTesteAnexado = $this->gerarDadosProcessoTeste(self::$remetente); @@ -91,18 +89,23 @@ public function test_devolucao_processo_contendo_outro_anexado_para_origem() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); // Cadastra processo anexado, seus documentos e anexar ao processo principal recebido anteriormente - self::$protocoloTesteAnexado = $this->cadastrarProcesso(self::$processoTesteAnexado); - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $objProtocoloAnexadoDTO = $this->cadastrarProcessoFixture(self::$processoTesteAnexado); + self::$protocoloTesteAnexado = $objProtocoloAnexadoDTO->getStrProtocoloFormatado(); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloAnexadoDTO->getDblIdProtocolo()); // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->anexarProcesso(self::$protocoloTesteAnexado); + $objProtocoloPrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTestePrincipal); - // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], @@ -133,10 +136,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoComDevolucaoTest.php b/tests_super/funcional/tests/TramiteProcessoComDevolucaoTest.php index db71d4b6c..a1c428bc6 100755 --- a/tests_super/funcional/tests/TramiteProcessoComDevolucaoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComDevolucaoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessoComDevolucaoTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,7 +36,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -77,7 +77,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } diff --git a/tests_super/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php b/tests_super/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php index ff2591961..cd147622c 100755 --- a/tests_super/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComDevolucaoUnidadeDiferenteTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoComDevolucaoUnidadeDiferenteTest extends CenarioBaseTestCase +class TramiteProcessoComDevolucaoUnidadeDiferenteTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -36,7 +36,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -82,7 +82,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org2-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } diff --git a/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php b/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php index a3266fab3..5690f39bd 100755 --- a/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessoComDocumentoRestritoHipotesePadraoTest extends CenarioBaseTestCase +class TramiteProcessoComDocumentoRestritoHipotesePadraoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -30,26 +30,12 @@ public function test_tramitar_processo_com_documento_restrito_hipotese_nao_mapea self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Configuração de documento restrito - self::$documentoTeste["RESTRICAO"] = PaginaIncluirDocumento::STA_NIVEL_ACESSO_RESTRITO; + self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO_NAO_MAPEADO"]; - - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -74,10 +60,9 @@ public function test_verificar_origem_processo_com_documento_restrito_hipotese_n // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -118,7 +103,7 @@ public function test_verificar_destino_processo_com_documento_restrito_hipotese_ $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( diff --git a/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php b/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php index acf44053d..02e72901f 100755 --- a/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php @@ -4,130 +4,158 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessoComDocumentoRestritoTest extends CenarioBaseTestCase +class TramiteProcessoComDocumentoRestritoTest extends FixtureCenarioBaseTestCase { - public static $remetente; - public static $destinatario; - public static $processoTeste; - public static $documentoTeste; - public static $protocoloTeste; - - /** - * Teste de trâmite externo de processo com documentos restritos - * - * @group envio - * @large - * - * @Depends CenarioBaseTestCase::setUpBeforeClass - * - * @return void - */ - public function test_tramitar_processo_com_documento_restrito() - { - // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // Configuração de documento restrito - self::$documentoTeste["RESTRICAO"] = PaginaIncluirDocumento::STA_NIVEL_ACESSO_RESTRITO; - self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO"]; - - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_com_documento_restrito - * - * @return void - */ - public function test_verificar_origem_processo_com_documento_restrito() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { - sleep(5); - $this->atualizarTramitesPEN(); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - - /** - * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo_com_documento_restrito - * - * @return void - */ - public function test_verificar_destino_processo_com_documento_restrito() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - - // 11 - Abrir protocolo na tela de controle de processos - $this->abrirProcesso(self::$protocoloTeste); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - - // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); - - // 13 - Verificar recibos de trâmite - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // 14 - Validar dados do documento - $this->assertTrue(count($listaDocumentos) == 1); - $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); - } + public static $remetente; + public static $destinatario; + public static $processoTeste; + public static $documentoTeste; + public static $protocoloTeste; + + function setUp(): void + { + parent::setUp(); + + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + /** + * Teste de trâmite externo de processo com documentos restritos + * + * @group envio + * @large + * + * @Depends CenarioBaseTestCase::setUpBeforeClass + * + * @return void + */ + public function test_tramitar_processo_com_documento_restrito() + { + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); // Cadastrar novo processo de teste + self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; // Configuração de documento restrito + self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO"]; // Configurar Hipotese legal + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); // Incluir Documentos no Processo + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * @large + * + * @depends test_tramitar_processo_com_documento_restrito + * + * @return void + */ + public function test_verificar_origem_processo_com_documento_restrito() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + // 6 - Verificar se situação atual do processo está como bloqueado + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + + // 8 - Validar histórico de trâmite do processo + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + + // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) + * + * @group verificacao_recebimento + * @large + * + * @depends test_verificar_origem_processo_com_documento_restrito + * + * @return void + */ + public function test_verificar_destino_processo_com_documento_restrito() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // 11 - Abrir protocolo na tela de controle de processos + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + + // 12 - Validar dados do processo + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + self::$processoTeste['OBSERVACOES'], + array(self::$processoTeste['INTERESSADOS']) + ); + + // 13 - Verificar recibos de trâmite + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // 14 - Validar dados do documento + $this->assertTrue(count($listaDocumentos) == 1); + $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } } diff --git a/tests_super/funcional/tests/TramiteProcessoComHistoricoTest.php b/tests_super/funcional/tests/TramiteProcessoComHistoricoTest.php index 1a2f355b5..b5d8929d3 100755 --- a/tests_super/funcional/tests/TramiteProcessoComHistoricoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoComHistoricoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteProcessoComHistoricoTest extends CenarioBaseTestCase +class TramiteProcessoComHistoricoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -23,7 +23,6 @@ class TramiteProcessoComHistoricoTest extends CenarioBaseTestCase public function test_tramitar_processo_da_origem() { - // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); @@ -32,7 +31,7 @@ public function test_tramitar_processo_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -50,21 +49,20 @@ public function test_tramitar_processo_da_origem() public function test_verificar_destino_processo_para_devolucao() { - $localCertificado = self::$destinatario['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = self::$destinatario['SENHA_CERTIFICADO_DIGITAL']; $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); // Captura o IDT do processo - $idtEnviado=$bancoOrgaoA->query("SELECT tra.id_tramite FROM protocolo p + $idtEnviado = $bancoOrgaoA->query("SELECT tra.id_tramite FROM protocolo p inner join md_pen_processo_eletronico pen on p.id_protocolo=pen.id_procedimento inner join md_pen_tramite tra on pen.numero_registro=tra.numero_registro where protocolo_formatado=?",array(self::$protocoloTeste)); if (array_key_exists("id_tramite", $idtEnviado[0])) { $idtEnviado=$idtEnviado[0]["id_tramite"]; - }else{ + } else { $idtEnviado=$idtEnviado[0]["ID_TRAMITE"]; } @@ -75,11 +73,9 @@ public function test_verificar_destino_processo_para_devolucao() curl_setopt($curl_handler, CURLOPT_SSLCERT, $localCertificado); curl_setopt($curl_handler, CURLOPT_SSLCERTPASSWD, $senhaCertificado); - $saida= json_decode(curl_exec($curl_handler)); + $saida = json_decode(curl_exec($curl_handler)); curl_close($curl_handler); - - foreach($saida->propriedadesAdicionais as $propriedades){ switch($propriedades->chave){ @@ -110,25 +106,13 @@ public function test_verificar_destino_processo_para_devolucao() case "CLASSIFICACAO_Descricao_1": $this->assertEquals('RECEITA CORRENTE', substr($propriedades->valor,0,16)); - break; - + break; } } - - // usort($saida->processo->itensHistorico,function($a,$b){ - // return ($a->dataHoraOperacao < $b->dataHoraOperacao? -1: 1); - // }); $this->assertEquals(9, sizeof($saida->processo->itensHistorico) ); - - - - - } - - } diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php index a5031b01b..214e32b16 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -35,16 +35,18 @@ public function test_tramitar_processo_contendo_documento_besimple() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_corrompimento_besimplesoap.pdf'); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, null, PEN_WAIT_TIMEOUT_ARQUIVOS_GRANDES); @@ -72,10 +74,9 @@ public function test_verificar_origem_processo_contendo_documento_besimple() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -116,7 +117,7 @@ public function test_verificar_destino_processo_contendo_documento_besimple() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php index 68fd400ab..4954a0c39 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -33,28 +33,29 @@ public function test_tramitar_processo_contendo_documento_cancelado() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); // Definição de dados de teste do processo principal - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + self::$protocoloTeste = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + $this->abrirProcesso(self::$protocoloTeste); //Tramitar internamento para liberação da funcionalidade de cancelar - $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], self::$processoTeste); + $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], [ 'PROTOCOLO' => self::$protocoloTeste ]); $this->navegarParaCancelarDocumento(0); $this->paginaCancelarDocumento->cancelar("Motivo de teste"); $processo=self::$processoTeste; - + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); - + $idAnexo = $bancoOrgaoA->query("SELECT an.id_anexo FROM rel_protocolo_protocolo pp inner join protocolo p on pp.id_protocolo_1=p.id_protocolo inner join anexo an on an.id_protocolo=pp.id_protocolo_2 @@ -97,10 +98,9 @@ public function test_verificar_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -131,7 +131,7 @@ public function test_verificar_destino_processo() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php index 69cbcb045..7e9434aad 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoCanceladoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoContendoDocumentoCanceladoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoCanceladoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,19 +40,17 @@ public function test_tramitar_processo_contendo_documento_cancelado() self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $objProtocoloTesteDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloTesteDTO->getStrProtocoloFormatado(); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, $objProtocoloTesteDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, $objProtocoloTesteDTO->getDblIdProtocolo()); - // Cadastrar novo processo de teste e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Realiza o cancelamento de um documento interno do processo - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); //Tramitar internamento para liberação da funcionalidade de cancelar - $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], self::$processoTeste); + $this->tramitarProcessoInternamenteParaCancelamento(self::$remetente['SIGLA_UNIDADE'], self::$remetente['SIGLA_UNIDADE_SECUNDARIA'], [ 'PROTOCOLO' => self::$protocoloTeste ]); $this->navegarParaCancelarDocumento(1); $this->paginaCancelarDocumento->cancelar("Motivo de teste"); @@ -86,10 +84,9 @@ public function test_verificar_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -120,7 +117,7 @@ public function test_verificar_destino_processo() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -154,17 +151,19 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - + // Busca dados do protocolo no org2 + $objProtocoloTesteDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + // Incluir novos documentos relacionados - $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloTesteDTO->getDblIdProtocolo()); + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, @@ -195,10 +194,9 @@ public function test_verificar_devolucao_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php index de73ca25c..a307d83c1 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -34,7 +34,7 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$destinatario['NOME_UNIDADE'] = self::$remetente['NOME_UNIDADE_SECUNDARIA']; self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -52,10 +52,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php index 31bdf5678..81869cd3b 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoParticionadoTest.php @@ -5,7 +5,7 @@ * @group rodarseparado2 * @group execute_alone_group1 */ -class TramiteProcessoContendoDocumentoExternoParticionadoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoParticionadoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -14,7 +14,8 @@ class TramiteProcessoContendoDocumentoExternoParticionadoTest extends CenarioBas public static $protocoloTeste; public static function setUpBeforeClass() :void { - + + parent::setUpBeforeClass(); $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); $bancoOrgaoA->execute("update infra_parametro set valor = ? where nome = ?", array(70, 'SEI_TAM_MB_DOC_EXTERNO')); @@ -46,20 +47,27 @@ public function test_tramitar_processo_contendo_documento_externo_60mb() // Configuração do dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_060.pdf'); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); // Altera tamanho máximo permitido para permitir o envio de arquivo superior à 50MBs $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); try { $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(70, 'SEI_TAM_MB_DOC_EXTERNO')); - $this->cadastrarDocumentoExterno(self::$documentoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); } finally { $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); } + putenv("DATABASE_HOST=org1-database"); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTeste); $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], @@ -90,10 +98,9 @@ public function test_verificar_origem_processo_contendo_documento_externo_60mb() $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php index aa9e8a006..dd2bc2fbb 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoExternoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoExternoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -26,24 +26,13 @@ class TramiteProcessoContendoDocumentoExternoTest extends CenarioBaseTestCase public function test_tramitar_processo_contendo_documento_externo() { // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -68,10 +57,9 @@ public function test_verificar_origem_processo_contendo_documento_externo() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -112,7 +100,7 @@ public function test_verificar_destino_processo_contendo_documento_externo() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php index 207f9c74d..5db274cb4 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoGeradoMesmoOrgaoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -33,7 +33,7 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$destinatario['NOME_UNIDADE'] = self::$remetente['NOME_UNIDADE_SECUNDARIA']; self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -52,10 +52,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php index a6a71c581..fa510bf50 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoGeradoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteProcessoContendoDocumentoGeradoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoGeradoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -30,17 +30,19 @@ public function test_tramitar_processo_contendo_documento_gerado() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + // 1 - Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // 2 - Incluir Documentos no Processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // 3 - Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 4 - Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // 4 - Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // 5 - Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -70,10 +72,9 @@ public function test_verificar_origem_processo_contendo_documento_gerado() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -114,7 +115,7 @@ public function test_verificar_destino_processo_contendo_documento_gerado() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php index f9d8e5b1f..f89930efc 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoInternoExternoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoInternoExternoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoInternoExternoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -32,20 +32,23 @@ public function test_tramitar_processo_contendo_documento_interno_externo() self::$documentoInternoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoExternoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // 1 - Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // 2 - Incluir e assinar documentos no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoInternoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + // 3 - Incluir documento externo ao processo + $this->cadastrarDocumentoExternoFixture(self::$documentoExternoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // 3 - Incluir e assinar documentos no processo - $this->cadastrarDocumentoInterno(self::$documentoInternoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // 4 - Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // 4 - Incluir documento externo ao processo - $this->cadastrarDocumentoExterno(self::$documentoExternoTeste); + // 5 - Abrir processo + $this->abrirProcesso(self::$protocoloTeste); - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária + // 6 - Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -70,27 +73,26 @@ public function test_verificar_origem_processo_contendo_documento_interno_extern $this->abrirProcesso(self::$protocoloTeste); - // 6 - Verificar se situação atual do processo está como bloqueado + // 7 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; }, PEN_WAIT_TIMEOUT); - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) + // 8 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); $this->validarRecibosTramite($mensagemRecibo, true, true); - // 8 - Validar histórico de trâmite do processo + // 9 - Validar histórico de trâmite do processo $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente + // 10 - Verificar se processo está na lista de Processos Tramitados Externamente $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); } @@ -117,7 +119,7 @@ public function test_verificar_destino_processo_contendo_documento_interno_exter $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php index 89519c65f..eabd162b2 100644 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoDestinoTest.php @@ -32,7 +32,7 @@ * Execution Groups * @group exxecute_parallel */ -class TramiteProcessoContendoDocumentoMovidoDestino extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -47,6 +47,10 @@ class TramiteProcessoContendoDocumentoMovidoDestino extends CenarioBaseTestCase public static $documentoTeste5; public static $documentoTeste6; public static $documentoTeste7; + public static $objProtocoloTestePrincipalDTO; + public static $objProtocoloTestePrincipalOrg2DTO; + + /* Escopo da função: @@ -68,27 +72,30 @@ public function test_criar_processo_contendo_documentos_tramitar_remetente() self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - // acessar remetente (Órgão 1) - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); // 1-criar Processo Principal ($processoTestePrincipal) (Órgão 1) self::$processoTestePrincipal = $this->gerarDadosProcessoTeste(self::$remetente); - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); + // $this->paginaBase->navegarParaControleProcesso(); + self::$objProtocoloTestePrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = self::$objProtocoloTestePrincipalDTO->getStrProtocoloFormatado(); // 2-criar Documento Externo (documentoTeste1) no Processo Principal self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); // 3-criar Documento Interno (documentoTeste2) no Processo Principal self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); // 4-criar Documento Interno (documentoTeste3) no Processo Principal self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste3); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste3, self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + // acessar remetente (Órgão 1) + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTestePrincipal); // 5-tramitar Processo Principal para o Órgão 2 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -97,10 +104,9 @@ public function test_criar_processo_contendo_documentos_tramitar_remetente() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -146,9 +152,11 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); // 7-criar Processo Secundário ($processoTesteSecundario) (Órgão 2) + putenv("DATABASE_HOST=org2-database"); self::$processoTesteSecundario = $this->gerarDadosProcessoTeste(self::$remetente); - self::$protocoloTesteSecundario = $this->cadastrarProcesso(self::$processoTesteSecundario); - + $objProtocoloSecundarioDTO = $this->cadastrarProcessoFixture(self::$processoTesteSecundario); + self::$protocoloTesteSecundario = $objProtocoloSecundarioDTO->getStrProtocoloFormatado(); + // abrir Processo Principal $this->abrirProcesso(self::$protocoloTestePrincipal); @@ -166,15 +174,17 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( $this->paginaDocumento->navegarParaMoverDocumento(); $this->paginaMoverDocumento->moverDocumentoParaProcesso(self::$protocoloTesteSecundario, "Motivo de teste"); + // Consultar processo org-2 + self::$objProtocoloTestePrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); + // 10-criar documento externo (documentoTeste4) no Processo Principal self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - $this->cadastrarDocumentoExterno(self::$documentoTeste4); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste4, self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); // 11-criar documento interno (documentoTeste5) no Processo Principal self::$documentoTeste5 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste5); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste5,self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); + // 12-tramitar Processo Principal para o Órgão 1 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -182,10 +192,9 @@ public function test_criar_mover_incluir_documentos_devolver_processo_remetente( $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -225,14 +234,16 @@ public function test_incluir_documento_tramitar_destinatario() // definir Órgão 1 como remetente e Órgão 2 como destinatário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + putenv("DATABASE_HOST=org1-database"); - // abrir Processo Principal - $this->abrirProcesso(self::$protocoloTestePrincipal); + self::$objProtocoloTestePrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); // 14-criar documento interno (documentoTeste6) no Processo Principal self::$documentoTeste6 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste6); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste6,self::$objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + // abrir Processo Principal + $this->abrirProcesso(self::$protocoloTestePrincipal); // 15-tramitar Processo Principal para o Órgão 2 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -241,10 +252,9 @@ public function test_incluir_documento_tramitar_destinatario() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -284,11 +294,16 @@ public function test_incluir_documento_tramitar_remetente() // definir Órgão 1 como destinatário e Órgão 2 como remetente self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); + + self::$objProtocoloTestePrincipalOrg2DTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, $staProtocolo = 'P'); // 17-criar documento interno (documentoTeste7) no Processo Principal self::$documentoTeste7 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $this->cadastrarDocumentoInterno(self::$documentoTeste7); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste7, self::$objProtocoloTestePrincipalOrg2DTO->getDblIdProtocolo()); + + // abrir Processo Principal + $this->abrirProcesso(self::$protocoloTestePrincipal); // 18-tramitar Processo Principal para o Órgão 1 com validação no remetente $this->tramitarProcessoExternamente(self::$protocoloTestePrincipal, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -297,10 +312,9 @@ public function test_incluir_documento_tramitar_remetente() $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php index c9550dd81..ca147035c 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoSemAnexoTest.php @@ -9,241 +9,319 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessoContendoDocumentoMovidoSemAnexoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoSemAnexoTest extends FixtureCenarioBaseTestCase { - public static $remetente; - public static $destinatario; - public static $processoTeste; - public static $documentoTeste1; - public static $documentoTeste2; - public static $documentoTeste3; - public static $documentoTeste4; - public static $protocoloTeste; - - /** - * Teste inicial de trâmite de um processo contendo um documento movido - * - * @group envio - * - * @return void - */ - public function test_tramitar_processo_contendo_documento_movido_sem_anexo() - { - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - // Definição de dados de teste do processo principal - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // Criar processo secundário para o qual o documento será movido - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); - - // Cadastrar novo processo de teste e incluir documentos a ser movido - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1, false); - $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_tramitar_processo_contendo_documento_movido_sem_anexo - * - * @return void - */ - public function test_verificar_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação do correto recebimento do processo com documento movido no destinatário - * - * @group verificacao_recebimento - * - * @depends test_verificar_origem_processo - * - * @return void - */ - public function test_verificar_destino_processo_com_documento_movido_sem_anexo() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - $strObservacoes, - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(2, count($listaDocumentosProcessoPrincipal)); - $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); - $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); - } - - - /** - * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem contendo - * mais dois documentos, sendo um deles movido - * - * @group envio - * - * @depends test_verificar_destino_processo_com_documento_movido_sem_anexo - * - * @return void - */ - public function test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo() - { - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - - // Criar processo secundário para o qual o novo documento será movido - $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); - - // Incluir novos documentos ao processo para ser movido - $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3, false); - $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false - ); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo - * - * @return void - */ - public function test_verificar_devolucao_origem_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - /** - * Teste de verificação da correta devolução do processo no destinatário - * - * @group verificacao_recebimento - * - * @depends test_verificar_devolucao_origem_processo - * - * @return void - */ - public function test_verificar_devolucao_destino_processo_com_dois_documentos_movidos_sem_anexo() - { - $strProtocoloTeste = self::$protocoloTeste; - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - $this->abrirProcesso(self::$protocoloTeste); - - $this->validarDadosProcesso( - self::$processoTeste['DESCRICAO'], - self::$processoTeste['RESTRICAO'], - self::$processoTeste['OBSERVACOES'], - array(self::$processoTeste['INTERESSADOS']) - ); - - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // Validação dos dados do processo principal - $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); - $this->assertEquals(4, count($listaDocumentosProcesso)); - $this->validarDocumentoMovido($listaDocumentosProcesso[0]); - $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$destinatario); - $this->validarDocumentoCancelado($listaDocumentosProcesso[2]); - $this->validarDadosDocumento($listaDocumentosProcesso[3], self::$documentoTeste4, self::$destinatario); - } + public static $remetente; + public static $destinatario; + public static $processoTeste; + public static $documentoTeste1; + public static $documentoTeste2; + public static $documentoTeste3; + public static $documentoTeste4; + public static $protocoloTeste; + + /** + * @inheritdoc + * @return void + */ + function setUp(): void + { + parent::setUp(); + } + + /** + * Teste inicial de trâmite de um processo contendo um documento movido + * + * @group envio + * + * @return void + */ + public function test_tramitar_processo_contendo_documento_movido_sem_anexo() + { + + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + // Definição de dados de teste do processo principal + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Criar processo secundário para o qual o documento será movido + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Cadastrar novo processo de teste + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + // Incluir documentos a ser movido + $documentoMover = $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$protocoloTeste->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + // Navegar para mover documento + $nomeDocArvore = self::$documentoTeste1['TIPO_DOCUMENTO'] . ' 1 (' . str_pad($documentoMover->getDblIdDocumento(), 6, "0", STR_PAD_LEFT) . ')'; + $this->paginaProcesso->selecionarDocumento($nomeDocArvore); + $this->paginaDocumento->navegarParaMoverDocumento(); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); + + // Cadastramento de documento adicional + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$protocoloTeste->getDblIdProtocolo()); + $this->paginaBase->refresh(); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * + * @depends test_tramitar_processo_contendo_documento_movido_sem_anexo + * + * @return void + */ + public function test_verificar_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação do correto recebimento do processo com documento movido no destinatário + * + * @group verificacao_recebimento + * + * @depends test_verificar_origem_processo + * + * @return void + */ + public function test_verificar_destino_processo_com_documento_movido_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); + $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; + $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + $strObservacoes, + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcessoPrincipal = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(2, count($listaDocumentosProcessoPrincipal)); + $this->validarDocumentoCancelado($listaDocumentosProcessoPrincipal[0]); + $this->validarDadosDocumento($listaDocumentosProcessoPrincipal[1], self::$documentoTeste2, self::$destinatario); + } + + /** + * Teste de trâmite externo de processo realizando a devolução para a mesma unidade de origem contendo + * mais dois documentos, sendo um deles movido + * + * @group envio + * + * @depends test_verificar_destino_processo_com_documento_movido_sem_anexo + * + * @return void + */ + public function test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + // Mudar banco para cadastrar DTO + putenv("DATABASE_HOST=org2-database"); + + // Definição de dados de teste do processo principal + $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Consultar processo org-2 + $processoOrg2 = $this->consultarProcessoFixture($strProtocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); + + // Criar processo secundário para o qual o documento será movido + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Incluir documentos a ser movido + $documentoMover = $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $processoOrg2->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + + // Navegar para mover documento + $nomeDocArvore = self::$documentoTeste1['TIPO_DOCUMENTO'] . ' 1 (' . str_pad($documentoMover->getDblIdDocumento(), 6, "0", STR_PAD_LEFT) . ')'; + $this->paginaProcesso->selecionarDocumento($nomeDocArvore); + $this->paginaDocumento->navegarParaMoverDocumento(); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); + + // Cadastramento de documento adicional + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $processoOrg2->getDblIdProtocolo()); + $this->paginaBase->refresh(); + + // Trâmitar Externamento processo para órgão/unidade destinatária + $this->tramitarProcessoExternamente( + self::$protocoloTeste, + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], + false + ); + } + + /** + * Teste de verificação do correto envio do processo no sistema remetente + * + * @group verificacao_envio + * + * @depends test_devolucao_processo_para_origem_com_novo_documento_movido_sem_anexo + * + * @return void + */ + public function test_verificar_devolucao_origem_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->pesquisar(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaProcesso = new PaginaProcesso($testCase); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); + $testCase->assertFalse($paginaProcesso->processoAberto()); + $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); + return true; + }, PEN_WAIT_TIMEOUT); + + $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); + $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste->getStrProtocoloFormatado(), $unidade); + $this->validarRecibosTramite($mensagemRecibo, true, true); + $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); + $this->validarProcessosTramitados(self::$protocoloTeste->getStrProtocoloFormatado(), $orgaosDiferentes); + } + + /** + * Teste de verificação da correta devolução do processo no destinatário + * + * @group verificacao_recebimento + * + * @depends test_verificar_devolucao_origem_processo + * + * @return void + */ + public function test_verificar_devolucao_destino_processo_com_dois_documentos_movidos_sem_anexo() + { + $strProtocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + $this->acessarSistema( + self::$destinatario['URL'], + self::$destinatario['SIGLA_UNIDADE'], + self::$destinatario['LOGIN'], + self::$destinatario['SENHA'] + ); + + // Navegar para processo cadastrado + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso(self::$protocoloTeste->getStrProtocoloFormatado()); + + $this->validarDadosProcesso( + self::$processoTeste['DESCRICAO'], + self::$processoTeste['RESTRICAO'], + self::$processoTeste['OBSERVACOES'], + array(self::$processoTeste['INTERESSADOS']) + ); + + $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); + + // Validação dos dados do processo principal + $listaDocumentosProcesso = $this->paginaProcesso->listarDocumentos(); + $this->assertEquals(4, count($listaDocumentosProcesso)); + $this->validarDocumentoMovido($listaDocumentosProcesso[0]); + $this->validarDadosDocumento($listaDocumentosProcesso[1], self::$documentoTeste2, self::$destinatario); + $this->validarDocumentoCancelado($listaDocumentosProcesso[2]); + $this->validarDadosDocumento($listaDocumentosProcesso[3], self::$documentoTeste4, self::$destinatario); + } + + /** + * @inheritDoc + */ + public static function tearDownAfterClass(): void + { + putenv("DATABASE_HOST=org1-database"); + parent::tearDownAfterClass(); + } } diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php index a36397824..3288324f2 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoMovidoTest.php @@ -9,7 +9,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoDocumentoMovidoTest extends CenarioBaseTestCase +class TramiteProcessoContendoDocumentoMovidoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -41,22 +41,25 @@ public function test_tramitar_processo_contendo_documento_movido() self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste2 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + // Criar processo principal e processo secundário + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + + // Cadastrando documentos no processo principal + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste1, self::$protocoloTeste->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste2, self::$protocoloTeste->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Criar processo secundário para o qual o documento será movido - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); + $this->abrirProcesso(self::$protocoloTeste); - // Cadastrar novo processo de teste e incluir documentos a ser movido - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste1); + // Movendo documento do processo principal para o processo secundário + $documentoParaMover = $this->paginaProcesso->listarDocumentos()[0]; + $this->paginaProcesso->selecionarDocumento($documentoParaMover); $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); - - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste2); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -87,10 +90,9 @@ public function test_verificar_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -121,7 +123,7 @@ public function test_verificar_destino_processo_com_documento_movido() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -161,21 +163,30 @@ public function test_devolucao_processo_para_origem_com_novo_documento_movido() $processoSecundarioTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + putenv("DATABASE_HOST=org2-database"); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Criar novo processo secundário na ORG 2 + $protocoloSecundarioTeste = $this->cadastrarProcessoFixture($processoSecundarioTeste); + + // Busca dados do Protocolo principal no ORG 2 + $objProtocoloTesteDTO = $this->consultarProcessoFixture(self::$protocoloTeste, \ProtocoloRN::$TP_PROCEDIMENTO); - $protocoloSecundarioTeste = $this->cadastrarProcesso($processoSecundarioTeste); + // Criar novo documento externo no processo principal recebido na ORG 2" + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste3, $objProtocoloTesteDTO->getDblIdProtocolo()); - // Incluir novos documentos ao processo para ser movido + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); $this->abrirProcesso(self::$protocoloTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste3); + + // Acessando novo documento externo e movendo-o ao novo processo secundario da ORG 2 + $listaDeDocumentos = $this->paginaProcesso->listarDocumentos(); + $documentoParaMover = $listaDeDocumentos[array_key_last($listaDeDocumentos)]; + $this->paginaProcesso->selecionarDocumento($documentoParaMover); $this->paginaDocumento->navegarParaMoverDocumento(); - $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste, "Motivo de teste"); + $this->paginaMoverDocumento->moverDocumentoParaProcesso($protocoloSecundarioTeste->getStrProtocoloFormatado(), "Motivo de teste"); - // Cadastramento de documento adicional - $this->cadastrarDocumentoInterno(self::$documentoTeste4); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Cadastrando novo documento interno no processo principal + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste4, $objProtocoloTesteDTO->getDblIdProtocolo()); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -207,10 +218,9 @@ public function test_verificar_devolucao_origem_processo() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php b/tests_super/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php index d8a30bad4..0df44fcfc 100755 --- a/tests_super/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php +++ b/tests_super/funcional/tests/TramiteProcessoContendoVariosDocumentosTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoContendoVariosDocumentosTest extends CenarioBaseTestCase +class TramiteProcessoContendoVariosDocumentosTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -39,7 +39,7 @@ public function test_tramitar_processo_contendo_varios_documentos() shuffle(self::$documentosTeste); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, self::$documentosTeste, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentosTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -67,10 +67,9 @@ public function test_verificar_origem_processo_contendo_varios_documentos() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php b/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php index 7be02c1ae..0ed2eb27a 100755 --- a/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoDestinoTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_parallel_with_two_group1 */ -class TramiteProcessoDocumentoNaoMapeadoDestinoTest extends CenarioBaseTestCase +class TramiteProcessoDocumentoNaoMapeadoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -45,22 +45,8 @@ public function test_tramitar_processo_contendo_documento_nao_mapeado_destino() self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$destinatario['TIPO_DOCUMENTO_NAO_MAPEADO']; - // 1 - Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - // 2 - Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - - // 3 - Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); - - // 4 - Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // 5 - Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -83,10 +69,9 @@ public function test_verificar_origem_processo_contendo_documento_nao_mapeado_de // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php b/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php index 857b381a9..70bf78aa1 100755 --- a/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php +++ b/tests_super/funcional/tests/TramiteProcessoDocumentoNaoMapeadoOrigemTest.php @@ -4,7 +4,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends CenarioBaseTestCase +class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -14,6 +14,7 @@ class TramiteProcessoDocumentoNaoMapeadoOrigemTest extends CenarioBaseTestCase public static function setUpBeforeClass() :void { + parent::setUpBeforeClass(); $parametrosOrgaoA = new ParameterUtils(CONTEXTO_ORGAO_A); $parametrosOrgaoA->setParameter('PEN_ESPECIE_DOCUMENTAL_PADRAO_ENVIO', null); @@ -45,21 +46,19 @@ public function test_tramitar_processo_documento_interno_nao_mapeado() self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$remetente['TIPO_DOCUMENTO_NAO_MAPEADO']; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); $tipoDocumento = mb_convert_encoding(self::$documentoTeste["TIPO_DOCUMENTO"], "ISO-8859-1"); $mensagemEsperada = sprintf("Não existe mapeamento de envio para %s no documento", $tipoDocumento); - $this->expectExceptionMessage(utf8_encode($mensagemEsperada)); + $this->expectExceptionMessage(mb_convert_encoding($mensagemEsperada, 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente(self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); } @@ -83,18 +82,19 @@ public function test_tramitar_processo_documento_externo_nao_mapeado() self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste['TIPO_DOCUMENTO'] = self::$remetente['TIPO_DOCUMENTO_NAO_MAPEADO']; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - // Incluir Documentos no Processo - $this->cadastrarDocumentoExterno(self::$documentoTeste); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->abrirProcesso(self::$protocoloTeste); $tipoDocumento = mb_convert_encoding(self::$documentoTeste["TIPO_DOCUMENTO"], "ISO-8859-1"); $mensagemEsperada = sprintf("Não existe mapeamento de envio para %s no documento", $tipoDocumento); - $this->expectExceptionMessage(utf8_encode($mensagemEsperada)); + $this->expectExceptionMessage(mb_convert_encoding($mensagemEsperada, 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente(self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); } } diff --git a/tests_super/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php b/tests_super/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php index 837aad643..dc1418b3b 100755 --- a/tests_super/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoExtensaoNaoMapeadoDestinoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoExtensaoNaoMapeadoDestinoTest extends CenarioBaseTestCase +class TramiteProcessoExtensaoNaoMapeadoDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -31,12 +31,8 @@ public function test_tramitar_processo_contendo_extensao_nao_mapeada_destino() self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_extensao_nao_permitida.docx'); - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); + self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; } @@ -60,10 +56,9 @@ public function test_verificar_origem_processo_contendo_extensao_nao_mapeado_des // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoGestorNaoResponsavelPelaUnidadeMapeadaTest.php b/tests_super/funcional/tests/TramiteProcessoGestorNaoResponsavelPelaUnidadeMapeadaTest.php index d33ad87ee..997996261 100644 --- a/tests_super/funcional/tests/TramiteProcessoGestorNaoResponsavelPelaUnidadeMapeadaTest.php +++ b/tests_super/funcional/tests/TramiteProcessoGestorNaoResponsavelPelaUnidadeMapeadaTest.php @@ -1,14 +1,17 @@ markTestIncomplete( - 'Teste implementado com erro. Será refatorado em momento oportuno.' - ); + //Altera o mapeamento da unidade atual para uma organização que não reconhece a unidade + $this->alterarMapeamentoDeUnidadeOrgaoA(); // Configuração dos dados para teste do cenário self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - $estruturaOrgaoDestino = utf8_encode('Órgãos/ Entidades Legados'); - $unidadeDestino = utf8_encode('super.orgao5.tramita.processoeletronico.gov.br'); + // Criar processo principal + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); + + // Cadastrando documentos no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, self::$protocoloTeste->getDblIdProtocolo()); + + // Acessa o processo criado + self::$protocoloTeste = self::$protocoloTeste->getStrProtocoloFormatado(); $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - $this->tramitarProcessoExternamenteGestorNaoResponsavelUnidade($estruturaOrgaoDestino, $unidadeDestino, ''); + $this->abrirProcesso(self::$protocoloTeste); + + $this->tramitarProcessoExternamenteGestorNaoResponsavelUnidade([ + 'repositorio' => mb_convert_encoding(self::$destinatario['REP_ESTRUTURAS'], 'UTF-8', 'ISO-8859-1'), + 'unidadeDestino' => mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], 'UTF-8', 'ISO-8859-1'), + 'nomeUnidadeMalMapeada' => self::$nomeOrgNaoMapeada, + 'idUnidadeMalMapeada' => self::$idOrgNaoMapeada + ]); + + // Reverte alteração feita em alterarMapeamentoDeUnidadeOrgaoA para evitar quebra de testes subsequentes + $this->reverterAlterarMapeamentoDeUnidadeOrgaoA(); + } + + private function alterarMapeamentoDeUnidadeOrgaoA() + { + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("update md_pen_unidade set id_unidade_rh=?, sigla_unidade_rh=?, nome_unidade_rh=? where id_unidade=?", array(self::$idOrgNaoMapeada, self::$nomeOrgNaoMapeada, self::$nomeOrgNaoMapeada, 110000001)); + } + + private function reverterAlterarMapeamentoDeUnidadeOrgaoA() + { + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("update md_pen_unidade set id_unidade_rh=?, sigla_unidade_rh=?, nome_unidade_rh=? where id_unidade=?", array(self::$remetente['ID_ESTRUTURA'], self::$remetente['SIGLA_ESTRUTURA'], self::$remetente['SIGLA_ESTRUTURA'], 110000001)); } } diff --git a/tests_super/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php b/tests_super/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php index 5f60313b0..52d24a8aa 100755 --- a/tests_super/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoRestritoHipotesePadraoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoRestritoHipotesePadraoTest extends CenarioBaseTestCase +class TramiteProcessoRestritoHipotesePadraoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -35,17 +35,18 @@ public function test_tramitar_processo_restrito_hipotese_nao_mapeada() self::$processoTeste["RESTRICAO"] = PaginaIniciarProcesso::STA_NIVEL_ACESSO_RESTRITO; self::$processoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO_NAO_MAPEADO"]; - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -75,10 +76,9 @@ public function test_verificar_origem_processo_restrito_hipotese_nao_mapeada() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -119,7 +119,7 @@ public function test_verificar_destino_processo_restrito_hipotese_nao_mapeada() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -127,7 +127,7 @@ public function test_verificar_destino_processo_restrito_hipotese_nao_mapeada() self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS']), - self::$destinatario["HIPOTESE_RESTRICAO_PADRAO"]); + self::$destinatario["HIPOTESE_RESTRICAO_NAO_MAPEADO"]); // 13 - Verificar recibos de trâmite $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); diff --git a/tests_super/funcional/tests/TramiteProcessoRestritoTest.php b/tests_super/funcional/tests/TramiteProcessoRestritoTest.php index ca494deb4..d025d067d 100755 --- a/tests_super/funcional/tests/TramiteProcessoRestritoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoRestritoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoRestritoTest extends CenarioBaseTestCase +class TramiteProcessoRestritoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,13 +40,14 @@ public function test_tramitar_processo_restrito() $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - // Incluir Documentos no Processo - $this->cadastrarDocumentoInterno(self::$documentoTeste); + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - // Assinar documento interno criado anteriormente - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -76,10 +77,9 @@ public function test_verificar_origem_processo_restrito() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -120,7 +120,7 @@ public function test_verificar_destino_processo_restrito() $listaDocumentos = $this->paginaProcesso->listarDocumentos(); // 12 - Validar dados do processo - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); diff --git a/tests_super/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php b/tests_super/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php new file mode 100755 index 000000000..01eb1d373 --- /dev/null +++ b/tests_super/funcional/tests/TramiteProcessoSemDadosBlocoDeTramiteTest.php @@ -0,0 +1,62 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste, false); + $this->atualizarProcessoFixture($objProtocoloDTO, ['DESCRICAO' => '']); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Descrição do processo '.$objProtocoloDTO->getStrProtocoloFormatado().' não informado.'), + $mensagem + ); + $this->assertStringContainsString( + utf8_encode('Interessados do processo '.$objProtocoloDTO->getStrProtocoloFormatado().' não informados.'), + $mensagem + ); + } +} diff --git a/tests_super/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php b/tests_super/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php index b6427d848..1096c867d 100755 --- a/tests_super/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php +++ b/tests_super/funcional/tests/TramiteProcessoTamanhoAcimaLimiteDestinoTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_alone_group3 */ -class TramiteProcessoTamanhoAcimaLimiteDestinoTest extends CenarioBaseTestCase +class TramiteProcessoTamanhoAcimaLimiteDestinoTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -53,10 +53,17 @@ public function test_tramitar_processo_tamanho_acima_limite_destino() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_003.pdf'); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoExterno(self::$documentoTeste); + + $this->abrirProcesso(self::$protocoloTeste); + $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false); @@ -83,10 +90,9 @@ public function test_verificar_origem_processo_tamanho_acima_limite_destino() // 6 - Verificar se situação atual do processo está como bloqueado $this->waitUntil(function($testCase) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringContainsString(utf8_encode("Processo aberto somente na unidade"), $paginaProcesso->informacao()); + $testCase->assertStringContainsString(mb_convert_encoding("Processo aberto somente na unidade", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertTrue($paginaProcesso->processoAberto()); $testCase->assertFalse($paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php b/tests_super/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php similarity index 70% rename from tests_super/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php rename to tests_super/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php index 2c558cfa8..ab0589345 100755 --- a/tests_super/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPai.php +++ b/tests_super/funcional/tests/TramiteProcessoUnidadeSemHierarquiaPaiTest.php @@ -1,6 +1,6 @@ gerarDadosDocumentoInternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1); - $this->realizarTramiteExternoSemvalidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; $paginaProcesso = new PaginaProcesso($this); - $this->assertStringNotContainsString(utf8_encode("externa para SEGES TESTE SEM PAI - - RE CGPRO"), $paginaProcesso->informacao()); + $this->assertStringNotContainsString(mb_convert_encoding("externa para SEGES TESTE SEM PAI - - RE CGPRO", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); } } diff --git a/tests_super/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php b/tests_super/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php new file mode 100755 index 000000000..13c7ba1c0 --- /dev/null +++ b/tests_super/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php @@ -0,0 +1,78 @@ +execute("update md_pen_bloco set sta_estado=? where sta_estado=?", array('C', 'A')); + + // Limpa os mapeamentos de unidade + $bancoOrgaoA->execute("delete from md_pen_unidade", array()); + } + + public static function tearDownAfterClass() :void { + + // Recadastra os mapeamentos da unidade + putenv("DATABASE_HOST=org1-database"); + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $penMapUnidadesFixture->carregar([ + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, + 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, + ]); + + $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); + $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); + } + + /** + * Teste de trâmite externo de processo com restrição de acesso + * + * @group envio + * @large + * + * + * @return void + */ + public function test_tramitar_processo_restrito() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); + + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Incluir Processo no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + } +} diff --git a/tests_super/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php b/tests_super/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php new file mode 100755 index 000000000..eaca7e579 --- /dev/null +++ b/tests_super/funcional/tests/TramiteProcessoValidacaoBotoesAposIncluirTest.php @@ -0,0 +1,57 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + + // Cadastrar novo processo de teste + $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); + + // Incluir e assinar documento no processo + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdBloco' => $objBlocoDeTramiteDTO->getNumId() + ]); + + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + // Abrir processo + $this->abrirProcesso(self::$protocoloTeste); + + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste("Envio Externo de Processo")); + $this->assertNotTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Incluir Processo no Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + $this->assertTrue($this->paginaProcesso->validarBotaoExiste(mb_convert_encoding("Remover Processo do Bloco de Trâmite", 'UTF-8', 'ISO-8859-1'))); + } +} diff --git a/tests_super/funcional/tests/TramiteProcessoValidacaoEnvioTest.php b/tests_super/funcional/tests/TramiteProcessoValidacaoEnvioTest.php index 7db3e345d..4911f0d39 100755 --- a/tests_super/funcional/tests/TramiteProcessoValidacaoEnvioTest.php +++ b/tests_super/funcional/tests/TramiteProcessoValidacaoEnvioTest.php @@ -5,7 +5,7 @@ * Execution Groups * @group execute_parallel_group1 */ -class TramiteProcessoValidacaoEnvioTest extends CenarioBaseTestCase +class TramiteProcessoValidacaoEnvioTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -40,13 +40,16 @@ public function test_tramitar_processo_sem_documentos() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + // Cadastrar novo processo de teste + $objProtocoloPrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTeste); + self::$protocoloTeste = $objProtocoloPrincipalDTO->getStrProtocoloFormatado(); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Cadastrar novo processo de teste - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + $this->abrirProcesso(self::$protocoloTeste); - $this->expectExceptionMessage(utf8_encode("Não é possível tramitar um processo sem documentos")); + $this->expectExceptionMessage(mb_convert_encoding("Não é possível tramitar um processo sem documentos", 'UTF-8', 'ISO-8859-1')); $this->tramitarProcessoExternamente( self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], diff --git a/tests_super/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php b/tests_super/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php index b5362de4a..f25744119 100755 --- a/tests_super/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php +++ b/tests_super/funcional/tests/TramiteProcessosComDevolucaoAmbosAnexadosTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group6 */ -class TramiteProcessosComDevolucaoAmbosAnexadosTest extends CenarioBaseTestCase +class TramiteProcessosComDevolucaoAmbosAnexadosTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -44,7 +44,7 @@ public function test_tramitar_processos_separados_da_origem() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTestePrincipal, $documentos, self::$remetente, self::$destinatario); self::$protocoloTestePrincipal = self::$processoTestePrincipal["PROTOCOLO"]; $this->sairSistema(); @@ -55,7 +55,7 @@ public function test_tramitar_processos_separados_da_origem() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -96,21 +96,30 @@ public function test_devolucao_processo_anexado_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste6 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + $objProtocoloAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); + $objProtocoloPrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + + // Cadastra documento Externo ao processo anexado + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + // Anexa processo ao processo principal + $this->anexarProcessoFixture($objProtocoloPrincipalDTO->getDblIdProtocolo(), $objProtocoloAnexadoDTO->getDblIdProtocolo()); + + // Cadastra documento Externo ao processo principal + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste6, $objProtocoloPrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - // Incluir novos documentos relacionados no processo anexado - $this->abrirProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); - $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->anexarProcesso(self::$protocoloTesteAnexado); - $this->cadastrarDocumentoExterno(self::$documentoTeste6); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -143,10 +152,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php b/tests_super/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php index 460e9f7bf..419099288 100755 --- a/tests_super/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php +++ b/tests_super/funcional/tests/TramiteProcessosComDevolucoesEAnexacoesTest.php @@ -15,7 +15,7 @@ * Execution Groups * @group execute_alone_group2 */ -class TramiteProcessosComDevolucoesEAnexacoesTest extends CenarioBaseTestCase +class TramiteProcessosComDevolucoesEAnexacoesTest extends FixtureCenarioBaseTestCase { public static $remetente; public static $destinatario; @@ -31,6 +31,11 @@ class TramiteProcessosComDevolucoesEAnexacoesTest extends CenarioBaseTestCase public static $documentoTeste8; public static $protocoloTestePrincipal; public static $protocoloTesteAnexado; + public static $objProtocoloTestePrincipalDTO; + public static $objProtocoloTesteAnexadoDTO; + + + /** * Teste inicial de trâmite de processo apartado para o órgão B @@ -53,7 +58,7 @@ public function test_tramitar_processo_simples_para_orgaoB() self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); self::$protocoloTesteAnexado = self::$processoTesteAnexado["PROTOCOLO"]; } @@ -89,13 +94,16 @@ public function test_devolucao_processo_simples_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste3 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste3, self::$documentoTeste4); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTesteAnexado, $documentos, self::$remetente, self::$destinatario); + + putenv("DATABASE_HOST=org1-database"); } @@ -137,20 +145,23 @@ public function test_tramitar_processo_anexado_para_orgaoB() self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste6 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $objProtocoloTestePrincipalDTO = $this->cadastrarProcessoFixture(self::$processoTestePrincipal); + self::$protocoloTestePrincipal = $objProtocoloTestePrincipalDTO->getStrProtocoloFormatado(); + + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste5, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); - // Cadastrar novo processo de teste principal e incluir documentos relacionados - $this->paginaBase->navegarParaControleProcesso(); - self::$protocoloTestePrincipal = $this->cadastrarProcesso(self::$processoTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste5); + $objProtocoloTesteAnexadoDTO = $this->consultarProcessoFixture(self::$protocoloTesteAnexado, \ProtocoloRN::$TP_PROCEDIMENTO); // Realizar a anexação de processos - $this->anexarProcesso(self::$protocoloTesteAnexado); + $this->anexarProcessoFixture($objProtocoloTestePrincipalDTO->getDblIdProtocolo(), $objProtocoloTesteAnexadoDTO->getDblIdProtocolo()); - $this->cadastrarDocumentoInterno(self::$documentoTeste6); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste6, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + // Acessar sistema do this->REMETENTE do processo + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + + $this->abrirProcesso(self::$protocoloTestePrincipal); + // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTestePrincipal, @@ -180,10 +191,9 @@ public function test_verificar_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; @@ -215,7 +225,7 @@ public function test_verificar_destino_processo_anexado() $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); $this->abrirProcesso(self::$protocoloTestePrincipal); - $strTipoProcesso = utf8_encode("Tipo de processo no órgão de origem: "); + $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); $strTipoProcesso .= self::$processoTestePrincipal['TIPO_PROCESSO']; $strObservacoes = $orgaosDiferentes ? $strTipoProcesso : null; $this->validarDadosProcesso( @@ -260,6 +270,7 @@ public function test_devolucao_processo_para_origem() { self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Definição de dados de teste do processo principal self::$documentoTeste7 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); @@ -268,11 +279,16 @@ public function test_devolucao_processo_para_origem() // Acessar sistema do this->REMETENTE do processo $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + // Consulta no Org2/B o DTO do Protocolo Principal + $objProtocoloTestePrincipalDTO = $this->consultarProcessoFixture(self::$protocoloTestePrincipal, \ProtocoloRN::$TP_PROCEDIMENTO); + // Incluir novos documentos relacionados + $this->cadastrarDocumentoExternoFixture(self::$documentoTeste7, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + $this->cadastrarDocumentoInternoFixture(self::$documentoTeste8, $objProtocoloTestePrincipalDTO->getDblIdProtocolo()); + + putenv("DATABASE_HOST=org1-database"); + $this->abrirProcesso(self::$protocoloTestePrincipal); - $this->cadastrarDocumentoExterno(self::$documentoTeste7); - $this->cadastrarDocumentoInterno(self::$documentoTeste8); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( @@ -303,10 +319,9 @@ public function test_verificar_devolucao_origem_processo_anexado() $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { sleep(5); - $this->atualizarTramitesPEN(); $testCase->refresh(); $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(utf8_encode("Processo em trâmite externo para "), $paginaProcesso->informacao()); + $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); $testCase->assertFalse($paginaProcesso->processoAberto()); $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); return true; diff --git a/tests_super/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php b/tests_super/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php index fedcbecc2..ade7952e3 100755 --- a/tests_super/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php +++ b/tests_super/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteRecebimentoDocumentoAnexadoTest extends CenarioBaseTestCase +class TramiteRecebimentoDocumentoAnexadoTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -29,10 +29,10 @@ class TramiteRecebimentoDocumentoAnexadoTest extends CenarioBaseTestCase * Teste de envio de metadados do processo contendo documentos anexados * * Inicialmente são enviados 3 documentos, sendo um deles referênciado pelos outros dois documentos - * + * * @group envio * @large - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void @@ -62,7 +62,7 @@ public function test_envio_processo_com_documento_anexado() $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -88,7 +88,7 @@ public function test_devolucao_processo_com_documento_anexado_para_origem() self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); $arrDocumentosSegundoEnvio = array(self::$documentoTeste4, self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $arrDocumentosSegundoEnvio, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $arrDocumentosSegundoEnvio, self::$remetente, self::$destinatario); } /** @@ -222,7 +222,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], @@ -270,13 +270,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 9d2ac1a3e..99d2c2473 100755 --- a/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group4 */ -class TramiteRecebimentoDocumentoAvulsoTest extends CenarioBaseTestCase +class TramiteRecebimentoDocumentoAvulsoTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -39,6 +39,7 @@ public function setUp(): void // Carregar contexto de testes e dados sobre certificado digital self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + putenv("DATABASE_HOST=org2-database"); // Instanciar objeto de teste utilizando o BeSimpleSoap $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; @@ -60,7 +61,7 @@ public function test_recebimento_documento_avulso() $novoTramite = $this->enviarMetadadosDocumento($this->servicoPEN, self::$remetente, self::$destinatario, $metadadosDocumentoTeste); $this->enviarComponentesDigitaisDoTramite($this->servicoPEN, $novoTramite, $metadadosDocumentoTeste); $reciboTramite = $this->receberReciboEnvio($this->servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -87,7 +88,8 @@ public function test_devolucao_processo_para_origem() self::$documentoTeste3 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); $documentos = array(self::$documentoTeste2, self::$documentoTeste3); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + putenv("DATABASE_HOST=org1-database"); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } /** @@ -125,8 +127,9 @@ public function test_devolucao_processo_para_origem_documento_avulso() self::$documentoTeste4 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + putenv("DATABASE_HOST=org2-database"); $documentos = array(self::$documentoTeste4, self::$documentoTeste5); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $documentos, self::$remetente, self::$destinatario); } /** @@ -267,12 +270,12 @@ private function construirMetadadosDocumentoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index 3bf9fa63c..768308bb9 100755 --- a/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_parallel_group3 */ -class TramiteRecebimentoInteressadosDuplicadosTest extends CenarioBaseTestCase +class TramiteRecebimentoInteressadosDuplicadosTest extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -53,7 +53,7 @@ public function test_envio_processo_com_documento_anexado() $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verifica recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -173,7 +173,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest } $arrInteressados = array_map(function($item) { - return array('nome' => utf8_encode($item)); + return array('nome' => mb_convert_encoding($item, 'UTF-8', 'ISO-8859-1')); }, $processoTeste['INTERESSADOS']); @@ -185,7 +185,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => $arrInteressados, 'documento' => $metadadosDocumentos, @@ -231,13 +231,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( diff --git a/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php b/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php index a2089734a..d1036ae72 100755 --- a/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php +++ b/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php @@ -6,7 +6,7 @@ * Execution Groups * @group execute_alone_group1 */ -class TramiteRecebimentoMultiplosComponentesDigitais extends CenarioBaseTestCase +class TramiteRecebimentoMultiplosComponentesDigitais extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -26,7 +26,7 @@ class TramiteRecebimentoMultiplosComponentesDigitais extends CenarioBaseTestCase /** * Teste de recebimento dedocumento avulso com 2 componentes digitais - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void @@ -47,7 +47,7 @@ public function setUp(): void /** * Teste de recebimento processo contendo documento com 3 componentes digitais - * + * * @return void */ public function test_recebimento_processo_com_3_componentes_digitais() @@ -65,14 +65,14 @@ public function test_recebimento_processo_com_3_componentes_digitais() self::CONTEUDO_DOCUMENTO_B, self::CONTEUDO_DOCUMENTO_C, self::CONTEUDO_DOCUMENTO_A, self::CONTEUDO_DOCUMENTO_A, self::CONTEUDO_DOCUMENTO_B, self::CONTEUDO_DOCUMENTO_C, )); - + // Simular um trâmite chamando a API do Barramento diretamente $metadadosProcessoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, array(self::$documentoZip)); $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, $remetente, $destinatario, $metadadosProcessoTeste); $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -94,14 +94,14 @@ public function test_devolucao_processo_para_origem() // Configuração do dados para teste do cenário $remetente = self::$contextoOrgaoA; $destinatario = self::$contextoOrgaoB; + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; $documentoTeste1 = $this->gerarDadosDocumentoInternoTeste($remetente); $documentoTeste2 = $this->gerarDadosDocumentoExternoTeste($remetente); $novosDocumentos = array($documentoTeste1, $documentoTeste2); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); - $totalDdocumentos = array(self::$documentoZip, $documentoTeste1, $documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $totalDdocumentos, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + } /** @@ -123,7 +123,7 @@ public function test_recebimento_documento_avulso_com_2_componentes_digitais() $novoTramite = $this->enviarMetadadosDocumento(self::$servicoPEN, $remetente, $destinatario, $metadadosDocumentoTeste); $this->enviarComponentesDigitaisDoDocumentoAvulso(self::$servicoPEN, $novoTramite, $metadadosDocumentoTeste); $reciboTramite = $this->receberReciboEnvioDocumentoAvulso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -139,7 +139,7 @@ private function receberReciboEnvioDocumentoAvulso($servicoPEN, $novoTramite) $parametros->IDT = $dadosTramite->tramite->IDT; return $servicoPEN->receberReciboDeEnvio($parametros); } - + private function receberReciboEnvioProcesso($servicoPEN, $novoTramite) { $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; @@ -154,7 +154,7 @@ private function receberReciboTramite($servicoPEN, $novoTramite) $parametros = new StdClass(); $parametros->IDT = $dadosTramite->IDT; return $servicoPEN->receberReciboDeTramite($parametros); - } + } private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) { @@ -296,12 +296,12 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -352,13 +352,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -391,7 +391,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], diff --git a/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php b/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php index bbd299c90..48982791b 100755 --- a/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php +++ b/tests_super/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php @@ -2,7 +2,7 @@ use \utilphp\util; -class TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes extends CenarioBaseTestCase +class TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes extends FixtureCenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; const ALGORITMO_HASH_ASSINATURA = 'SHA256withRSA'; @@ -68,7 +68,7 @@ public function test_recebimento_processo_com_3_componentes_digitais() $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); - $this->atualizarTramitesPEN(true,false); + //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -93,8 +93,10 @@ public function test_devolucao_processo_para_origem_1() $documentoTesteInterno = $this->gerarDadosDocumentoInternoTeste($remetente); + putenv("DATABASE_HOST=org2-database"); $novosDocumentos = array($documentoTesteInterno); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + self::$totalDocumentos = array_merge(self::$totalDocumentos, array($documentoTesteInterno)); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, self::$totalDocumentos, $destinatario); } @@ -111,14 +113,14 @@ public function test_devolucao_processo_para_destino_2() // Configuração do dados para teste do cenário $remetente = self::$contextoOrgaoA; $destinatario = array_slice(self::$contextoOrgaoB, 0); - $destinatario['SIGLA_UNIDADE'] = $destinatario['SIGLA_UNIDADE_SECUNDARIA']; - $destinatario['NOME_UNIDADE'] = $destinatario['NOME_UNIDADE_SECUNDARIA']; - $destinatario['SIGLA_UNIDADE_HIERARQUIA'] = $destinatario['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; + $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; $documentoTesteExterno = $this->gerarDadosDocumentoExternoTeste($remetente, self::CONTEUDO_DOCUMENTO_A); + putenv("DATABASE_HOST=org1-database"); $novosDocumentos = array($documentoTesteExterno); - $this->realizarTramiteExternoComValidacaoNoRemetente(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + $this->realizarTramiteExternoComValidacaoNoRemetenteFixture(self::$processoTeste, $novosDocumentos, $remetente, $destinatario); + self::$totalDocumentos = array_merge(self::$totalDocumentos, array($documentoTesteExterno)); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, self::$totalDocumentos, $destinatario); } @@ -288,12 +290,12 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -344,13 +346,13 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'ordem' => $ordemDocumento, 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), 'numeroDeIdentificacao' => '999999', ), 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => utf8_encode(util::random_string(20)) + 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), 'interessado' => array( @@ -383,7 +385,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( - 'nome' => utf8_encode(util::random_string(20)), + 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), ), 'interessado' => array( 'nome' => $processoTeste['INTERESSADOS'], diff --git a/tests_super/unitario/rn/ProcessoEletronicoRNTest.php b/tests_super/unitario/rn/ProcessoEletronicoRNTest.php index e13e912cc..5123029c6 100755 --- a/tests_super/unitario/rn/ProcessoEletronicoRNTest.php +++ b/tests_super/unitario/rn/ProcessoEletronicoRNTest.php @@ -83,22 +83,22 @@ public function testReduzirCampoTexto() $this->assertTrue(strlen($strResultadoAtual) <= 150); $strTexto = "ããããã ããããã"; - $strResultadoEsperado = utf8_encode("ããããã ..."); - $strResultadoAtual = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 9)); + $strResultadoEsperado = mb_convert_encoding("ããããã ...", 'UTF-8', 'ISO-8859-1'); + $strResultadoAtual = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 9), 'UTF-8', 'ISO-8859-1'); $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen(utf8_decode($strResultadoAtual)) <= 9); + $this->assertTrue(strlen(mb_convert_encoding($strResultadoAtual, 'ISO-8859-1', 'UTF-8')) <= 9); $strTexto = "ããããã ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniamr quis"; - $strResultadoEsperado = utf8_encode("ããããã ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniam ..."); - $strResultadoAtual = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150)); + $strResultadoEsperado = mb_convert_encoding("ããããã ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniam ...", 'UTF-8', 'ISO-8859-1'); + $strResultadoAtual = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150), 'UTF-8', 'ISO-8859-1'); $this->assertEquals($strResultadoEsperado, $strResultadoAtual); $this->assertTrue(mb_strlen($strResultadoAtual) <= 150); $strTexto = "Assessoria de Comunicação do Gabinete do Diretor-Presidente da Autoridade Nacional dede Proteção de dados"; - $strResultadoEsperado = utf8_encode("Assessoria de Comunicação do Gabinete do Diretor-Presidente da Autoridade Nacional dede Proteçã ..."); - $strResultadoAtual = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 100)); + $strResultadoEsperado = mb_convert_encoding("Assessoria de Comunicação do Gabinete do Diretor-Presidente da Autoridade Nacional dede Proteçã ...", 'UTF-8', 'ISO-8859-1'); + $strResultadoAtual = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 100), 'UTF-8', 'ISO-8859-1'); $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen(utf8_decode($strResultadoAtual)) <= 100); + $this->assertTrue(strlen(mb_convert_encoding($strResultadoAtual, 'ISO-8859-1', 'UTF-8')) <= 100); }