Browse Source

Adiciona testes simples dos forms de Protocolo de Matéria e Documento Administrativo

pull/1434/head
Edward Ribeiro 7 years ago
parent
commit
97679f0080
  1. 14
      sapl/protocoloadm/forms.py
  2. 149
      sapl/protocoloadm/tests/test_protocoloadm.py

14
sapl/protocoloadm/forms.py

@ -566,18 +566,24 @@ class DocumentoAdministrativoForm(ModelForm):
def clean(self): def clean(self):
super(DocumentoAdministrativoForm, self).clean() super(DocumentoAdministrativoForm, self).clean()
numero_protocolo = self.data['numero_protocolo'] cleaned_data = self.cleaned_data
ano_protocolo = self.data['ano_protocolo']
if not self.is_valid():
return cleaned_data
numero_protocolo = cleaned_data['numero_protocolo']
ano_protocolo = cleaned_data['ano_protocolo']
# campos opcionais, mas que se informados devem ser válidos
if numero_protocolo and ano_protocolo: if numero_protocolo and ano_protocolo:
try: try:
self.fields['protocolo'].initial = Protocolo.objects.get( self.fields['protocolo'].initial = Protocolo.objects.get(
numero=numero_protocolo, numero=numero_protocolo,
ano=ano_protocolo).pk ano=ano_protocolo).pk
except ObjectDoesNotExist: except ObjectDoesNotExist:
msg = _('Protocolo %s/%s inexistente' % ( msg = _('Protocolo %s/%s inexistente.' % (
numero_protocolo, ano_protocolo)) numero_protocolo, ano_protocolo))
raise ValidationError(str(msg)) raise ValidationError(msg)
return self.cleaned_data return self.cleaned_data

149
sapl/protocoloadm/tests/test_protocoloadm.py

@ -6,11 +6,15 @@ from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from model_mommy import mommy from model_mommy import mommy
from sapl.materia.models import UnidadeTramitacao from sapl.materia.models import (MateriaLegislativa, UnidadeTramitacao)
from sapl.protocoloadm.forms import AnularProcoloAdmForm from sapl.protocoloadm.forms import (AnularProcoloAdmForm,
DocumentoAdministrativoForm,
ProtocoloDocumentForm,
ProtocoloMateriaForm,)
from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo, from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo,
StatusTramitacaoAdministrativo, StatusTramitacaoAdministrativo,
TipoDocumentoAdministrativo, TipoDocumentoAdministrativo,
TipoMateriaLegislativa,
TramitacaoAdministrativo) TramitacaoAdministrativo)
@ -267,3 +271,144 @@ def test_anular_protocolo_dados_invalidos():
assert errors['justificativa_anulacao'] == [_('Este campo é obrigatório.')] assert errors['justificativa_anulacao'] == [_('Este campo é obrigatório.')]
assert len(errors) == 3 assert len(errors) == 3
@pytest.mark.django_db(transaction=False)
def test_anular_protocolo_form_anula_protocolo_inexistente():
form = AnularProcoloAdmForm(data={'numero': '1',
'ano': '2017',
'justificativa_anulacao': 'teste'
})
assert not form.is_valid()
assert form.errors['__all__'] == [_(
'Protocolo 1/2017 não existe')]
@pytest.mark.django_db(transaction=False)
def test_anular_protocolo_form_anula_protocolo_anulado():
protocolo = mommy.make(Protocolo, numero=1, ano=2017, anulado=True)
form = AnularProcoloAdmForm(data={'numero': '1',
'ano': '2017',
'justificativa_anulacao': 'teste'
})
assert not form.is_valid()
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)
protocolo_materia = mommy.make(Protocolo,
numero=1,
ano=2017,
tipo_materia=tipo_materia,
anulado=False)
materia_legislativa = mommy.make(MateriaLegislativa,
ano=2017,
numero_protocolo=1)
form = AnularProcoloAdmForm(data={'numero': '1',
'ano': '2017',
'justificativa_anulacao': 'teste'
})
assert not form.is_valid()
assert form.errors['__all__'] == \
[_("Protocolo 1/2017 não pode ser removido pois existem "
"documentos vinculados a ele.")]
tipo_documento = mommy.make(TipoDocumentoAdministrativo)
protocolo_documento = mommy.make(Protocolo,
numero=2,
ano=2017,
tipo_documento=tipo_documento,
anulado=False)
documento_administrativo = mommy.make(DocumentoAdministrativo,
protocolo=protocolo_documento)
form = AnularProcoloAdmForm(data={'numero': '2',
'ano': '2017',
'justificativa_anulacao': 'teste'
})
assert not form.is_valid()
assert form.errors['__all__'] == \
[_("Protocolo 2/2017 não pode ser removido pois existem "
"documentos vinculados a ele.")]
def test_documento_administrativo_invalido():
form = DocumentoAdministrativoForm(data={})
assert not form.is_valid()
errors = form.errors
assert errors['ano'] == [_('Este campo é obrigatório.')]
assert errors['tipo'] == [_('Este campo é obrigatório.')]
assert errors['assunto'] == [_('Este campo é obrigatório.')]
assert errors['numero'] == [_('Este campo é obrigatório.')]
assert errors['data'] == [_('Este campo é obrigatório.')]
assert len(errors) == 5
@pytest.mark.django_db(transaction=False)
def test_documento_administrativo_protocolo_inexistente():
tipo = mommy.make(TipoDocumentoAdministrativo)
form = DocumentoAdministrativoForm(data={'ano': '2017',
'tipo': str(tipo.pk),
'assunto': 'teste',
'numero': '1',
'data': '2017-10-10',
'numero_protocolo': '11',
'ano_protocolo': '2017'
})
assert not form.is_valid()
assert form.errors['__all__'] == [_('Protocolo 11/2017 inexistente.')]
def test_protocolo_documento_form_invalido():
form = ProtocoloDocumentForm(data={})
assert not form.is_valid()
errors = form.errors
assert errors['tipo_protocolo'] == [_('Este campo é obrigatório.')]
assert errors['interessado'] == [_('Este campo é obrigatório.')]
assert errors['tipo_documento'] == [_('Este campo é obrigatório.')]
assert errors['numero_paginas'] == [_('Este campo é obrigatório.')]
assert errors['assunto'] == [_('Este campo é obrigatório.')]
assert len(errors) == 5
def test_protocolo_materia_invalido():
form = ProtocoloMateriaForm(data={})
assert not form.is_valid()
errors = form.errors
assert errors['assunto_ementa'] == [_('Este campo é obrigatório.')]
assert errors['tipo_autor'] == [_('Este campo é obrigatório.')]
assert errors['tipo_materia'] == [_('Este campo é obrigatório.')]
assert errors['numero_paginas'] == [_('Este campo é obrigatório.')]
assert errors['autor'] == [_('Este campo é obrigatório.')]
assert len(errors) == 5

Loading…
Cancel
Save