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.
245 lines
8.8 KiB
245 lines
8.8 KiB
import datetime
|
|
|
|
import pytest
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from model_mommy import mommy
|
|
|
|
from sapl.materia.models import UnidadeTramitacao
|
|
from sapl.protocoloadm.forms import AnularProcoloAdmForm
|
|
from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo,
|
|
StatusTramitacaoAdministrativo,
|
|
TipoDocumentoAdministrativo,
|
|
TramitacaoAdministrativo)
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_anular_protocolo_acessivel(admin_client):
|
|
response = admin_client.get(reverse('sapl.protocoloadm:anular_protocolo'))
|
|
assert response.status_code == 200
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_anular_protocolo_submit(admin_client):
|
|
mommy.make(Protocolo, numero='76', ano='2016', anulado=False)
|
|
|
|
# TODO: setar usuario e IP
|
|
response = admin_client.post(reverse('sapl.protocoloadm:anular_protocolo'),
|
|
{'numero': '76',
|
|
'ano': '2016',
|
|
'justificativa_anulacao': 'TESTE',
|
|
'salvar': 'Anular'},
|
|
follow=True)
|
|
|
|
assert response.status_code == 200
|
|
|
|
protocolo = Protocolo.objects.first()
|
|
assert protocolo.numero == 76
|
|
assert protocolo.ano == 2016
|
|
|
|
if not protocolo.anulado:
|
|
pytest.fail(_("Protocolo deveria estar anulado"))
|
|
assert protocolo.justificativa_anulacao == 'TESTE'
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_anular_protocolo_inexistente():
|
|
form = AnularProcoloAdmForm({'numero': '1',
|
|
'ano': '2016',
|
|
'justificativa_anulacao': 'TESTE'})
|
|
|
|
# Não usa o assert form.is_valid() == False por causa do PEP8
|
|
if form.is_valid():
|
|
pytest.fail(_("Form deve ser inválido"))
|
|
assert form.errors['__all__'] == [_("Protocolo 1/2016 não existe")]
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_anular_protocolo_valido():
|
|
mommy.make(Protocolo, numero='1', ano='2016', anulado=False)
|
|
form = AnularProcoloAdmForm({'numero': '1',
|
|
'ano': '2016',
|
|
'justificativa_anulacao': 'TESTE'})
|
|
if not form.is_valid():
|
|
pytest.fail(_("Form deve ser válido"))
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_anular_protocolo_anulado():
|
|
mommy.make(Protocolo, numero='1', ano='2016', anulado=True)
|
|
form = AnularProcoloAdmForm({'numero': '1',
|
|
'ano': '2016',
|
|
'justificativa_anulacao': 'TESTE'})
|
|
assert form.errors['__all__'] == \
|
|
[_("Protocolo 1/2016 já encontra-se anulado")]
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_form_anular_protocolo_campos_obrigatorios():
|
|
mommy.make(Protocolo, numero='1', ano='2016', anulado=False)
|
|
|
|
# TODO: generalizar para diminuir o tamanho deste método
|
|
|
|
# numero ausente
|
|
form = AnularProcoloAdmForm({'numero': '',
|
|
'ano': '2016',
|
|
'justificativa_anulacao': 'TESTE'})
|
|
if form.is_valid():
|
|
pytest.fail(_("Form deve ser inválido"))
|
|
|
|
assert len(form.errors) == 1
|
|
assert form.errors['numero'] == [_('Este campo é obrigatório.')]
|
|
|
|
# ano ausente
|
|
form = AnularProcoloAdmForm({'numero': '1',
|
|
'ano': '',
|
|
'justificativa_anulacao': 'TESTE'})
|
|
if form.is_valid():
|
|
pytest.fail(_("Form deve ser inválido"))
|
|
|
|
assert len(form.errors) == 1
|
|
assert form.errors['ano'] == [_('Este campo é obrigatório.')]
|
|
|
|
# justificativa_anulacao ausente
|
|
form = AnularProcoloAdmForm({'numero': '1',
|
|
'ano': '2016',
|
|
'justificativa_anulacao': ''})
|
|
if form.is_valid():
|
|
pytest.fail(_("Form deve ser inválido"))
|
|
|
|
assert len(form.errors) == 1
|
|
assert form.errors['justificativa_anulacao'] == \
|
|
[_('Este campo é obrigatório.')]
|
|
|
|
|
|
@pytest.mark.django_db(transaction=False)
|
|
def test_create_tramitacao(admin_client):
|
|
tipo_doc = mommy.make(
|
|
TipoDocumentoAdministrativo,
|
|
descricao='Teste Tipo_DocAdm')
|
|
|
|
documento_adm = mommy.make(
|
|
DocumentoAdministrativo,
|
|
tipo=tipo_doc)
|
|
|
|
unidade_tramitacao_local_1 = mommy.make(
|
|
UnidadeTramitacao, pk=1)
|
|
|
|
unidade_tramitacao_destino_1 = mommy.make(
|
|
UnidadeTramitacao, pk=2)
|
|
|
|
unidade_tramitacao_destino_2 = mommy.make(
|
|
UnidadeTramitacao, pk=3)
|
|
|
|
status = mommy.make(
|
|
StatusTramitacaoAdministrativo)
|
|
|
|
tramitacao = mommy.make(
|
|
TramitacaoAdministrativo,
|
|
unidade_tramitacao_local=unidade_tramitacao_local_1,
|
|
unidade_tramitacao_destino=unidade_tramitacao_destino_1,
|
|
status=status,
|
|
documento=documento_adm,
|
|
data_tramitacao=datetime.date(2016, 8, 21))
|
|
|
|
response = admin_client.post(
|
|
reverse(
|
|
'sapl.protocoloadm:tramitacaoadministrativo_create',
|
|
kwargs={'pk': documento_adm.pk}),
|
|
{'unidade_tramitacao_local': unidade_tramitacao_destino_2.pk,
|
|
'documento': documento_adm.pk,
|
|
'status': status.pk,
|
|
'data_tramitacao': datetime.date(2016, 8, 21)},
|
|
follow=True)
|
|
|
|
msg = _('A origem da nova tramitação deve ser igual ao '
|
|
'destino da última adicionada!')
|
|
|
|
# Verifica se a origem da nova tramitacao é igual ao destino da última
|
|
assert msg in response.context_data[
|
|
'form'].errors['__all__']
|
|
|
|
response = admin_client.post(
|
|
reverse(
|
|
'sapl.protocoloadm:tramitacaoadministrativo_create',
|
|
kwargs={'pk': documento_adm.pk}),
|
|
{'unidade_tramitacao_local': unidade_tramitacao_destino_1.pk,
|
|
'documento': documento_adm.pk,
|
|
'status': status.pk,
|
|
'data_tramitacao': datetime.date(2016, 8, 20)},
|
|
follow=True)
|
|
|
|
msg = _('A data da nova tramitação deve ser ' +
|
|
'maior que a data da última tramitação!')
|
|
|
|
# Verifica se a data da nova tramitação é maior do que a última
|
|
assert msg in response.context_data[
|
|
'form'].errors['__all__']
|
|
|
|
response = admin_client.post(
|
|
reverse(
|
|
'sapl.protocoloadm:tramitacaoadministrativo_create',
|
|
kwargs={'pk': documento_adm.pk}),
|
|
{'unidade_tramitacao_local': unidade_tramitacao_destino_1.pk,
|
|
'documento': documento_adm.pk,
|
|
'status': status.pk,
|
|
'data_tramitacao': datetime.date.today() + datetime.timedelta(
|
|
days=1)},
|
|
follow=True)
|
|
|
|
msg = _('A data de tramitação deve ser ' +
|
|
'menor ou igual a data de hoje!')
|
|
|
|
# Verifica se a data da tramitação é menor do que a data de hoje
|
|
assert msg in response.context_data[
|
|
'form'].errors['__all__']
|
|
|
|
response = admin_client.post(
|
|
reverse(
|
|
'sapl.protocoloadm:tramitacaoadministrativo_create',
|
|
kwargs={'pk': documento_adm.pk}),
|
|
{'unidade_tramitacao_local': unidade_tramitacao_destino_1.pk,
|
|
'documento': documento_adm.pk,
|
|
'status': status.pk,
|
|
'data_tramitacao': datetime.date(2016, 8, 21),
|
|
'data_encaminhamento': datetime.date(2016, 8, 20)},
|
|
follow=True)
|
|
|
|
msg = _('A data de encaminhamento deve ser ' +
|
|
'maior que a data de tramitação!')
|
|
|
|
# Verifica se a data da encaminhamento é menor do que a data de tramitacao
|
|
assert msg in response.context_data[
|
|
'form'].errors['__all__']
|
|
|
|
response = admin_client.post(
|
|
reverse(
|
|
'sapl.protocoloadm:tramitacaoadministrativo_create',
|
|
kwargs={'pk': documento_adm.pk}),
|
|
{'unidade_tramitacao_local': unidade_tramitacao_destino_1.pk,
|
|
'documento': documento_adm.pk,
|
|
'status': status.pk,
|
|
'data_tramitacao': datetime.date(2016, 8, 21),
|
|
'data_fim_prazo': datetime.date(2016, 8, 20)},
|
|
follow=True)
|
|
|
|
msg = _('A data fim de prazo deve ser ' +
|
|
'maior que a data de tramitação!')
|
|
|
|
# Verifica se a data da do fim do prazo é menor do que a data de tramitacao
|
|
assert msg in response.context_data[
|
|
'form'].errors['__all__']
|
|
|
|
response = admin_client.post(
|
|
reverse(
|
|
'sapl.protocoloadm:tramitacaoadministrativo_create',
|
|
kwargs={'pk': documento_adm.pk}),
|
|
{'unidade_tramitacao_local': unidade_tramitacao_destino_1.pk,
|
|
'documento': documento_adm.pk,
|
|
'status': status.pk,
|
|
'data_tramitacao': datetime.date(2016, 8, 21)},
|
|
follow=True)
|
|
|
|
tramitacao = TramitacaoAdministrativo.objects.last()
|
|
# Verifica se a tramitacao que obedece as regras de negócios é criada
|
|
assert tramitacao.data_tramitacao == datetime.date(2016, 8, 21)
|
|
|