From 1e178633ebfc3fb860d5cf0c3e36cd4c88085caf Mon Sep 17 00:00:00 2001 From: Mariana Mendes Date: Thu, 31 Aug 2017 15:57:26 -0300 Subject: [PATCH] 1409 testes (#1444) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Adiciona a BancadaForm * Adiciona testes básicos de checagem de data para Bancada * Adiciona teste simples em NormaRelacionadaForm * Fix NormaRelacionadaForm e alguns erros relacionados ao check_qa.sh * Corrige NormaRelacionadaForm * Adiciona teste no CasaLegislativaForm * Adiciona teste ao FrenteForm * Corrige erro em FrenteForm * Adiciona teste em NotaForm * Corrige teste em NotaForm * Corrige erros gerados pelo comando fix_qa.sh --- sapl/base/tests/test_form.py | 20 ++++++ sapl/base/tests/teststub_urls.py | 2 +- sapl/compilacao/models.py | 2 +- .../tests/test_tipo_texto_articulado_form.py | 42 ++++++++++++- sapl/compilacao/views.py | 7 +-- sapl/norma/forms.py | 6 +- sapl/norma/tests/test_norma.py | 23 ++++++- sapl/parlamentares/forms.py | 12 ++-- .../parlamentares/tests/test_parlamentares.py | 39 ++++++++++-- sapl/protocoloadm/tests/test_protocoloadm.py | 21 ++++--- sapl/sessao/tests/test_sessao.py | 61 ++++++++++++++++--- sapl/test_urls.py | 4 +- 12 files changed, 196 insertions(+), 43 deletions(-) create mode 100644 sapl/base/tests/test_form.py diff --git a/sapl/base/tests/test_form.py b/sapl/base/tests/test_form.py new file mode 100644 index 000000000..72e5a69e7 --- /dev/null +++ b/sapl/base/tests/test_form.py @@ -0,0 +1,20 @@ +from django.utils.translation import ugettext_lazy as _ + +from sapl.base.forms import CasaLegislativaForm + + +def test_valida_campos_obrigatorios_casa_legislativa_form(): + form = CasaLegislativaForm(data={}) + + assert not form.is_valid() + + errors = form.errors + + assert errors['nome'] == [_('Este campo é obrigatório.')] + assert errors['sigla'] == [_('Este campo é obrigatório.')] + assert errors['endereco'] == [_('Este campo é obrigatório.')] + assert errors['cep'] == [_('Este campo é obrigatório.')] + assert errors['municipio'] == [_('Este campo é obrigatório.')] + assert errors['uf'] == [_('Este campo é obrigatório.')] + + assert len(errors) == 6 diff --git a/sapl/base/tests/teststub_urls.py b/sapl/base/tests/teststub_urls.py index 33bf55d85..4ad6c6d9e 100644 --- a/sapl/base/tests/teststub_urls.py +++ b/sapl/base/tests/teststub_urls.py @@ -5,5 +5,5 @@ from sapl.urls import urlpatterns as original_patterns urlpatterns = original_patterns + patterns('', url(r'^zzzz$', TemplateView.as_view( - template_name='index.html'), + template_name='index.html'), name='zzzz')) diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index 1426c2908..2d3d80116 100644 --- a/sapl/compilacao/models.py +++ b/sapl/compilacao/models.py @@ -1,5 +1,6 @@ from datetime import datetime +import reversion from django.contrib import messages from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType @@ -12,7 +13,6 @@ from django.template import defaultfilters from django.utils.decorators import classonlymethod from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ -import reversion from sapl.compilacao.utils import (get_integrations_view_names, int_to_letter, int_to_roman) diff --git a/sapl/compilacao/tests/test_tipo_texto_articulado_form.py b/sapl/compilacao/tests/test_tipo_texto_articulado_form.py index bb35ef688..e121d771f 100644 --- a/sapl/compilacao/tests/test_tipo_texto_articulado_form.py +++ b/sapl/compilacao/tests/test_tipo_texto_articulado_form.py @@ -1,9 +1,10 @@ -from django.utils.translation import ugettext_lazy as _ -from model_mommy import mommy import pytest +from django.utils.translation import ugettext as _ +from model_mommy import mommy from sapl.compilacao import forms -from sapl.compilacao.models import PerfilEstruturalTextoArticulado +from sapl.compilacao.models import (PerfilEstruturalTextoArticulado, + TipoNota) from sapl.compilacao.views import choice_models_in_extenal_views @@ -39,3 +40,38 @@ def test_tipo_texto_articulado_form_valid(content_type): }) assert form.is_valid(), form.errors + + +def test_valida_campos_obrigatorios_nota_form(): + form = forms.NotaForm(data={}) + + assert not form.is_valid() + + errors = form.errors + + assert errors['texto'] == [_('Este campo é obrigatório')] + assert errors['publicidade'] == [_('Este campo é obrigatório.')] + assert errors['tipo'] == [_('Este campo é obrigatório.')] + assert errors['publicacao'] == [_('Este campo é obrigatório')] + assert errors['efetividade'] == [_('Este campo é obrigatório')] + assert errors['dispositivo'] == [_('Este campo é obrigatório.')] + + assert len(errors) == 6 + + +@pytest.mark.django_db(transaction=False) +def test_nota_form_invalido(): + tipo = mommy.make(TipoNota) + + form = forms.NotaForm(data={'titulo': 'titulo', + 'texto': 'teste', + 'url_externa': 'www.test.com', + 'publicidade': 'publicidade', + 'tipo': str(tipo.pk), + 'publicacao': '10/05/2017', + 'efetividade': '10/05/2017', + 'dispositivo': 'dispositivo', + 'pk': 'pk' + }) + + assert not form.is_valid() diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index ba533072a..4dfad8e99 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -1,7 +1,7 @@ -from collections import OrderedDict -from datetime import timedelta import logging import sys +from collections import OrderedDict +from datetime import timedelta from braces.views import FormMessagesMixin from django import forms @@ -19,8 +19,8 @@ from django.http.response import (HttpResponse, HttpResponseRedirect, from django.shortcuts import get_object_or_404, redirect from django.utils.dateparse import parse_date from django.utils.encoding import force_text -from django.utils.translation import string_concat from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import string_concat from django.views.generic.base import TemplateView from django.views.generic.detail import DetailView from django.views.generic.edit import (CreateView, DeleteView, FormView, @@ -50,7 +50,6 @@ from sapl.compilacao.utils import (DISPOSITIVO_SELECT_RELATED, from sapl.crud.base import Crud, CrudListView, make_pagination from sapl.settings import BASE_DIR - TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index ad410c2fb..5149ac926 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -133,9 +133,9 @@ class NormaJuridicaForm(ModelForm): ano=cleaned_data['ano_materia']) except ObjectDoesNotExist: raise forms.ValidationError( - _("Matéria %s/%s é inexistente." % ( - self.cleaned_data['numero_materia'], - self.cleaned_data['ano_materia']))) + _("Matéria %s/%s é inexistente." % ( + self.cleaned_data['numero_materia'], + self.cleaned_data['ano_materia']))) else: cleaned_data['materia'] = materia diff --git a/sapl/norma/tests/test_norma.py b/sapl/norma/tests/test_norma.py index f57167f62..fa8214e58 100644 --- a/sapl/norma/tests/test_norma.py +++ b/sapl/norma/tests/test_norma.py @@ -1,11 +1,13 @@ import pytest + from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ + from model_mommy import mommy from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa -from sapl.norma.forms import (NormaJuridicaForm,) -from sapl.norma.models import NormaJuridica, TipoNormaJuridica +from sapl.norma.forms import NormaJuridicaForm, NormaRelacionadaForm +from sapl.norma.models import (NormaJuridica, TipoNormaJuridica) @pytest.mark.django_db(transaction=False) @@ -96,7 +98,6 @@ def test_norma_juridica_materia_inexistente(): @pytest.mark.django_db(transaction=False) def test_norma_juridica_materia_existente(): - tipo = mommy.make(TipoNormaJuridica) tipo_materia = mommy.make(TipoMateriaLegislativa) materia = mommy.make(MateriaLegislativa, @@ -115,3 +116,19 @@ def test_norma_juridica_materia_existente(): 'ano_materia': '2017' }) assert form.is_valid() + + +@pytest.mark.django_db(transaction=False) +def test_norma_relacionada_form_campos_obrigatorios(): + form = NormaRelacionadaForm(data={}) + + assert not form.is_valid() + + errors = form.errors + + assert errors['tipo'] == [_('Este campo é obrigatório.')] + assert errors['numero'] == [_('Este campo é obrigatório.')] + assert errors['ano'] == [_('Este campo é obrigatório.')] + assert errors['tipo_vinculo'] == [_('Este campo é obrigatório.')] + + assert len(errors) == 4 diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index e08eb5451..59069aca5 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -72,16 +72,16 @@ class MandatoForm(ModelForm): data_inicio_mandato = data['data_inicio_mandato'] if data_inicio_mandato: if (data_inicio_mandato < legislatura.data_inicio or - data_inicio_mandato > legislatura.data_fim): - raise ValidationError(_("Data início mandato fora do intervalo " - "de legislatura informada")) + data_inicio_mandato > legislatura.data_fim): + raise ValidationError(_("Data início mandato fora do intervalo" + " de legislatura informada")) data_fim_mandato = data['data_fim_mandato'] if data_fim_mandato: if (data_fim_mandato < legislatura.data_inicio or - data_fim_mandato > legislatura.data_fim): - raise ValidationError(_("Data fim mandato fora do intervalo de " - "legislatura informada")) + data_fim_mandato > legislatura.data_fim): + raise ValidationError(_("Data fim mandato fora do intervalo de" + " legislatura informada")) existe_mandato = Mandato.objects.filter( parlamentar=data['parlamentar'], diff --git a/sapl/parlamentares/tests/test_parlamentares.py b/sapl/parlamentares/tests/test_parlamentares.py index 03e3f08e9..a10d235e5 100644 --- a/sapl/parlamentares/tests/test_parlamentares.py +++ b/sapl/parlamentares/tests/test_parlamentares.py @@ -3,7 +3,7 @@ from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ from model_mommy import mommy -from sapl.parlamentares.forms import (LegislaturaForm, MandatoForm) +from sapl.parlamentares.forms import (FrenteForm, LegislaturaForm, MandatoForm) from sapl.parlamentares.models import (Dependente, Filiacao, Legislatura, Mandato, Parlamentar, Partido, TipoDependente) @@ -181,7 +181,9 @@ def test_mandato_form_duplicado(): assert not form.is_valid() - assert form.errors['__all__'] == [_('Mandato nesta legislatura já existe.')] + assert form.errors['__all__'] == [ + _('Mandato nesta legislatura já existe.')] + @pytest.mark.django_db(transaction=False) def test_mandato_form_datas_invalidas(): @@ -230,13 +232,14 @@ def test_legislatura_form_invalido(): assert len(errors) == 4 + def test_legislatura_form_datas_invalidas(): legislatura_form = LegislaturaForm(data={'numero': '1', 'data_inicio': '2017-02-01', 'data_fim': '2021-12-31', 'data_eleicao': '2017-02-01' - }) + }) assert not legislatura_form.is_valid() @@ -248,9 +251,37 @@ def test_legislatura_form_datas_invalidas(): 'data_inicio': '2017-02-01', 'data_fim': '2017-01-01', 'data_eleicao': '2016-11-01' - }) + }) assert not legislatura_form.is_valid() assert legislatura_form.errors['__all__'] == \ [_("Intervalo de início e fim inválido para legislatura.")] + + +@pytest.mark.django_db(transaction=False) +def test_valida_campos_obrigatorios_frente_form(): + form = FrenteForm(data={}) + + assert not form.is_valid() + + errors = form.errors + + assert errors['nome'] == [_('Este campo é obrigatório.')] + assert errors['data_criacao'] == [_('Este campo é obrigatório.')] + + assert len(errors) == 2 + + +@pytest.mark.django_db(transaction=False) +def test_frente_form_valido(): + parlamentares = mommy.make(Parlamentar) + + form = FrenteForm(data={'nome': 'Nome da Frente', + 'parlamentar': str(parlamentares.pk), + 'data_criacao': '10/11/2017', + 'data_extincao': '10/12/2017', + 'descricao': 'teste' + }) + + assert form.is_valid() diff --git a/sapl/protocoloadm/tests/test_protocoloadm.py b/sapl/protocoloadm/tests/test_protocoloadm.py index fd3e73df7..0ffbb5e4b 100644 --- a/sapl/protocoloadm/tests/test_protocoloadm.py +++ b/sapl/protocoloadm/tests/test_protocoloadm.py @@ -6,11 +6,12 @@ from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from model_mommy import mommy -from sapl.materia.models import (MateriaLegislativa, UnidadeTramitacao) +from sapl.materia.models import UnidadeTramitacao from sapl.protocoloadm.forms import (AnularProcoloAdmForm, DocumentoAdministrativoForm, + MateriaLegislativa, ProtocoloDocumentForm, - ProtocoloMateriaForm,) + ProtocoloMateriaForm) from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo, StatusTramitacaoAdministrativo, TipoDocumentoAdministrativo, @@ -258,7 +259,6 @@ def test_create_tramitacao(admin_client): @pytest.mark.django_db(transaction=False) def test_anular_protocolo_dados_invalidos(): - protocolo = mommy.make(Protocolo, pk=1, numero=1, ano=2017) form = AnularProcoloAdmForm(data={}) @@ -300,6 +300,7 @@ def test_anular_protocolo_form_anula_protocolo_anulado(): assert form.errors['__all__'] == [_( 'Protocolo 1/2017 já encontra-se anulado')] + @pytest.mark.django_db(transaction=False) def test_anular_protocolo_form_anula_protocolo_com_doc_vinculado(): tipo_materia = mommy.make(TipoMateriaLegislativa) @@ -323,14 +324,15 @@ def test_anular_protocolo_form_anula_protocolo_com_doc_vinculado(): assert form.errors['__all__'] == \ [_("Protocolo 1/2017 não pode ser removido pois existem " - "documentos vinculados a ele.")] + "documentos vinculados a ele.")] tipo_documento = mommy.make(TipoDocumentoAdministrativo) + protocolo_documento = mommy.make(Protocolo, - numero=2, - ano=2017, - tipo_documento=tipo_documento, - anulado=False) + numero=2, + ano=2017, + tipo_documento=tipo_documento, + anulado=False) documento_administrativo = mommy.make(DocumentoAdministrativo, protocolo=protocolo_documento) @@ -344,7 +346,7 @@ def test_anular_protocolo_form_anula_protocolo_com_doc_vinculado(): assert form.errors['__all__'] == \ [_("Protocolo 2/2017 não pode ser removido pois existem " - "documentos vinculados a ele.")] + "documentos vinculados a ele.")] def test_documento_administrativo_invalido(): @@ -397,6 +399,7 @@ def test_protocolo_documento_form_invalido(): assert len(errors) == 5 + def test_protocolo_materia_invalido(): form = ProtocoloMateriaForm(data={}) diff --git a/sapl/sessao/tests/test_sessao.py b/sapl/sessao/tests/test_sessao.py index d1a1ab8e6..7142aa48f 100644 --- a/sapl/sessao/tests/test_sessao.py +++ b/sapl/sessao/tests/test_sessao.py @@ -2,7 +2,7 @@ import pytest from django.utils.translation import ugettext_lazy as _ from model_mommy import mommy -from sapl.parlamentares.models import Legislatura, SessaoLegislativa +from sapl.parlamentares.models import Legislatura, Partido, SessaoLegislativa from sapl.sessao import forms from sapl.sessao.models import SessaoPlenaria, TipoSessaoPlenaria @@ -14,12 +14,12 @@ def test_valida_campos_obrigatorios_sessao_plenaria_form(): errors = form.errors - assert errors['legislatura'] == ['Este campo é obrigatório.'] - assert errors['sessao_legislativa'] == ['Este campo é obrigatório.'] - assert errors['tipo'] == ['Este campo é obrigatório.'] - assert errors['numero'] == ['Este campo é obrigatório.'] - assert errors['data_inicio'] == ['Este campo é obrigatório.'] - assert errors['hora_inicio'] == ['Este campo é obrigatório.'] + assert errors['legislatura'] == [_('Este campo é obrigatório.')] + assert errors['sessao_legislativa'] == [_('Este campo é obrigatório.')] + assert errors['tipo'] == [_('Este campo é obrigatório.')] + assert errors['numero'] == [_('Este campo é obrigatório.')] + assert errors['data_inicio'] == [_('Este campo é obrigatório.')] + assert errors['hora_inicio'] == [_('Este campo é obrigatório.')] assert len(errors) == 6 @@ -66,3 +66,50 @@ def test_numero_duplicado_sessao_plenaria_form(): "para a Legislatura, Sessão Legislativa " "e Tipo informados. Favor escolher um " "número distinto."] + + +@pytest.mark.django_db(transaction=False) +def test_valida_campos_obrigatorios_bancada_form(): + form = forms.BancadaForm(data={}) + + assert not form.is_valid() + + errors = form.errors + + assert errors['legislatura'] == [_('Este campo é obrigatório.')] + assert errors['nome'] == [_('Este campo é obrigatório.')] + + assert len(errors) == 2 + + +@pytest.mark.django_db(transaction=False) +def test_bancada_form_valido(): + legislatura = mommy.make(Legislatura) + partido = mommy.make(Partido) + + form = forms.BancadaForm(data={'legislatura': str(legislatura.pk), + 'nome': 'Nome da Bancada', + 'partido': str(partido.pk), + 'data_criacao': '10/11/2017', + 'data_extincao': '10/12/2017', + 'descricao': 'teste' + }) + + assert form.is_valid() + + +@pytest.mark.django_db(transaction=False) +def test_bancada_form_datas_invalidas(): + legislatura = mommy.make(Legislatura) + partido = mommy.make(Partido) + + form = forms.BancadaForm(data={'legislatura': str(legislatura.pk), + 'nome': 'Nome da Bancada', + 'partido': str(partido.pk), + 'data_criacao': '2016-11-01', + 'data_extincao': '2016-10-01', + 'descricao': 'teste' + }) + assert not form.is_valid() + assert form.errors['__all__'] == [_('Data de extinção não pode ser menor ' + 'que a de criação')] diff --git a/sapl/test_urls.py b/sapl/test_urls.py index 9daa58fab..bfccb3672 100644 --- a/sapl/test_urls.py +++ b/sapl/test_urls.py @@ -173,7 +173,7 @@ apps_url_patterns_prefixs_and_users = { '/ta', ]}, 'redireciona_urls': { - 'prefixs': [ + 'prefixs': [ '/default_index_html', '/consultas/parlamentar/parlamentar_', '/consultas/comissao/comissao_', @@ -192,7 +192,7 @@ apps_url_patterns_prefixs_and_users = { '/presencaSessao', '/resumoPropositurasAutor', '/propositurasAnoAutorTipo', - ]}, + ]}, 'lexml': { 'prefixs': [ '/lexml',