diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 3be7db1fd..056fee35e 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -63,7 +63,7 @@ class SessaoPlenariaForm(ModelForm): super(SessaoPlenariaForm, self).clean() if not self.is_valid(): - return self.cleaned_data + return self.cleaned_data instance = self.instance @@ -72,18 +72,18 @@ class SessaoPlenariaForm(ModelForm): leg = self.cleaned_data['legislatura'] tipo = self.cleaned_data['tipo'] + error = ValidationError( + "Número de Sessão Plenária já existente " + "para a Legislatura, Sessão Legislativa e Tipo informados. " + "Favor escolher um número distinto.") + sessoes = SessaoPlenaria.objects.filter(numero=num, sessao_legislativa=sl, legislatura=leg, tipo=tipo).\ values_list('id', flat=True) - qtd_sessoes = len(sessoes) - - error = ValidationError( - "Número de Sessão Plenária já existente " - "para a Legislatura, Sessão Legislativa e Tipo informados. " - "Favor escolher um número distinto.") + qtd_sessoes = len(sessoes) if qtd_sessoes > 0: if instance.pk: # update diff --git a/sapl/sessao/tests/test_sessao.py b/sapl/sessao/tests/test_sessao.py index e69de29bb..b42ab54f1 100644 --- a/sapl/sessao/tests/test_sessao.py +++ b/sapl/sessao/tests/test_sessao.py @@ -0,0 +1,67 @@ +import pytest + +from sapl.parlamentares.models import Legislatura, SessaoLegislativa +from sapl.sessao import forms +from sapl.sessao.models import SessaoPlenaria, TipoSessaoPlenaria + +from django.utils.translation import ugettext_lazy as _ +from model_mommy import mommy + + +def test_valida_campos_obrigatorios_sessao_plenaria_form(): + form = forms.SessaoPlenariaForm(data={}) + + assert not form.is_valid() + + 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 len(errors) == 6 + +@pytest.mark.django_db(transaction=False) +def test_sessao_plenaria_form_valido(): + legislatura = mommy.make(Legislatura) + sessao = mommy.make(SessaoLegislativa) + tipo = mommy.make(TipoSessaoPlenaria) + + form = forms.SessaoPlenariaForm(data={'legislatura': str(legislatura.pk), + 'numero': '1', + 'tipo': str(tipo.pk), + 'sessao_legislativa': str(sessao.pk), + 'data_inicio': '10/11/2017', + 'hora_inicio': '10:10' + }) + + assert form.is_valid() + +@pytest.mark.django_db(transaction=False) +def test_numero_duplicado_sessao_plenaria_form(): + legislatura = mommy.make(Legislatura) + sessao = mommy.make(SessaoLegislativa) + tipo = mommy.make(TipoSessaoPlenaria) + sessao_plenaria = mommy.make(SessaoPlenaria, + legislatura=legislatura, + sessao_legislativa=sessao, + tipo=tipo, + numero = 1) + + form = forms.SessaoPlenariaForm(data={'legislatura': str(legislatura.pk), + 'numero': '1', + 'tipo': str(tipo.pk), + 'sessao_legislativa': str(sessao.pk), + 'data_inicio': '10/11/2017', + 'hora_inicio': '10:10' + }) + + assert not form.is_valid() + + assert form.errors['__all__'] == ["Número de Sessão Plenária já existente " + "para a Legislatura, Sessão Legislativa " + "e Tipo informados. Favor escolher um " + "número distinto."]