From cf6d9b430e4d36217bdf2a9cb6190580f53d5a7b Mon Sep 17 00:00:00 2001 From: Cesar Carvalho Date: Mon, 27 May 2019 11:14:26 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20testes=20para=20as=20altera=C3=A7?= =?UTF-8?q?=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/materia/tests/test_materia.py | 107 ++++++++++- sapl/protocoloadm/tests/test_protocoloadm.py | 180 +++++++++++++++++++ 2 files changed, 285 insertions(+), 2 deletions(-) diff --git a/sapl/materia/tests/test_materia.py b/sapl/materia/tests/test_materia.py index 2bd8f98bc..e12b03dff 100644 --- a/sapl/materia/tests/test_materia.py +++ b/sapl/materia/tests/test_materia.py @@ -7,7 +7,7 @@ from django.db.models import Max from model_mommy import mommy import pytest -from sapl.base.models import Autor, TipoAutor +from sapl.base.models import Autor, TipoAutor, AppConfig from sapl.comissoes.models import Comissao, TipoComissao from sapl.materia.models import (Anexada, Autoria, DespachoInicial, DocumentoAcessorio, MateriaLegislativa, @@ -688,6 +688,8 @@ def test_numeracao_materia_legislativa_por_ano(admin_client): @pytest.mark.django_db(transaction=False) def test_tramitacoes_materias_anexadas(admin_client): + config = mommy.make(AppConfig, tramitacao_materia=True) + tipo_materia = mommy.make( TipoMateriaLegislativa, descricao="Tipo_Teste" @@ -858,4 +860,105 @@ def test_tramitacoes_materias_anexadas(admin_client): kwargs={'pk': tramitacao_anexada.pk}) response = admin_client.post(url, {'confirmar':'confirmar'} ,follow=True) assert Tramitacao.objects.filter(id=tramitacao_anexada.pk).count() == 0 - assert Tramitacao.objects.filter(id=tramitacao_anexada_anexada.pk).count() == 0 \ No newline at end of file + assert Tramitacao.objects.filter(id=tramitacao_anexada_anexada.pk).count() == 0 + + + # Agora testando para caso não seja desejado tramitar as matérias anexadas + # junto com as matérias principais + + assert Tramitacao.objects.all().count() == 0 + + config.tramitacao_materia = False + config.save() + + # Teste criação de Tramitacao + form = TramitacaoForm(data={}) + form.data = {'data_tramitacao':date(2019, 5, 6), + 'unidade_tramitacao_local':unidade_tramitacao_local_1.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk, + 'status':status.pk, + 'urgente': False, + 'texto': "Texto de teste"} + form.instance.materia_id=materia_principal.pk + + assert form.is_valid() + + tramitacao_principal = form.save() + tramitacao_anexada = materia_anexada.tramitacao_set.last() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + + # Deve ser criada tramitação apenas para a matéria principal + assert materia_principal.tramitacao_set.last() == tramitacao_principal + assert not tramitacao_anexada + assert not tramitacao_anexada_anexada + + + # Criação de uma tramitação igual para a anexada à principal para testar a edição + form = TramitacaoForm(data={}) + form.data = {'data_tramitacao':date(2019, 5, 6), + 'unidade_tramitacao_local':unidade_tramitacao_local_1.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk, + 'status':status.pk, + 'urgente': False, + 'texto': "Texto de teste"} + form.instance.materia_id=materia_anexada.pk + + assert form.is_valid() + + tramitacao_anexada = form.save() + tramitacao_principal = materia_principal.tramitacao_set.last() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + + assert materia_anexada.tramitacao_set.last() == tramitacao_anexada + assert materia_principal.tramitacao_set.all().count() == 1 + assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada) + assert not tramitacao_anexada_anexada + + # Teste Edição de Tramitacao + form = TramitacaoUpdateForm(data={}) + # Alterando unidade_tramitacao_destino + form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao, + 'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk, + 'status':tramitacao_principal.status.pk, + 'urgente': tramitacao_principal.urgente, + 'texto': tramitacao_principal.texto} + form.instance = tramitacao_principal + + assert form.is_valid() + tramitacao_principal = form.save() + tramitacao_anexada = materia_anexada.tramitacao_set.last() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + + assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 + assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_1 + assert not tramitacao_anexada_anexada + + # Alterando a tramitação anexada para testar a remoção de tramitações + # Alterando unidade_tramitacao_destino + form = TramitacaoUpdateForm(data={}) + form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao, + 'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk, + 'status':tramitacao_principal.status.pk, + 'urgente': tramitacao_principal.urgente, + 'texto': tramitacao_principal.texto} + form.instance = tramitacao_anexada + + assert form.is_valid() + tramitacao_anexada = form.save() + tramitacao_principal = materia_principal.tramitacao_set.last() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + + assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 + assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 + assert not tramitacao_anexada_anexada + assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada) + + # Testando a remoção + # Removendo a tramitação pricipal, as tramitações anexadas não devem ser removidas + url = reverse('sapl.materia:tramitacao_delete', + kwargs={'pk': tramitacao_principal.pk}) + response = admin_client.post(url, {'confirmar':'confirmar'} ,follow=True) + assert Tramitacao.objects.filter(id=tramitacao_principal.pk).count() == 0 + assert Tramitacao.objects.filter(id=tramitacao_anexada.pk).count() == 1 \ No newline at end of file diff --git a/sapl/protocoloadm/tests/test_protocoloadm.py b/sapl/protocoloadm/tests/test_protocoloadm.py index ff7bf06d2..bd9b823dc 100644 --- a/sapl/protocoloadm/tests/test_protocoloadm.py +++ b/sapl/protocoloadm/tests/test_protocoloadm.py @@ -534,6 +534,9 @@ def make_unidade_tramitacao(descricao): @pytest.mark.django_db(transaction=False) def test_tramitacoes_documentos_anexados(admin_client): + + config = mommy.make(AppConfig, tramitacao_documento=True) + tipo_documento = mommy.make( TipoDocumentoAdministrativo, descricao="Tipo_Teste" @@ -707,6 +710,101 @@ def test_tramitacoes_documentos_anexados(admin_client): assert TramitacaoAdministrativo.objects.filter(id=tramitacao_anexada_anexada.pk).count() == 0 + # Agora testando para caso não seja desejado tramitar os documentos anexados + # junto com os documentos principais + config.tramitacao_documento = False + config.save() + + # Teste criação de Tramitacao + form = TramitacaoAdmForm(data={}) + form.data = {'data_tramitacao':date(2019, 5, 6), + 'unidade_tramitacao_local':unidade_tramitacao_local_1.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk, + 'status':status.pk, + 'urgente': False, + 'texto': "Texto de teste"} + form.instance.documento_id=documento_principal.pk + + assert form.is_valid() + tramitacao_principal = form.save() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + + # Verifica se não foram criadas as tramitações para os documentos anexados e anexados aos anexados + assert documento_principal.tramitacaoadministrativo_set.last() == tramitacao_principal + assert tramitacao_principal.documento.tramitacao == (tramitacao_principal.status.indicador != "F") + assert not tramitacao_anexada + assert not tramitacao_anexada_anexada + + + # Cria uma tramitação igual na tramitação anexada para testar a edição + form = TramitacaoAdmForm(data={}) + form.data = {'data_tramitacao':date(2019, 5, 6), + 'unidade_tramitacao_local':unidade_tramitacao_local_1.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk, + 'status':status.pk, + 'urgente': False, + 'texto': "Texto de teste"} + form.instance.documento_id=documento_anexado.pk + + assert form.is_valid() + tramitacao_anexada = form.save() + tramitacao_principal = documento_principal.tramitacaoadministrativo_set.last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + + assert documento_principal.tramitacaoadministrativo_set.all().count() == 1 + assert documento_anexado.tramitacaoadministrativo_set.last() == tramitacao_anexada + assert not tramitacao_anexada_anexada + + form = TramitacaoAdmEditForm(data={}) + # Alterando unidade_tramitacao_destino da matéria principal, + # as anexadas não devem ser alteradas + form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao, + 'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk, + 'status':tramitacao_principal.status.pk, + 'urgente': tramitacao_principal.urgente, + 'texto': tramitacao_principal.texto} + form.instance = tramitacao_principal + + assert form.is_valid() + tramitacao_principal = form.save() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + + assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 + assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_1 + assert not tramitacao_anexada_anexada + + + form = TramitacaoAdmEditForm(data={}) + # Alterando a anexada da principal para testar a remoção de tramitação + form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao, + 'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk, + 'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk, + 'status':tramitacao_principal.status.pk, + 'urgente': tramitacao_principal.urgente, + 'texto': tramitacao_principal.texto} + form.instance = tramitacao_anexada + + assert form.is_valid() + tramitacao_anexada = form.save() + tramitacao_principal = documento_principal.tramitacaoadministrativo_set.last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + + assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 + assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 + assert not tramitacao_anexada_anexada + assert compara_tramitacoes_doc(tramitacao_anexada, tramitacao_principal) + + # Removendo a tramitação principal, a tramitação anexada não deve ser removida + url = reverse('sapl.protocoloadm:tramitacaoadministrativo_delete', + kwargs={'pk': tramitacao_principal.pk}) + response = admin_client.post(url, {'confirmar':'confirmar'} ,follow=True) + assert TramitacaoAdministrativo.objects.filter(id=tramitacao_principal.pk).count() == 0 + assert TramitacaoAdministrativo.objects.filter(id=tramitacao_anexada.pk).count() == 1 + + @pytest.mark.django_db(transaction=False) def test_tramitacao_lote_documentos_form(admin_client): tipo_documento = mommy.make( @@ -812,6 +910,8 @@ def test_tramitacao_lote_documentos_form(admin_client): @pytest.mark.django_db(transaction=False) def test_tramitacao_lote_documentos_views(admin_client): + config = mommy.make(AppConfig, tramitacao_documento=True) + tipo_documento = mommy.make( TipoDocumentoAdministrativo, descricao="Tipo_Teste" @@ -1040,3 +1140,83 @@ def test_tramitacao_lote_documentos_views(admin_client): assert documento_principal.tramitacaoadministrativo_set.all().count() == 3 assert documento_anexado.tramitacaoadministrativo_set.all().count() == 3 assert documento_anexado_anexado.tramitacaoadministrativo_set.all().count() == 3 + + + # Agora testando para caso não seja desejado tramitar os documentos anexados + # junto com os documentos principais + config.tramitacao_documento = False + config.save() + + TramitacaoAdministrativo.objects.all().delete() + assert TramitacaoAdministrativo.objects.all().count() == 0 + + # Primeira tramitação em lote + # Tramitar documentos com anexados + # O documento anexado não deve tramitar junto com o prinicpal + documentos = [documento_principal.id] + + response = admin_client.post(url, + {'documentos': documentos, + 'data_tramitacao': date(2019, 5, 15), + 'unidade_tramitacao_local': unidade_tramitacao_local_1.id, + 'unidade_tramitacao_destino': unidade_tramitacao_destino_1.id, + 'status': status.id, + 'urgente': False, + 'texto': 'aaaa', + 'salvar':'salvar'}, + follow=True) + + assert response.status_code == 200 + + assert TramitacaoAdministrativo.objects.all().count() == 1 + assert documento_principal.tramitacaoadministrativo_set.all().count() == 1 + assert documento_anexado.tramitacaoadministrativo_set.all().count() == 0 + assert documento_anexado_anexado.tramitacaoadministrativo_set.all().count() == 0 + + # Tramitar o doc anexado ao principal para testar a segunda tramitação em lote + documentos = [documento_anexado.id] + + response = admin_client.post(url, + {'documentos': documentos, + 'data_tramitacao': date(2019, 5, 15), + 'unidade_tramitacao_local': unidade_tramitacao_local_1.id, + 'unidade_tramitacao_destino': unidade_tramitacao_destino_1.id, + 'status': status.id, + 'urgente': False, + 'texto': 'aaaa', + 'salvar':'salvar'}, + follow=True) + + assert response.status_code == 200 + + assert TramitacaoAdministrativo.objects.all().count() == 2 + assert documento_principal.tramitacaoadministrativo_set.all().count() == 1 + assert documento_anexado.tramitacaoadministrativo_set.all().count() == 1 + assert documento_anexado_anexado.tramitacaoadministrativo_set.all().count() == 0 + + tramitacao_principal = documento_principal.tramitacaoadministrativo_set.last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() + assert compara_tramitacoes_doc(tramitacao_anexada, tramitacao_principal) + + documentos = [documento_principal.id] + # Segunda tramitação, o documento anexado não deve tramitar com o principal + response = admin_client.post(url_lote, + {'documentos': documentos, + 'data_tramitacao': date(2019, 5, 15), + 'unidade_tramitacao_local': unidade_tramitacao_destino_1.id, + 'unidade_tramitacao_destino': unidade_tramitacao_destino_2.id, + 'status': status.id, + 'urgente': False, + 'texto': 'aaaa', + 'salvar':'salvar'}, + follow=True) + assert response.status_code == 200 + + msgs = [m.message for m in response.context['messages']] + + assert 'Tramitação completa.' in msgs + + assert TramitacaoAdministrativo.objects.all().count() == 3 + assert documento_principal.tramitacaoadministrativo_set.all().count() == 2 + assert documento_anexado.tramitacaoadministrativo_set.all().count() == 1 + assert documento_anexado_anexado.tramitacaoadministrativo_set.all().count() == 0 \ No newline at end of file