mirror of https://github.com/interlegis/sapl.git
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.
963 lines
36 KiB
963 lines
36 KiB
from datetime import date
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
|
from django.urls import reverse
|
|
from django.db.models import Max
|
|
from model_bakery import baker
|
|
import pytest
|
|
|
|
from sapl.base.models import Autor, TipoAutor, AppConfig
|
|
from sapl.comissoes.models import Comissao, TipoComissao
|
|
from sapl.materia.models import (Anexada, Autoria, DespachoInicial,
|
|
DocumentoAcessorio, MateriaLegislativa,
|
|
Numeracao, Proposicao, RegimeTramitacao,
|
|
StatusTramitacao, TipoDocumento,
|
|
TipoMateriaLegislativa, TipoProposicao,
|
|
Tramitacao, UnidadeTramitacao)
|
|
from sapl.materia.forms import (TramitacaoForm, compara_tramitacoes_mat,
|
|
TramitacaoUpdateForm)
|
|
from sapl.norma.models import (LegislacaoCitada, NormaJuridica,
|
|
TipoNormaJuridica)
|
|
from sapl.parlamentares.models import Legislatura
|
|
from sapl.utils import models_with_gr_for_model, lista_anexados
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_lista_materias_anexadas():
|
|
tipo_materia = baker.make(
|
|
TipoMateriaLegislativa,
|
|
descricao="Tipo_Teste"
|
|
)
|
|
regime_tramitacao = baker.make(
|
|
RegimeTramitacao,
|
|
descricao="Regime_Teste"
|
|
)
|
|
materia_principal = baker.make(
|
|
MateriaLegislativa,
|
|
numero=20,
|
|
ano=2018,
|
|
data_apresentacao="2018-01-04",
|
|
regime_tramitacao=regime_tramitacao,
|
|
tipo=tipo_materia
|
|
)
|
|
materia_anexada = baker.make(
|
|
MateriaLegislativa,
|
|
numero=21,
|
|
ano=2019,
|
|
data_apresentacao="2019-05-04",
|
|
regime_tramitacao=regime_tramitacao,
|
|
tipo=tipo_materia
|
|
)
|
|
materia_anexada_anexada = baker.make(
|
|
MateriaLegislativa,
|
|
numero=22,
|
|
ano=2020,
|
|
data_apresentacao="2020-01-05",
|
|
regime_tramitacao=regime_tramitacao,
|
|
tipo=tipo_materia
|
|
)
|
|
|
|
baker.make(
|
|
Anexada,
|
|
materia_principal=materia_principal,
|
|
materia_anexada=materia_anexada,
|
|
data_anexacao="2019-05-11"
|
|
)
|
|
baker.make(
|
|
Anexada,
|
|
materia_principal=materia_anexada,
|
|
materia_anexada=materia_anexada_anexada,
|
|
data_anexacao="2020-11-05"
|
|
)
|
|
|
|
lista = lista_anexados(materia_principal)
|
|
|
|
assert len(lista) == 2
|
|
assert lista[0] == materia_anexada
|
|
assert lista[1] == materia_anexada_anexada
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_lista_materias_anexadas_ciclo():
|
|
tipo_materia = baker.make(
|
|
TipoMateriaLegislativa,
|
|
descricao="Tipo_Teste"
|
|
)
|
|
regime_tramitacao = baker.make(
|
|
RegimeTramitacao,
|
|
descricao="Regime_Teste"
|
|
)
|
|
materia_principal = baker.make(
|
|
MateriaLegislativa,
|
|
numero=20,
|
|
ano=2018,
|
|
data_apresentacao="2018-01-04",
|
|
regime_tramitacao=regime_tramitacao,
|
|
tipo=tipo_materia
|
|
)
|
|
materia_anexada = baker.make(
|
|
MateriaLegislativa,
|
|
numero=21,
|
|
ano=2019,
|
|
data_apresentacao="2019-05-04",
|
|
regime_tramitacao=regime_tramitacao,
|
|
tipo=tipo_materia
|
|
)
|
|
|
|
baker.make(
|
|
Anexada,
|
|
materia_principal=materia_principal,
|
|
materia_anexada=materia_anexada,
|
|
data_anexacao="2019-05-11"
|
|
)
|
|
baker.make(
|
|
Anexada,
|
|
materia_principal=materia_anexada,
|
|
materia_anexada=materia_principal,
|
|
data_anexacao="2020-11-05"
|
|
)
|
|
|
|
lista = lista_anexados(materia_principal)
|
|
|
|
assert len(lista) == 1
|
|
assert lista[0] == materia_anexada
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def make_unidade_tramitacao(descricao):
|
|
# Cria uma comissão para ser a unidade de tramitação
|
|
tipo_comissao = baker.make(TipoComissao)
|
|
comissao = baker.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 = baker.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 = baker.make(TipoNormaJuridica,
|
|
sigla='T1',
|
|
descricao='Teste_Tipo_Norma')
|
|
baker.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 = baker.make(RegimeTramitacao, descricao='Teste_Regime')
|
|
|
|
# Cria a matéria principal
|
|
tipo = baker.make(TipoMateriaLegislativa,
|
|
sigla='T1',
|
|
descricao='Teste_MateriaLegislativa')
|
|
baker.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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
# Cria a matéria que será anexada
|
|
tipo_anexada = baker.make(TipoMateriaLegislativa,
|
|
sigla='T2',
|
|
descricao='Teste_2')
|
|
regime_tramitacao = baker.make(RegimeTramitacao, descricao='Teste_Regime')
|
|
baker.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
|
|
response = admin_client.post(reverse('sapl.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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
# Cria um tipo de Autor
|
|
tipo_autor = baker.make(TipoAutor, descricao='Teste Tipo_Autor')
|
|
|
|
# Cria um Autor
|
|
autor = baker.make(
|
|
Autor,
|
|
tipo=tipo_autor,
|
|
nome='Autor Teste')
|
|
|
|
# Testa POST
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:autoria_create',
|
|
kwargs={'pk': materia_principal.pk}),
|
|
{'autor': autor.pk,
|
|
'tipo_autor': tipo_autor.pk,
|
|
'primeiro_autor': True,
|
|
'materia_id': materia_principal.pk, },
|
|
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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
# Cria uma comissão
|
|
tipo_comissao = baker.make(TipoComissao)
|
|
comissao = baker.make(Comissao,
|
|
tipo=tipo_comissao,
|
|
nome='Teste',
|
|
ativa=True,
|
|
sigla='T',
|
|
data_criacao='2016-03-18')
|
|
|
|
# Testa POST
|
|
response = admin_client.post(reverse('sapl.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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
materia = make_materia_principal()
|
|
|
|
# Testa POST
|
|
response = admin_client.post(reverse('sapl.materia:numeracao_create',
|
|
kwargs={'pk': materia_principal.pk}),
|
|
{'tipo_materia': materia.tipo.pk,
|
|
'numero_materia': materia.numero,
|
|
'ano_materia': materia.ano,
|
|
'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 == materia.tipo
|
|
assert numeracao.ano_materia == materia.ano
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_documento_acessorio_submit(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
# Cria um tipo de Autor
|
|
tipo_autor = baker.make(TipoAutor, descricao='Teste Tipo_Autor')
|
|
|
|
# Cria um Autor
|
|
autor = baker.make(
|
|
Autor,
|
|
tipo=tipo_autor,
|
|
nome='Autor Teste')
|
|
|
|
# Cria um tipo de documento
|
|
tipo = baker.make(TipoDocumento,
|
|
descricao='Teste')
|
|
|
|
# Testa POST
|
|
response = admin_client.post(reverse(
|
|
'sapl.materia:documentoacessorio_create',
|
|
kwargs={'pk': materia_principal.pk}),
|
|
{'tipo': tipo.pk,
|
|
'nome': 'teste_nome',
|
|
'data_materia': '2016-03-21',
|
|
'autor': autor,
|
|
'ementa': 'teste_ementa',
|
|
'data': '2016-03-21',
|
|
'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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
norma = make_norma()
|
|
|
|
# Testa POST
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:legislacaocitada_create',
|
|
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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
# Cria status para tramitação
|
|
status_tramitacao = baker.make(StatusTramitacao,
|
|
indicador='F',
|
|
sigla='ST',
|
|
descricao='Status_Teste')
|
|
# Testa POST
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:tramitacao_create',
|
|
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',
|
|
'data_fim_prazo': '2016-03-22',
|
|
'data_encaminhamento': '2016-03-22',
|
|
'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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
response = admin_client.post(reverse('sapl.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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
response = admin_client.post(reverse('sapl.materia:autoria_create',
|
|
kwargs={'pk': materia_principal.pk}),
|
|
{'materia_id': materia_principal.pk,
|
|
'autor_id': '', },
|
|
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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
response = admin_client.post(reverse('sapl.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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:documentoacessorio_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['nome'] ==
|
|
['Este campo é obrigatório.'])
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_errors_legislacao_citada(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:legislacaocitada_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.'])
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_errors_numeracao(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
response = admin_client.post(reverse('sapl.materia:numeracao_create',
|
|
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(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:tramitacao_create',
|
|
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.'])
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_errors_relatoria(admin_client):
|
|
materia_principal = make_materia_principal()
|
|
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:relatoria_create',
|
|
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(admin_client):
|
|
tipo_autor = baker.make(TipoAutor, descricao='Teste Tipo_Autor')
|
|
user = get_user_model().objects.filter(is_active=True)[0]
|
|
|
|
autor = baker.make(
|
|
Autor,
|
|
user=user,
|
|
tipo=tipo_autor,
|
|
nome='Autor Teste')
|
|
|
|
file_content = 'file_content'
|
|
texto = SimpleUploadedFile("file.txt", file_content.encode('UTF-8'))
|
|
|
|
mcts = ContentType.objects.get_for_models(
|
|
*models_with_gr_for_model(TipoProposicao))
|
|
|
|
for pk, mct in enumerate(mcts):
|
|
tipo_conteudo_related = baker.make(mct, pk=pk + 1)
|
|
|
|
response = admin_client.post(
|
|
reverse('sapl.materia:proposicao_create'),
|
|
{'tipo': baker.make(
|
|
TipoProposicao, pk=3,
|
|
tipo_conteudo_related=tipo_conteudo_related).pk,
|
|
'descricao': 'Teste proposição',
|
|
'justificativa_devolucao': ' ',
|
|
'status': 'E',
|
|
'autor': autor.pk,
|
|
'texto_original': texto,
|
|
'salvar': 'salvar',
|
|
'receber_recibo': 'True',
|
|
},
|
|
follow=True)
|
|
|
|
assert response.status_code == 200
|
|
|
|
proposicao = Proposicao.objects.first()
|
|
|
|
assert proposicao is not None
|
|
assert proposicao.descricao == 'Teste proposição'
|
|
assert proposicao.tipo.pk == 3
|
|
assert proposicao.tipo.tipo_conteudo_related.pk == pk + 1
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_errors_proposicao(admin_client):
|
|
tipo_autor = baker.make(TipoAutor, descricao='Teste Tipo_Autor')
|
|
|
|
user = get_user_model().objects.filter(is_active=True)[0]
|
|
|
|
autor = baker.make(
|
|
Autor,
|
|
user=user,
|
|
tipo=tipo_autor,
|
|
nome='Autor Teste')
|
|
|
|
file_content = 'file_content'
|
|
texto = SimpleUploadedFile("file.txt", file_content.encode('UTF-8'))
|
|
|
|
response = admin_client.post(reverse('sapl.materia:proposicao_create'),
|
|
{'autor': autor.pk,
|
|
'justificativa_devolucao': ' ',
|
|
'texto_original': texto,
|
|
'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.'])
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_numeracao_materia_legislativa_por_legislatura(admin_client):
|
|
|
|
# Criar Legislaturas
|
|
legislatura1 = baker.make(Legislatura,
|
|
data_inicio='2014-01-01',
|
|
data_fim='2018-12-31',
|
|
numero=20,
|
|
data_eleicao='2013-10-15'
|
|
)
|
|
legislatura2 = baker.make(Legislatura,
|
|
data_inicio='2009-01-01',
|
|
data_fim='2013-12-31',
|
|
numero=21,
|
|
data_eleicao='2018-10-15'
|
|
)
|
|
|
|
# Cria uma materia na legislatura1
|
|
tipo_materia = baker.make(TipoMateriaLegislativa,
|
|
id=1, sequencia_numeracao='L')
|
|
materia = baker.make(MateriaLegislativa,
|
|
tipo=tipo_materia,
|
|
ano=2017,
|
|
numero=1,
|
|
data_apresentacao='2017-03-05'
|
|
)
|
|
|
|
url = reverse('sapl.materia:recuperar_materia')
|
|
|
|
# Testa numeração do Materia Legislativa na Legislatura1
|
|
query_params = '?tipo={}&ano={}'.format(materia.tipo.id, materia.ano)
|
|
response = admin_client.get(url + query_params, follow=True)
|
|
response_content = eval(response.content.decode('ascii'))
|
|
esperado_legislatura1 = eval('{"numero": 2, "ano": "2017"}')
|
|
assert response_content['numero'] == esperado_legislatura1['numero']
|
|
|
|
# Testa numeração do Materia Legislativa na Legislatura2
|
|
query_params = '?tipo={}&ano={}'.format(1, '2010')
|
|
response = admin_client.get(url + query_params, follow=True)
|
|
response_content = eval(response.content.decode('ascii'))
|
|
esperado_legislatura2 = eval('{"ano": "2010", "numero": 1}')
|
|
assert response_content['numero'] == esperado_legislatura2['numero']
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_numeracao_materia_legislativa_por_ano(admin_client):
|
|
|
|
# Cria uma materia
|
|
tipo_materia = baker.make(TipoMateriaLegislativa,
|
|
id=1, sequencia_numeracao='A')
|
|
materia = baker.make(MateriaLegislativa,
|
|
tipo=tipo_materia,
|
|
ano=2017,
|
|
numero=1
|
|
)
|
|
|
|
url = reverse('sapl.materia:recuperar_materia')
|
|
|
|
# Testa numeração da Materia Legislativa no ano da materia criada
|
|
query_params = '?tipo={}&ano={}'.format(materia.tipo.id, materia.ano)
|
|
response = admin_client.get(url + query_params, follow=True)
|
|
response_content = eval(response.content.decode('ascii'))
|
|
esperado_ano = eval('{"numero": 2, "ano": "2017"}')
|
|
assert response_content['numero'] == esperado_ano['numero']
|
|
|
|
# Testa numeração da Materia Legislativa de outro ano
|
|
query_params = '?tipo={}&ano={}'.format(1, '2010')
|
|
response = admin_client.get(url + query_params, follow=True)
|
|
response_content = eval(response.content.decode('ascii'))
|
|
esperado_outro_ano = eval('{"ano": "2010", "numero": 1}')
|
|
assert response_content['numero'] == esperado_outro_ano['numero']
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_tramitacoes_materias_anexadas(admin_client):
|
|
config = baker.make(AppConfig, tramitacao_materia=True)
|
|
|
|
tipo_materia = baker.make(
|
|
TipoMateriaLegislativa,
|
|
descricao="Tipo_Teste"
|
|
)
|
|
materia_principal = baker.make(
|
|
MateriaLegislativa,
|
|
ano=2018,
|
|
data_apresentacao="2018-01-04",
|
|
tipo=tipo_materia
|
|
)
|
|
materia_anexada = baker.make(
|
|
MateriaLegislativa,
|
|
ano=2019,
|
|
data_apresentacao="2019-05-04",
|
|
tipo=tipo_materia
|
|
)
|
|
materia_anexada_anexada = baker.make(
|
|
MateriaLegislativa,
|
|
ano=2020,
|
|
data_apresentacao="2020-01-05",
|
|
tipo=tipo_materia
|
|
)
|
|
|
|
baker.make(
|
|
Anexada,
|
|
materia_principal=materia_principal,
|
|
materia_anexada=materia_anexada,
|
|
data_anexacao="2019-05-11"
|
|
)
|
|
baker.make(
|
|
Anexada,
|
|
materia_principal=materia_anexada,
|
|
materia_anexada=materia_anexada_anexada,
|
|
data_anexacao="2020-11-05"
|
|
)
|
|
|
|
|
|
unidade_tramitacao_local_1 = make_unidade_tramitacao(descricao="Teste 1")
|
|
unidade_tramitacao_destino_1 = make_unidade_tramitacao(descricao="Teste 2")
|
|
unidade_tramitacao_destino_2 = make_unidade_tramitacao(descricao="Teste 3")
|
|
|
|
status = baker.make(
|
|
StatusTramitacao,
|
|
indicador='R')
|
|
|
|
# Teste criação de Tramitacao
|
|
form = TramitacaoForm(data={})
|
|
form.data = {'data_tramitacao':date(2019, 5, 6),
|
|
'unidade_tramitacao_local':unidade_tramitacao_local_1.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk,
|
|
'status':status.pk,
|
|
'urgente': False,
|
|
'texto': "Texto de teste"}
|
|
form.instance.materia_id=materia_principal.pk
|
|
|
|
assert form.is_valid()
|
|
|
|
tramitacao_principal = form.save()
|
|
tramitacao_anexada = materia_anexada.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
# Verifica se foram criadas as tramitações para as matérias anexadas e anexadas às anexadas
|
|
assert materia_principal.tramitacao_set.last() == tramitacao_principal
|
|
assert tramitacao_principal.materia.em_tramitacao == (tramitacao_principal.status.indicador != "F")
|
|
assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada)
|
|
assert MateriaLegislativa.objects.get(id=materia_anexada.pk).em_tramitacao \
|
|
== (tramitacao_anexada.status.indicador != "F")
|
|
assert compara_tramitacoes_mat(tramitacao_anexada_anexada, tramitacao_principal)
|
|
assert MateriaLegislativa.objects.get(id=materia_anexada_anexada.pk).em_tramitacao \
|
|
== (tramitacao_anexada_anexada.status.indicador != "F")
|
|
|
|
|
|
# Teste Edição de Tramitacao
|
|
form = TramitacaoUpdateForm(data={})
|
|
# Alterando unidade_tramitacao_destino
|
|
form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao,
|
|
'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk,
|
|
'status':tramitacao_principal.status.pk,
|
|
'urgente': tramitacao_principal.urgente,
|
|
'texto': tramitacao_principal.texto}
|
|
form.instance = tramitacao_principal
|
|
|
|
assert form.is_valid()
|
|
tramitacao_principal = form.save()
|
|
tramitacao_anexada = materia_anexada.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
assert tramitacao_anexada_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
|
|
|
|
# Teste Remoção de Tramitacao
|
|
url = reverse('sapl.materia:tramitacao_delete',
|
|
kwargs={'pk': tramitacao_principal.pk})
|
|
response = admin_client.post(url, {'confirmar':'confirmar'} ,follow=True)
|
|
assert Tramitacao.objects.filter(id=tramitacao_principal.pk).count() == 0
|
|
assert Tramitacao.objects.filter(id=tramitacao_anexada.pk).count() == 0
|
|
assert Tramitacao.objects.filter(id=tramitacao_anexada_anexada.pk).count() == 0
|
|
|
|
|
|
# Testes para quando as tramitações das anexadas divergem
|
|
form = TramitacaoForm(data={})
|
|
form.data = {'data_tramitacao':date(2019, 5, 6),
|
|
'unidade_tramitacao_local':unidade_tramitacao_local_1.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk,
|
|
'status':status.pk,
|
|
'urgente': False,
|
|
'texto': "Texto de teste"}
|
|
form.instance.materia_id=materia_principal.pk
|
|
|
|
assert form.is_valid()
|
|
|
|
tramitacao_principal = form.save()
|
|
tramitacao_anexada = materia_anexada.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
form = TramitacaoUpdateForm(data={})
|
|
# Alterando unidade_tramitacao_destino
|
|
form.data = {'data_tramitacao':tramitacao_anexada.data_tramitacao,
|
|
'unidade_tramitacao_local':tramitacao_anexada.unidade_tramitacao_local.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk,
|
|
'status':tramitacao_anexada.status.pk,
|
|
'urgente': tramitacao_anexada.urgente,
|
|
'texto': tramitacao_anexada.texto}
|
|
form.instance = tramitacao_anexada
|
|
|
|
assert form.is_valid()
|
|
|
|
tramitacao_anexada = form.save()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_1
|
|
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
assert tramitacao_anexada_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
|
|
# Editando a tramitação principal, as tramitações anexadas não devem ser editadas
|
|
form = TramitacaoUpdateForm(data={})
|
|
# Alterando o texto
|
|
form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao,
|
|
'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk,
|
|
'unidade_tramitacao_destino':tramitacao_principal.unidade_tramitacao_destino.pk,
|
|
'status':tramitacao_principal.status.pk,
|
|
'urgente': tramitacao_principal.urgente,
|
|
'texto': "Testando a alteração"}
|
|
form.instance = tramitacao_principal
|
|
|
|
assert form.is_valid()
|
|
tramitacao_principal = form.save()
|
|
tramitacao_anexada = materia_anexada.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
assert tramitacao_principal.texto == "Testando a alteração"
|
|
assert not tramitacao_anexada.texto == "Testando a alteração"
|
|
assert not tramitacao_anexada_anexada.texto == "Testando a alteração"
|
|
|
|
# Removendo a tramitação pricipal, as tramitações anexadas não devem ser removidas, pois divergiram
|
|
url = reverse('sapl.materia:tramitacao_delete',
|
|
kwargs={'pk': tramitacao_principal.pk})
|
|
response = admin_client.post(url, {'confirmar':'confirmar'} ,follow=True)
|
|
assert Tramitacao.objects.filter(id=tramitacao_principal.pk).count() == 0
|
|
assert Tramitacao.objects.filter(id=tramitacao_anexada.pk).count() == 1
|
|
assert Tramitacao.objects.filter(id=tramitacao_anexada_anexada.pk).count() == 1
|
|
|
|
# Removendo a tramitação anexada, a tramitação anexada à anexada deve ser removida
|
|
url = reverse('sapl.materia:tramitacao_delete',
|
|
kwargs={'pk': tramitacao_anexada.pk})
|
|
response = admin_client.post(url, {'confirmar':'confirmar'} ,follow=True)
|
|
assert Tramitacao.objects.filter(id=tramitacao_anexada.pk).count() == 0
|
|
assert Tramitacao.objects.filter(id=tramitacao_anexada_anexada.pk).count() == 0
|
|
|
|
|
|
# Agora testando para caso não seja desejado tramitar as matérias anexadas
|
|
# junto com as matérias principais
|
|
|
|
assert Tramitacao.objects.all().count() == 0
|
|
|
|
config.tramitacao_materia = False
|
|
config.save()
|
|
|
|
# Teste criação de Tramitacao
|
|
form = TramitacaoForm(data={})
|
|
form.data = {'data_tramitacao':date(2019, 5, 6),
|
|
'unidade_tramitacao_local':unidade_tramitacao_local_1.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk,
|
|
'status':status.pk,
|
|
'urgente': False,
|
|
'texto': "Texto de teste"}
|
|
form.instance.materia_id=materia_principal.pk
|
|
|
|
assert form.is_valid()
|
|
|
|
tramitacao_principal = form.save()
|
|
tramitacao_anexada = materia_anexada.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
# Deve ser criada tramitação apenas para a matéria principal
|
|
assert materia_principal.tramitacao_set.last() == tramitacao_principal
|
|
assert not tramitacao_anexada
|
|
assert not tramitacao_anexada_anexada
|
|
|
|
|
|
# Criação de uma tramitação igual para a anexada à principal para testar a edição
|
|
form = TramitacaoForm(data={})
|
|
form.data = {'data_tramitacao':date(2019, 5, 6),
|
|
'unidade_tramitacao_local':unidade_tramitacao_local_1.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_1.pk,
|
|
'status':status.pk,
|
|
'urgente': False,
|
|
'texto': "Texto de teste"}
|
|
form.instance.materia_id=materia_anexada.pk
|
|
|
|
assert form.is_valid()
|
|
|
|
tramitacao_anexada = form.save()
|
|
tramitacao_principal = materia_principal.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
assert materia_anexada.tramitacao_set.last() == tramitacao_anexada
|
|
assert materia_principal.tramitacao_set.all().count() == 1
|
|
assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada)
|
|
assert not tramitacao_anexada_anexada
|
|
|
|
# Teste Edição de Tramitacao
|
|
form = TramitacaoUpdateForm(data={})
|
|
# Alterando unidade_tramitacao_destino
|
|
form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao,
|
|
'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk,
|
|
'status':tramitacao_principal.status.pk,
|
|
'urgente': tramitacao_principal.urgente,
|
|
'texto': tramitacao_principal.texto}
|
|
form.instance = tramitacao_principal
|
|
|
|
assert form.is_valid()
|
|
tramitacao_principal = form.save()
|
|
tramitacao_anexada = materia_anexada.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_1
|
|
assert not tramitacao_anexada_anexada
|
|
|
|
# Alterando a tramitação anexada para testar a remoção de tramitações
|
|
# Alterando unidade_tramitacao_destino
|
|
form = TramitacaoUpdateForm(data={})
|
|
form.data = {'data_tramitacao':tramitacao_principal.data_tramitacao,
|
|
'unidade_tramitacao_local':tramitacao_principal.unidade_tramitacao_local.pk,
|
|
'unidade_tramitacao_destino':unidade_tramitacao_destino_2.pk,
|
|
'status':tramitacao_principal.status.pk,
|
|
'urgente': tramitacao_principal.urgente,
|
|
'texto': tramitacao_principal.texto}
|
|
form.instance = tramitacao_anexada
|
|
|
|
assert form.is_valid()
|
|
tramitacao_anexada = form.save()
|
|
tramitacao_principal = materia_principal.tramitacao_set.last()
|
|
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last()
|
|
|
|
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2
|
|
assert not tramitacao_anexada_anexada
|
|
assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada)
|
|
|
|
# Testando a remoção
|
|
# Removendo a tramitação pricipal, as tramitações anexadas não devem ser removidas
|
|
url = reverse('sapl.materia:tramitacao_delete',
|
|
kwargs={'pk': tramitacao_principal.pk})
|
|
response = admin_client.post(url, {'confirmar':'confirmar'} ,follow=True)
|
|
assert Tramitacao.objects.filter(id=tramitacao_principal.pk).count() == 0
|
|
assert Tramitacao.objects.filter(id=tramitacao_anexada.pk).count() == 1
|