diff --git a/sapl/audiencia/tests/test_audiencia.py b/sapl/audiencia/tests/test_audiencia.py index 5640b3d0d..b7c2e26a8 100644 --- a/sapl/audiencia/tests/test_audiencia.py +++ b/sapl/audiencia/tests/test_audiencia.py @@ -1,11 +1,62 @@ import pytest -from django.utils.translation import ugettext as _ +import datetime from model_mommy import mommy +from django.utils.translation import ugettext as _ from sapl.audiencia import forms -from sapl.audiencia.models import TipoAudienciaPublica +from sapl.audiencia.models import AnexoAudienciaPublica +from sapl.audiencia.models import TipoAudienciaPublica, AudienciaPublica from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa + +@pytest.mark.django_db(transaction=False) +def test_tipo_audiencia_publica_model(): + mommy.make(TipoAudienciaPublica, + nome='Teste_Nome_Tipo_Audiencia_Publica', + tipo='A') + + tipo_audiencia_publica = TipoAudienciaPublica.objects.first() + assert tipo_audiencia_publica.nome == 'Teste_Nome_Tipo_Audiencia_Publica' + assert tipo_audiencia_publica.tipo == 'A' + + +@pytest.mark.django_db(transaction=False) +def test_audiencia_publica_model(): + mommy.make(AudienciaPublica, + numero=1, + nome='Teste_Nome_Audiencia_Publica', + tema='Teste_Tema_Audiencia_Publica', + data='2016-03-21', + hora_inicio='16:03') + + audiencia_publica = AudienciaPublica.objects.first() + + data = '2016-03-21' + teste_data = datetime.datetime.strptime(data, "%Y-%m-%d").date() + + assert audiencia_publica.numero == 1 + assert audiencia_publica.nome == 'Teste_Nome_Audiencia_Publica' + assert audiencia_publica.tema == 'Teste_Tema_Audiencia_Publica' + assert audiencia_publica.data == teste_data + assert audiencia_publica.hora_inicio == '16:03' + + +@pytest.mark.django_db(transaction=False) +def test_anexo_audiencia_publica_model(): + audiencia = mommy.make(AudienciaPublica, + numero=2, + nome='Nome_Audiencia_Publica', + tema='Tema_Audiencia_Publica', + data='2017-04-22', + hora_inicio='17:04') + + mommy.make(AnexoAudienciaPublica, + audiencia=audiencia) + + anexo_audiencia_publica = AnexoAudienciaPublica.objects.first() + assert anexo_audiencia_publica.audiencia == audiencia + + @pytest.mark.django_db(transaction=False) def test_valida_campos_obrigatorios_audiencia_form(): form = forms.AudienciaForm(data={}) @@ -35,7 +86,5 @@ def test_audiencia_form_hora_invalida(): 'data': '2016-10-01', 'hora_inicio': '10:00', 'hora_fim': '9:00', - }) + }) assert not form.is_valid() - - \ No newline at end of file diff --git a/sapl/base/tests/test_base.py b/sapl/base/tests/test_base.py new file mode 100644 index 000000000..296a241af --- /dev/null +++ b/sapl/base/tests/test_base.py @@ -0,0 +1,24 @@ +import pytest +from model_mommy import mommy + +from sapl.base.models import CasaLegislativa + + +@pytest.mark.django_db(transaction=False) +def test_casa_legislativa_model(): + mommy.make(CasaLegislativa, + nome='Teste_Nome_Casa_Legislativa', + sigla='TSCL', + endereco='Teste_Endereço_Casa_Legislativa', + cep='12345678', + municipio='Teste_Municipio_Casa_Legislativa', + uf='DF') + + casa_legislativa = CasaLegislativa.objects.first() + + assert casa_legislativa.nome == 'Teste_Nome_Casa_Legislativa' + assert casa_legislativa.sigla == 'TSCL' + assert casa_legislativa.endereco == 'Teste_Endereço_Casa_Legislativa' + assert casa_legislativa.cep == '12345678' + assert casa_legislativa.municipio == 'Teste_Municipio_Casa_Legislativa' + assert casa_legislativa.uf == 'DF' diff --git a/sapl/base/tests/test_view_base.py b/sapl/base/tests/test_view_base.py index fc61ac160..77880f91d 100644 --- a/sapl/base/tests/test_view_base.py +++ b/sapl/base/tests/test_view_base.py @@ -1,7 +1,423 @@ import pytest +from model_mommy import mommy from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ +from sapl.base.models import Autor, TipoAutor +from sapl.comissoes.models import Comissao, TipoComissao +from sapl.sessao.models import Bancada +from sapl.protocoloadm.models import Protocolo +from sapl.materia.models import (TipoMateriaLegislativa, RegimeTramitacao, + MateriaLegislativa) +from sapl.parlamentares.models import (Parlamentar, Partido, Filiacao, + Legislatura, Mandato) + +from sapl.base.views import (protocolos_duplicados, protocolos_com_materias, + materias_protocolo_inexistente, + mandato_sem_data_inicio, parlamentares_duplicados, + parlamentares_mandatos_intersecao, + parlamentares_filiacoes_intersecao, + autores_duplicados, + bancada_comissao_autor_externo) + + +@pytest.mark.django_db(transaction=False) +def test_lista_protocolos_duplicados(): + mommy.make( + Protocolo, + numero=15, + ano=2031 + ) + mommy.make( + Protocolo, + numero=15, + ano=2031 + ) + mommy.make( + Protocolo, + numero=33, + ano=2033 + ) + + lista_protocolos_duplicados = protocolos_duplicados() + + assert len(lista_protocolos_duplicados) == 1 + assert lista_protocolos_duplicados[0][1] == 2 + assert lista_protocolos_duplicados[0][0].numero == 15 + assert lista_protocolos_duplicados[0][0].ano == 2031 + + +@pytest.mark.django_db(transaction=False) +def test_lista_protocolos_com_materias(): + mommy.make( + Protocolo, + numero=15, + ano=2035 + ) + mommy.make( + Protocolo, + numero=33, + ano=2035 + ) + + tipo_materia = mommy.make( + TipoMateriaLegislativa, + descricao="Tipo_Materia_Teste" + ) + regime_tramitacao = mommy.make( + RegimeTramitacao, + descricao="Regime_Tramitacao_Teste" + ) + mommy.make( + MateriaLegislativa, + numero=16, + ano=2035, + data_apresentacao='2035-06-02', + regime_tramitacao=regime_tramitacao, + tipo=tipo_materia, + numero_protocolo=15 + ) + mommy.make( + MateriaLegislativa, + numero=17, + ano=2035, + data_apresentacao='2035-06-05', + regime_tramitacao=regime_tramitacao, + tipo=tipo_materia, + numero_protocolo=15 + ) + + lista_protocolos_com_materias = protocolos_com_materias() + + assert len(lista_protocolos_com_materias) == 1 + assert lista_protocolos_com_materias[0][1] == 2 + assert lista_protocolos_com_materias[0][0].numero_protocolo == 15 + assert lista_protocolos_com_materias[0][0].ano == 2035 + + +@pytest.mark.django_db(transaction=False) +def test_lista_materias_protocolo_inexistente(): + protocolo_a = mommy.make( + Protocolo, + numero=15, + ano=2031 + ) + + tipo_materia = mommy.make( + TipoMateriaLegislativa, + descricao="Tipo_Materia_Teste" + ) + regime_tramitacao = mommy.make( + RegimeTramitacao, + descricao="Regime_Tramitacao_Teste" + ) + mommy.make( + MateriaLegislativa, + numero=16, + ano=2031, + data_apresentacao='2031-06-02', + regime_tramitacao=regime_tramitacao, + tipo=tipo_materia, + numero_protocolo=15 + ) + materia = mommy.make( + MateriaLegislativa, + numero=17, + ano=2031, + data_apresentacao='2031-06-02', + regime_tramitacao=regime_tramitacao, + tipo=tipo_materia, + numero_protocolo=16 + ) + + lista_materias_protocolo_inexistente = materias_protocolo_inexistente() + + assert len(lista_materias_protocolo_inexistente) == 1 + assert lista_materias_protocolo_inexistente == [(materia, 2031, 16)] + + +@pytest.mark.django_db(transaction=False) +def test_lista_mandatos_sem_data_inicio(): + parlamentar = mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste", + nome_parlamentar="Nome_Parlamentar_Teste", + sexo='M' + ) + legislatura = mommy.make( + Legislatura, + numero=1, + data_inicio='2015-05-02', + data_fim='2024-02-04', + data_eleicao='2015-02-05' + ) + + mandato_a = mommy.make( + Mandato, + parlamentar=parlamentar, + legislatura=legislatura + ) + mommy.make( + Mandato, + parlamentar=parlamentar, + legislatura=legislatura, + data_inicio_mandato='2015-05-27' + ) + + lista_mandatos_sem_data_inicio = mandato_sem_data_inicio() + + assert len(lista_mandatos_sem_data_inicio) == 1 + assert lista_mandatos_sem_data_inicio[0] == mandato_a + + +@pytest.mark.django_db(transaction=False) +def test_lista_parlamentares_duplicados(): + mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste", + nome_parlamentar="Nome_Parlamentar_Teste", + sexo='M' + ) + mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste", + nome_parlamentar="Nome_Parlamentar_Teste", + sexo='M' + ) + mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste-1", + nome_parlamentar="Nome_Parlamentar_Teste-1", + sexo='M' + ) + + lista_dict_values_parlamentares_duplicados = parlamentares_duplicados() + parlamentar_duplicado = list( + lista_dict_values_parlamentares_duplicados[0] + ) + parlamentar_duplicado.sort(key=str) + + assert len(lista_dict_values_parlamentares_duplicados) == 1 + assert parlamentar_duplicado == [2, "Nome_Parlamentar_Teste"] + + +@pytest.mark.django_db(transaction=False) +def test_lista_parlamentares_mandatos_intersecao(): + legislatura = mommy.make( + Legislatura, + numero=1, + data_inicio='2017-07-04', + data_fim='2170-05-01', + data_eleicao='2017-04-07' + ) + parlamentar_a = mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste", + nome_parlamentar="Nome_Parlamentar_Teste", + sexo='M' + ) + parlamentar_b = mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste-1", + nome_parlamentar="Nome_Parlamentar_Teste-1", + sexo='M' + ) + + mandato_a = mommy.make( + Mandato, + parlamentar=parlamentar_a, + legislatura=legislatura, + data_inicio_mandato='2017-07-08', + data_fim_mandato='2018-01-07' + ) + mandato_b = mommy.make( + Mandato, + parlamentar=parlamentar_a, + legislatura=legislatura, + data_inicio_mandato='2017-07-09' + ) + mommy.make( + Mandato, + parlamentar=parlamentar_b, + legislatura=legislatura, + data_inicio_mandato='2017-11-17', + data_fim_mandato='2018-08-02' + ) + mommy.make( + Mandato, + parlamentar=parlamentar_b, + legislatura=legislatura, + data_inicio_mandato='2018-08-03' + ) + + lista_parlamentares = parlamentares_mandatos_intersecao() + + assert len(lista_parlamentares) == 1 + assert lista_parlamentares == [(parlamentar_a, mandato_a, mandato_b)] + + +@pytest.mark.django_db(transaction=False) +def test_lista_parlamentares_filiacoes_intersecao(): + partido = mommy.make( + Partido, + sigla="ST", + nome="Nome_Partido_Teste" + ) + parlamentar_a = mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste", + nome_parlamentar="Nome_Parlamentar_Teste", + sexo='M' + ) + parlamentar_b = mommy.make( + Parlamentar, + nome_completo="Nome_Completo_Parlamentar_Teste-1", + nome_parlamentar="Nome_Parlamentar_Teste-1", + sexo='M' + ) + + filiacao_a = mommy.make( + Filiacao, + parlamentar=parlamentar_a, + partido=partido, + data='2018-02-02', + data_desfiliacao='2019-08-01' + ) + filiacao_b = mommy.make( + Filiacao, + parlamentar=parlamentar_a, + partido=partido, + data='2018-02-23', + data_desfiliacao='2020-02-04' + ) + mommy.make( + Filiacao, + parlamentar=parlamentar_b, + partido=partido, + data='2018-02-07', + data_desfiliacao='2018-02-27' + ) + mommy.make( + Filiacao, + parlamentar=parlamentar_b, + partido=partido, + data='2018-02-28' + ) + + lista_parlamentares = parlamentares_filiacoes_intersecao() + + assert len(lista_parlamentares) == 1 + assert lista_parlamentares == [(parlamentar_a, filiacao_b, filiacao_a)] + + +@pytest.mark.django_db(transaction=False) +def test_lista_autores_duplicados(): + tipo_autor = mommy.make( + TipoAutor, + descricao="Tipo_Autor_Teste" + ) + + mommy.make( + Autor, + tipo=tipo_autor, + nome="Nome_Autor_Teste" + ) + mommy.make( + Autor, + tipo=tipo_autor, + nome="Nome_Autor_Teste" + ) + mommy.make( + Autor, + tipo=tipo_autor, + nome="Nome_Autor_Teste-1" + ) + + lista_autores_duplicados = autores_duplicados() + + assert len(lista_autores_duplicados) == 1 + assert lista_autores_duplicados[0]['count'] == 2 + assert lista_autores_duplicados[0]['nome'] == "Nome_Autor_Teste" + + +@pytest.mark.django_db(transaction=False) +def test_lista_bancada_comissao_autor_externo(): + tipo_autor = mommy.make( + TipoAutor, + descricao="Tipo_Autor_Teste" + ) + tipo_autor_externo = mommy.make( + TipoAutor, + descricao="Externo" + ) + + legislatura = mommy.make( + Legislatura, + numero=1, + data_inicio='2012-01-03', + data_fim='2013-01-02', + data_eleicao='2011-10-04' + ) + + bancada_a = mommy.make( + Bancada, + legislatura=legislatura, + nome="Bancada_Teste", + data_criacao='2012-01-08', + ) + bancada_a.autor.create( + nome="Nome_Autor_Teste", + tipo=tipo_autor + ) + + bancada_b = mommy.make( + Bancada, + legislatura=legislatura, + nome="Bancada_Teste-1", + data_criacao='2012-02-02' + ) + autor_bancada_b = bancada_b.autor.create( + nome="Nome_Autor_Externo_Teste", + tipo=tipo_autor_externo + ) + + tipo_comissao = mommy.make( + TipoComissao, + nome="Tipo_Comissao_Teste", + natureza='T', + sigla="TCT" + ) + + comissao_a = mommy.make( + Comissao, + nome="Comissao_Teste", + sigla="CT", + data_criacao='2012-03-08', + ) + comissao_a.autor.create( + nome="Nome_Autor_Teste", + tipo=tipo_autor + ) + + comissao_b = mommy.make( + Comissao, + nome="Comissao_Teste-1", + sigla="CT1", + data_criacao='2012-04-01', + ) + autor_comissao_b = comissao_b.autor.create( + nome="Nome_Autor_Externo_Teste", + tipo=tipo_autor_externo + ) + + lista_bancada_comissao = bancada_comissao_autor_externo() + + assert len(lista_bancada_comissao) == 2 + assert lista_bancada_comissao[0][0:2] == (autor_bancada_b, bancada_b) + assert lista_bancada_comissao[0][2:4] == ('Bancada', 'sistema/bancada') + assert lista_bancada_comissao[1][0:2] == (autor_comissao_b, comissao_b) + assert lista_bancada_comissao[1][2:4] == ('Comissão', 'comissao') + @pytest.mark.django_db(transaction=False) def test_incluir_casa_legislativa_errors(admin_client): diff --git a/sapl/comissoes/tests/test_comissoes.py b/sapl/comissoes/tests/test_comissoes.py index 3b45bf337..274e36adb 100644 --- a/sapl/comissoes/tests/test_comissoes.py +++ b/sapl/comissoes/tests/test_comissoes.py @@ -3,7 +3,8 @@ from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ from model_mommy import mommy -from sapl.comissoes.models import Comissao, Composicao, Periodo, TipoComissao, Reuniao +from sapl.comissoes.models import Comissao, Composicao, Periodo +from sapl.comissoes.models import TipoComissao, Reuniao from sapl.parlamentares.models import Filiacao, Parlamentar, Partido from sapl.comissoes import forms @@ -45,6 +46,20 @@ def make_filiacao(): return Filiacao.objects.first() +@pytest.mark.django_db(transaction=False) +def test_tipo_comissao_model(): + mommy.make(TipoComissao, + nome='Teste_Nome_Tipo_Comissao', + natureza='T', + sigla='TSTC') + + tipo_comissao = TipoComissao.objects.first() + + assert tipo_comissao.nome == 'Teste_Nome_Tipo_Comissao' + assert tipo_comissao.natureza == 'T' + assert tipo_comissao.sigla == 'TSTC' + + @pytest.mark.django_db(transaction=False) def test_incluir_parlamentar_errors(admin_client): comissao = make_comissao() @@ -106,7 +121,7 @@ def test_periodo_invalidas(): form = forms.PeriodoForm(data={'data_inicio': '10/11/2017', 'data_fim': '09/11/2017' - }) + }) assert not form.is_valid() assert form.errors['__all__'] == [_('A Data Final não pode ser menor que ' 'a Data Inicial')] @@ -123,7 +138,7 @@ def test_valida_campos_obrigatorios_periodo_form(): assert errors['data_inicio'] == [_('Este campo é obrigatório.')] assert len(errors) == 1 - + @pytest.mark.django_db(transaction=False) def test_valida_campos_obrigatorios_reuniao_form(): @@ -141,4 +156,3 @@ def test_valida_campos_obrigatorios_reuniao_form(): assert errors['hora_inicio'] == [_('Este campo é obrigatório.')] assert len(errors) == 6 - diff --git a/sapl/compilacao/tests/test_compilacao.py b/sapl/compilacao/tests/test_compilacao.py new file mode 100644 index 000000000..4eacb8cb1 --- /dev/null +++ b/sapl/compilacao/tests/test_compilacao.py @@ -0,0 +1,112 @@ +import pytest +from model_mommy import mommy + +from sapl.compilacao.models import PerfilEstruturalTextoArticulado +from sapl.compilacao.models import TipoTextoArticulado +from sapl.compilacao.models import TextoArticulado, TipoNota +from sapl.compilacao.models import TipoVide, TipoDispositivo +from sapl.compilacao.models import TipoDispositivoRelationship + + +@pytest.mark.django_db(transaction=False) +def test_perfil_estrutural_texto_articulado_model(): + perfil_estrutural_texto_articulado = mommy.make( + PerfilEstruturalTextoArticulado, + nome='Teste_Nome_Perfil', + sigla='TSPETA') + + assert perfil_estrutural_texto_articulado.nome == 'Teste_Nome_Perfil' + assert perfil_estrutural_texto_articulado.sigla == 'TSPETA' + + +@pytest.mark.django_db(transaction=False) +def test_tipo_texto_articulado_model(): + tipo_texto_articulado = mommy.make( + TipoTextoArticulado, + sigla='TTP', + descricao='T_Desc_Tipo_Texto_Articulado' + ) + + assert tipo_texto_articulado.sigla == 'TTP' + assert tipo_texto_articulado.descricao == 'T_Desc_Tipo_Texto_Articulado' + + +@pytest.mark.django_db(transaction=False) +def test_texto_articulado_model(): + texto_articulado = mommy.make( + TextoArticulado, + ementa='Teste_Ementa_Texto_Articulado', + numero='12345678', + ano=2016, + ) + + assert texto_articulado.ementa == 'Teste_Ementa_Texto_Articulado' + assert texto_articulado.numero == '12345678' + assert texto_articulado.ano == 2016 + + +@pytest.mark.django_db(transaction=False) +def test_tipo_nota_model(): + tipo_nota = mommy.make( + TipoNota, + sigla='TTN', + nome='Teste_Nome_Tipo_Nota' + ) + + assert tipo_nota.sigla == 'TTN' + assert tipo_nota.nome == 'Teste_Nome_Tipo_Nota' + + +@pytest.mark.django_db(transaction=False) +def test_tipo_vide_model(): + tipo_vide = mommy.make( + TipoVide, + sigla='TTV', + nome='Teste_Nome_Tipo_Vide' + ) + + assert tipo_vide.sigla == 'TTV' + assert tipo_vide.nome == 'Teste_Nome_Tipo_Vide' + + +@pytest.mark.django_db(transaction=False) +def test_tipo_dispositivo_model(): + tipo_dispositivo = mommy.make( + TipoDispositivo, + nome='Teste_Nome_Tipo_Dispositivo', + rotulo_ordinal=0 + ) + + assert tipo_dispositivo.nome == 'Teste_Nome_Tipo_Dispositivo' + assert tipo_dispositivo.rotulo_ordinal == 0 + + +@pytest.mark.django_db(transaction=False) +def test_tipo_dispositivo_relationship_model(): + tipo_dispositivo_pai = mommy.make( + TipoDispositivo, + nome='Tipo_Dispositivo_Pai', + rotulo_ordinal=0 + ) + + t_dispositivo_filho = mommy.make( + TipoDispositivo, + nome='Tipo_Dispositivo_Filho', + rotulo_ordinal=0 + ) + + p_e_texto_articulado = mommy.make( + PerfilEstruturalTextoArticulado, + nome='Teste_Nome_Perfil', + sigla='TSPETA') + + tipo_dispositivo_relationship = mommy.make( + TipoDispositivoRelationship, + pai=tipo_dispositivo_pai, + filho_permitido=t_dispositivo_filho, + perfil=p_e_texto_articulado, + ) + + assert tipo_dispositivo_relationship.pai == tipo_dispositivo_pai + assert tipo_dispositivo_relationship.perfil == p_e_texto_articulado + assert tipo_dispositivo_relationship.filho_permitido == t_dispositivo_filho diff --git a/sapl/protocoloadm/models.py b/sapl/protocoloadm/models.py index 8396349a8..e8413f068 100644 --- a/sapl/protocoloadm/models.py +++ b/sapl/protocoloadm/models.py @@ -57,7 +57,6 @@ class Protocolo(models.Model): null=False, choices=RANGE_ANOS, verbose_name=_('Ano do Protocolo')) - data = models.DateField(null=True, blank=True, verbose_name=_('Data do Protocolo'), help_text=_('Informado manualmente')) diff --git a/sapl/templates/base/autores_duplicados.html b/sapl/templates/base/autores_duplicados.html index 361ff7add..0b9234429 100644 --- a/sapl/templates/base/autores_duplicados.html +++ b/sapl/templates/base/autores_duplicados.html @@ -1,30 +1,30 @@ {% extends "base.html" %} {% load common_tags %} {% block base_content %} -
- {% include 'paginacao.html'%} -