Sistema de Apoio ao Processo Legislativo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

158 lines
6.1 KiB

from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from model_mommy import mommy
import pytest
from sapl.base.models import AppConfig
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa
from sapl.norma.forms import (NormaJuridicaForm, NormaPesquisaSimplesForm,
NormaRelacionadaForm)
from sapl.norma.models import NormaJuridica, TipoNormaJuridica
@pytest.mark.django_db(transaction=False)
def test_incluir_norma_submit(admin_client):
# Cria um tipo de norma
tipo = mommy.make(TipoNormaJuridica,
sigla='T',
descricao='Teste')
config = mommy.make(AppConfig)
# Testa POST
response = admin_client.post(reverse('sapl.norma:normajuridica_create'),
{'tipo': tipo.pk,
'numero': '1',
'ano': '2016',
'data': '2016-03-22',
'esfera_federacao': 'E',
'ementa': 'Teste_Ementa',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
norma = NormaJuridica.objects.first()
assert norma.numero == '1'
assert norma.ano == 2016
assert norma.tipo == tipo
@pytest.mark.django_db(transaction=False)
def test_incluir_norma_errors(admin_client):
response = admin_client.post(reverse('sapl.norma:normajuridica_create'),
{'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['tipo'] ==
[_('Este campo é obrigatório.')])
assert (response.context_data['form'].errors['numero'] ==
[_('Este campo é obrigatório.')])
assert (response.context_data['form'].errors['ano'] ==
[_('Este campo é obrigatório.')])
assert (response.context_data['form'].errors['data'] ==
[_('Este campo é obrigatório.')])
assert (response.context_data['form'].errors['esfera_federacao'] ==
[_('Este campo é obrigatório.')])
assert (response.context_data['form'].errors['ementa'] ==
[_('Este campo é obrigatório.')])
# TODO esse teste repete o teste acima (test_incluir_norma_errors)
# mas a granularidade certa para testar campos obrigatórios seria
# no nível de form ou então de model, não de client...
def test_norma_form_invalida():
form = NormaJuridicaForm(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['data'] == [_('Este campo é obrigatório.')]
assert errors['esfera_federacao'] == [_('Este campo é obrigatório.')]
assert errors['ementa'] == [_('Este campo é obrigatório.')]
@pytest.mark.django_db(transaction=False)
def test_norma_juridica_materia_inexistente():
tipo = mommy.make(TipoNormaJuridica)
tipo_materia = mommy.make(TipoMateriaLegislativa, descricao='VETO')
# cria uma matéria qualquer em 2017 pois, no teste, o campo ano_materia
# está vazio
materia = mommy.make(MateriaLegislativa,
tipo=tipo_materia,
ano=2017,
numero=1,
data_apresentacao='2017-03-05'
)
form = NormaJuridicaForm(data={'tipo': str(tipo.pk),
'numero': '1',
'ano': '2017',
'data': '2017-12-12',
'esfera_federacao': 'F',
'ementa': 'teste norma',
'tipo_materia': str(tipo_materia.pk),
'numero_materia': '2',
'ano_materia': '2017'
})
assert not form.is_valid()
assert form.errors['__all__'] == [
_("Matéria Legislativa 2/2017 (VETO) é inexistente.")]
@pytest.mark.django_db(transaction=False)
def test_norma_juridica_materia_existente():
tipo = mommy.make(TipoNormaJuridica)
tipo_materia = mommy.make(TipoMateriaLegislativa)
mommy.make(MateriaLegislativa,
numero=2,
ano=2017,
tipo=tipo_materia)
form = NormaJuridicaForm(data={'tipo': str(tipo.pk),
'numero': '1',
'ano': '2017',
'data': '2017-12-12',
'esfera_federacao': 'F',
'ementa': 'teste norma',
'tipo_materia': str(tipo_materia.pk),
'numero_materia': '2',
'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
@pytest.mark.django_db(transaction=False)
def test_norma_pesquisa_form_datas_invalidas():
tipo = mommy.make(TipoNormaJuridica)
form = NormaPesquisaSimplesForm(data={'tipo_norma': str(tipo.pk),
'data_inicial': '10/11/2017',
'data_final': '09/11/2017'
})
assert not form.is_valid()
assert form.errors['__all__'] == [_('A Data Final não pode ser menor que '
'a Data Inicial')]