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.

446 lines
16 KiB

import pytest
from django.core.urlresolvers import reverse
from model_mommy import mommy
from comissoes.models import Comissao, TipoComissao
9 years ago
from materia.models import (Anexada, Autor, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao,
Proposicao, RegimeTramitacao, StatusTramitacao,
TipoAutor, TipoDocumento, TipoMateriaLegislativa,
TipoProposicao, Tramitacao, UnidadeTramitacao)
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
def make_unidade_tramitacao(descricao):
# Cria uma comissão para ser a unidade de tramitação
tipo_comissao = mommy.make(TipoComissao)
comissao = mommy.make(Comissao,
tipo=tipo_comissao,
nome=descricao,
sigla='T',
data_criacao='2016-03-21')
# Testa a comissão
assert comissao.tipo == tipo_comissao
assert comissao.nome == descricao
# Cria a unidade
unidade = mommy.make(UnidadeTramitacao, comissao=comissao)
assert unidade.comissao == comissao
return unidade
@pytest.mark.django_db(transaction=False)
def make_norma():
# Cria um novo tipo de Norma
tipo = mommy.make(TipoNormaJuridica,
sigla='T1',
descricao='Teste_Tipo_Norma')
mommy.make(NormaJuridica,
tipo=tipo,
numero=1,
ano=2016,
data='2016-03-21',
esfera_federacao='E',
ementa='Teste_Ementa')
# Testa se a Norma foi criada
norma = NormaJuridica.objects.first()
assert norma.tipo == tipo
assert norma.numero == 1
assert norma.ano == 2016
return norma
@pytest.mark.django_db(transaction=False)
def make_materia_principal():
regime_tramitacao = mommy.make(RegimeTramitacao, descricao='Teste_Regime')
# Cria a matéria principal
tipo = mommy.make(TipoMateriaLegislativa,
sigla='T1',
descricao='Teste_MateriaLegislativa')
mommy.make(MateriaLegislativa,
tipo=tipo,
numero='165',
ano='2002',
data_apresentacao='2003-01-01',
regime_tramitacao=regime_tramitacao)
# Testa matéria
materia = MateriaLegislativa.objects.first()
assert materia.numero == 165
assert materia.ano == 2002
return materia
@pytest.mark.django_db(transaction=False)
def test_materia_anexada_submit(client):
materia_principal = make_materia_principal()
# Cria a matéria que será anexada
tipo_anexada = mommy.make(TipoMateriaLegislativa,
sigla='T2',
descricao='Teste_2')
regime_tramitacao = mommy.make(RegimeTramitacao, descricao='Teste_Regime')
mommy.make(MateriaLegislativa,
tipo=tipo_anexada,
numero='32',
ano='2004',
data_apresentacao='2005-11-10',
regime_tramitacao=regime_tramitacao)
# Testa se a matéria que será anexada foi criada
materia_anexada = MateriaLegislativa.objects.get(numero=32, ano=2004)
# Testa POST
9 years ago
response = client.post(reverse('materia:anexada_create',
kwargs={'pk': materia_principal.pk}),
{'tipo': materia_anexada.tipo.pk,
'numero': materia_anexada.numero,
'ano': materia_anexada.ano,
'data_anexacao': '2016-03-18',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
# Verifica se a matéria foi anexada corretamente
anexada = Anexada.objects.first()
assert anexada.materia_principal == materia_principal
assert anexada.materia_anexada == materia_anexada
@pytest.mark.django_db(transaction=False)
def test_autoria_submit(client):
materia_principal = make_materia_principal()
# Cria um tipo de Autor
tipo_autor = mommy.make(TipoAutor, descricao='Teste Tipo_Autor')
# Cria um Autor
autor = mommy.make(Autor, tipo=tipo_autor, nome='Autor Teste')
# Testa POST
9 years ago
response = client.post(reverse('materia:autoria_create',
kwargs={'pk': materia_principal.pk}),
{'autor': autor.pk,
'primeiro_autor': True,
'materia_id': materia_principal.pk,
'partido': '',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
# Verifica se o autor foi realmente criado
autoria = Autoria.objects.first()
assert autoria.autor == autor
assert autoria.materia == materia_principal
assert autoria.primeiro_autor is True
@pytest.mark.django_db(transaction=False)
def test_despacho_inicial_submit(client):
materia_principal = make_materia_principal()
# Cria uma comissão
tipo_comissao = mommy.make(TipoComissao)
comissao = mommy.make(Comissao,
tipo=tipo_comissao,
nome='Teste',
sigla='T',
data_criacao='2016-03-18')
# Testa POST
response = client.post(reverse('materia:despachoinicial_create',
kwargs={'pk': materia_principal.pk}),
{'comissao': comissao.pk,
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
# Verifica se o despacho foi criado
despacho = DespachoInicial.objects.first()
assert despacho.comissao == comissao
assert despacho.materia == materia_principal
@pytest.mark.django_db(transaction=False)
def test_numeracao_submit(client):
materia_principal = make_materia_principal()
# Cria dados para inserir na numeração
tipo = mommy.make(TipoMateriaLegislativa,
sigla='T2',
descricao='Teste_2')
# Testa POST
response = client.post(reverse('materia:numeracao',
kwargs={'pk': materia_principal.pk}),
{'tipo_materia': tipo.pk,
'numero_materia': '341',
'ano_materia': 2015,
'data_materia': '2016-03-21',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
# Verifica se a numeração foi criada
numeracao = Numeracao.objects.first()
assert numeracao.tipo_materia == tipo
assert numeracao.ano_materia == 2015
@pytest.mark.django_db(transaction=False)
def test_documento_acessorio_submit(client):
materia_principal = make_materia_principal()
# Cria um tipo de Autor
tipo_autor = mommy.make(TipoAutor, descricao='Teste Tipo_Autor')
# Cria um Autor
autor = mommy.make(Autor, tipo=tipo_autor, nome='Autor Teste')
# Cria um tipo de documento
tipo = mommy.make(TipoDocumento,
descricao='Teste')
# Testa POST
response = client.post(reverse('materia:documento_acessorio',
kwargs={'pk': materia_principal.pk}),
{'tipo': tipo.pk,
'nome': 'teste_nome',
'data_materia': '2016-03-21',
'autor': autor,
'ementa': 'teste_ementa',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
# Verifica se o documento foi criado
doc = DocumentoAcessorio.objects.first()
assert doc.tipo == tipo
assert doc.nome == 'teste_nome'
assert doc.autor == str(autor)
@pytest.mark.django_db(transaction=False)
def test_legislacao_citada_submit(client):
materia_principal = make_materia_principal()
norma = make_norma()
# Testa POST
response = client.post(reverse('materia:legislacao_citada',
kwargs={'pk': materia_principal.pk}),
{'tipo': norma.tipo.pk,
'numero': norma.numero,
'ano': norma.ano,
'disposicao': 'disposicao',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
# Testa se a legislação citada foi criada
leg = LegislacaoCitada.objects.first()
assert leg.norma == norma
@pytest.mark.django_db(transaction=False)
def test_tramitacao_submit(client):
materia_principal = make_materia_principal()
# Cria status para tramitação
status_tramitacao = mommy.make(StatusTramitacao,
indicador='F',
sigla='ST',
descricao='Status_Teste')
# Testa POST
response = client.post(
reverse('materia:tramitacao_materia',
kwargs={'pk': materia_principal.pk}),
{'unidade_tramitacao_local': make_unidade_tramitacao(
'Unidade Local').pk,
'unidade_tramitacao_destino': make_unidade_tramitacao(
'Unidade Destino').pk,
'urgente': True,
'status': status_tramitacao.pk,
'data_tramitacao': '2016-03-21',
'texto': 'Texto_Teste',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
# Testa se a tramitacao foi criada
tramitacao = Tramitacao.objects.first()
assert (tramitacao.unidade_tramitacao_local.comissao.nome ==
'Unidade Local')
assert (tramitacao.unidade_tramitacao_destino.comissao.nome ==
'Unidade Destino')
assert tramitacao.urgente is True
@pytest.mark.django_db(transaction=False)
def test_form_errors_anexada(client):
materia_principal = make_materia_principal()
9 years ago
response = client.post(reverse('materia:anexada_create',
kwargs={'pk': materia_principal.pk}),
{'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_anexacao'] ==
['Este campo é obrigatório.'])
@pytest.mark.django_db(transaction=False)
def test_form_errors_autoria(client):
materia_principal = make_materia_principal()
9 years ago
response = client.post(reverse('materia:autoria_create',
kwargs={'pk': materia_principal.pk}),
{'materia_id': materia_principal.pk,
'partido': '',
'autor': '',
'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['autor'] ==
['Este campo é obrigatório.'])
@pytest.mark.django_db(transaction=False)
def test_form_errors_despacho_inicial(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:despachoinicial_create',
kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['comissao'] ==
['Este campo é obrigatório.'])
@pytest.mark.django_db(transaction=False)
def test_form_errors_documento_acessorio(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:documento_acessorio',
kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['tipo'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['nome'] ==
['Este campo é obrigatório.'])
@pytest.mark.django_db(transaction=False)
def test_form_errors_legislacao_citada(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:legislacao_citada',
kwargs={'pk': materia_principal.pk}),
{'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.'])
@pytest.mark.django_db(transaction=False)
def test_form_errors_numeracao(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:numeracao',
kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['tipo_materia'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['numero_materia'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['ano_materia'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['data_materia'] ==
['Este campo é obrigatório.'])
@pytest.mark.django_db(transaction=False)
def test_form_errors_tramitacao(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:tramitacao_materia',
kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['data_tramitacao'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors[
'unidade_tramitacao_local'] == ['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['status'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors[
'unidade_tramitacao_destino'] == ['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['texto'] ==
['Este campo é obrigatório.'])
@pytest.mark.django_db(transaction=False)
def test_form_errors_relatoria(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:relatoria',
kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['data_designacao_relator'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['parlamentar'] ==
['Este campo é obrigatório.'])
@pytest.mark.django_db(transaction=False)
def test_proposicao_submit(client):
response = client.post(reverse('materia:adicionar_proposicao'),
{'tipo': mommy.make(TipoProposicao, pk=3).pk,
'descricao': 'Teste proposição',
'salvar': 'salvar'},
follow=True)
assert response.status_code == 200
proposicao = Proposicao.objects.first()
assert proposicao.descricao == 'Teste proposição'
assert proposicao.tipo.pk == 3
@pytest.mark.django_db(transaction=False)
def test_form_errors_proposicao(client):
response = client.post(reverse('materia:adicionar_proposicao'),
{'salvar': 'salvar'},
follow=True)
assert (response.context_data['form'].errors['tipo'] ==
['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['descricao'] ==
['Este campo é obrigatório.'])