From 2fe0ee4d073754b4527f97860921a5aa1408e022 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Fri, 25 Aug 2017 15:39:18 -0300 Subject: [PATCH] Adiciona testes simples para LegislaturaForm --- sapl/parlamentares/forms.py | 24 ++++++++++ .../parlamentares/tests/test_parlamentares.py | 45 ++++++++++++++++++- 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 2400e1161..e08eb5451 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -98,6 +98,26 @@ class LegislaturaForm(ModelForm): model = Legislatura exclude = [] + def clean(self): + data = super(LegislaturaForm, self).clean() + + if not self.is_valid(): + return self.cleaned_data + + data_inicio = data['data_inicio'] + data_fim = data['data_fim'] + data_eleicao = data['data_eleicao'] + + if data_eleicao.year >= data_inicio.year: + raise ValidationError(_("Data eleição não pode ser inferior a " + "data início da legislatura")) + + if data_inicio > data_fim or (data_fim.year - data_inicio.year != 4): + raise ValidationError(_("Intervalo de início e fim inválido para " + "legislatura.")) + + return data + class LegislaturaCreateForm(LegislaturaForm): @@ -105,6 +125,10 @@ class LegislaturaCreateForm(LegislaturaForm): super(LegislaturaCreateForm, self).clean() cleaned_data = self.cleaned_data + + if not self.is_valid(): + return cleaned_data + eleicao = cleaned_data['data_eleicao'] inicio = cleaned_data['data_inicio'] fim = cleaned_data['data_fim'] diff --git a/sapl/parlamentares/tests/test_parlamentares.py b/sapl/parlamentares/tests/test_parlamentares.py index e9a3c7a0b..03e3f08e9 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 MandatoForm +from sapl.parlamentares.forms import (LegislaturaForm, MandatoForm) from sapl.parlamentares.models import (Dependente, Filiacao, Legislatura, Mandato, Parlamentar, Partido, TipoDependente) @@ -134,7 +134,7 @@ def test_mandato_submit(admin_client): follow=True) mandato = Mandato.objects.first() - assert 'Observação do mandato' == mandato.observacao + assert str(_('Observação do mandato')) == str(_(mandato.observacao)) @pytest.mark.django_db(transaction=False) @@ -213,3 +213,44 @@ def test_mandato_form_datas_invalidas(): assert not form.is_valid() assert form.errors['__all__'] == \ ["Data fim mandato fora do intervalo de legislatura informada"] + + +def test_legislatura_form_invalido(): + + legislatura_form = LegislaturaForm(data={}) + + assert not legislatura_form.is_valid() + + errors = legislatura_form.errors + + errors['numero'] == [_('Este campo é obrigatório.')] + errors['data_inicio'] == [_('Este campo é obrigatório.')] + errors['data_fim'] == [_('Este campo é obrigatório.')] + errors['data_eleicao'] == [_('Este campo é obrigatório.')] + + 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() + + expected = \ + _("Data eleição não pode ser inferior a data início da legislatura") + assert legislatura_form.errors['__all__'] == [expected] + + legislatura_form = LegislaturaForm(data={'numero': '1', + '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.")]