mirror of https://github.com/interlegis/sapl.git
1 changed files with 220 additions and 0 deletions
@ -0,0 +1,220 @@ |
|||||
|
import pytest |
||||
|
from django.urls import reverse |
||||
|
from django.utils.translation import ugettext_lazy as _ |
||||
|
from model_bakery import baker |
||||
|
|
||||
|
from sapl.parlamentares.forms import ComposicaoMesaForm, MesaDiretoraForm |
||||
|
from sapl.parlamentares.models import ComposicaoMesa, MesaDiretora |
||||
|
|
||||
|
|
||||
|
def test_mesadiretora_form_invalido(): |
||||
|
form = MesaDiretoraForm(data={}) |
||||
|
|
||||
|
assert not form.is_valid() |
||||
|
|
||||
|
errors = form.errors |
||||
|
|
||||
|
assert errors['titulo'] == [_('Este campo é obrigatório.')] |
||||
|
assert errors['data_inicio'] == [_('Este campo é obrigatório.')] |
||||
|
assert errors['data_fim'] == [_('Este campo é obrigatório.')] |
||||
|
assert errors['legislatura'] == [_('Este campo é obrigatório.')] |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_mesadiretora_form_data_inicio_maior_que_data_fim(): |
||||
|
legislatura = baker.make('parlamentares.Legislatura') |
||||
|
|
||||
|
form = MesaDiretoraForm(data={ |
||||
|
'titulo': 'Mesa Diretora 2021-2022', |
||||
|
'data_inicio': '2022-01-01', |
||||
|
'data_fim': '2021-12-31', |
||||
|
'legislatura': legislatura.id, |
||||
|
}) |
||||
|
|
||||
|
assert not form.is_valid() |
||||
|
errors = form.errors |
||||
|
assert errors['__all__'] == [_('A data de início deve ser anterior à data de fim.')] |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_mesadiretora_form_valido(): |
||||
|
legislatura = baker.make('parlamentares.Legislatura') |
||||
|
|
||||
|
form = MesaDiretoraForm(data={ |
||||
|
'titulo': 'Mesa Diretora 2021-2022', |
||||
|
'data_inicio': '2021-01-01', |
||||
|
'data_fim': '2022-12-31', |
||||
|
'legislatura': legislatura.id, |
||||
|
}) |
||||
|
|
||||
|
assert form.is_valid() |
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_mesadiretora_form_intersecao(): |
||||
|
legislatura = baker.make('parlamentares.Legislatura') |
||||
|
mesa_existente = baker.make( |
||||
|
'parlamentares.MesaDiretora', |
||||
|
legislatura=legislatura, |
||||
|
titulo='Mesa Diretora 2021-2022', |
||||
|
data_inicio='2021-01-01', |
||||
|
data_fim='2022-12-31') |
||||
|
|
||||
|
form = MesaDiretoraForm(data={ |
||||
|
'titulo': 'Mesa Diretora 2022-2023', |
||||
|
'data_inicio': '2022-01-01', |
||||
|
'data_fim': '2023-12-31', |
||||
|
'legislatura': legislatura.id, |
||||
|
}) |
||||
|
|
||||
|
assert not form.is_valid() |
||||
|
errors = form.errors |
||||
|
assert errors['__all__'] == [_('As datas da mesa diretora se sobrepõem com outra mesa diretora existente.')] |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_mesadiretora_form_data_fora_da_legislatura(): |
||||
|
legislatura = baker.make( |
||||
|
'parlamentares.Legislatura', |
||||
|
data_inicio='2021-01-01', |
||||
|
data_fim='2024-12-31') |
||||
|
|
||||
|
form = MesaDiretoraForm(data={ |
||||
|
'titulo': 'Mesa Diretora 2020-2021', |
||||
|
'data_inicio': '2020-01-01', |
||||
|
'data_fim': '2021-12-31', |
||||
|
'legislatura': legislatura.id, |
||||
|
}) |
||||
|
|
||||
|
assert not form.is_valid() |
||||
|
errors = form.errors |
||||
|
assert errors['__all__'] == [_('As datas da mesa diretora devem estar dentro do período da legislatura.')] |
||||
|
|
||||
|
|
||||
|
def test_composicaomesa_form(): |
||||
|
form = ComposicaoMesaForm(data={}) |
||||
|
|
||||
|
assert not form.is_valid() |
||||
|
|
||||
|
errors = form.errors |
||||
|
|
||||
|
assert errors['parlamentar'] == [_('Este campo é obrigatório.')] |
||||
|
assert errors['cargo'] == [_('Este campo é obrigatório.')] |
||||
|
assert errors['mesa_diretora'] == [_('Este campo é obrigatório.')] |
||||
|
|
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_composicaomesa_form_valido(): |
||||
|
parlamentar = baker.make('parlamentares.Parlamentar') |
||||
|
cargo = baker.make('parlamentares.CargoMesa') |
||||
|
mesa_diretora = baker.make('parlamentares.MesaDiretora') |
||||
|
|
||||
|
form = ComposicaoMesaForm(data={ |
||||
|
'parlamentar': parlamentar.id, |
||||
|
'cargo': cargo.id, |
||||
|
'mesa_diretora': mesa_diretora.id, |
||||
|
}) |
||||
|
|
||||
|
assert form.is_valid() |
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_composicaomesa_form_parlamentar_ocupando_cargo_na_mesma_mesa(): |
||||
|
parlamentar = baker.make('parlamentares.Parlamentar') |
||||
|
cargo1 = baker.make('parlamentares.CargoMesa') |
||||
|
cargo2 = baker.make('parlamentares.CargoMesa') |
||||
|
mesa_diretora = baker.make('parlamentares.MesaDiretora') |
||||
|
|
||||
|
# Cria uma composição de mesa existente com o mesmo parlamentar e mesa |
||||
|
ComposicaoMesa.objects.create( |
||||
|
parlamentar=parlamentar, |
||||
|
cargo=cargo1, |
||||
|
mesa_diretora=mesa_diretora |
||||
|
) |
||||
|
|
||||
|
form = ComposicaoMesaForm(data={ |
||||
|
'parlamentar': parlamentar.id, |
||||
|
'cargo': cargo2.id, |
||||
|
'mesa_diretora': mesa_diretora.id, |
||||
|
}) |
||||
|
|
||||
|
assert not form.is_valid() |
||||
|
errors = form.errors |
||||
|
assert errors['__all__'] == [_('Parlamentar já ocupa um cargo nesta mesa diretora.')] |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_composicaomesa_form_parlamentar_cargo_unico_mesma_mesa(): |
||||
|
parlamentar1 = baker.make('parlamentares.Parlamentar') |
||||
|
parlamentar2 = baker.make('parlamentares.Parlamentar') |
||||
|
|
||||
|
cargo = baker.make('parlamentares.CargoMesa', unico=True) |
||||
|
|
||||
|
mesa_diretora = baker.make('parlamentares.MesaDiretora') |
||||
|
|
||||
|
mandato1 = baker.make('parlamentares.Mandato', parlamentar=parlamentar1, legislatura=mesa_diretora.legislatura) |
||||
|
mandato2 = baker.make('parlamentares.Mandato', parlamentar=parlamentar2, legislatura=mesa_diretora.legislatura) |
||||
|
|
||||
|
# Cria uma composição de mesa existente com o cargo único |
||||
|
ComposicaoMesa.objects.create( |
||||
|
parlamentar=parlamentar1, |
||||
|
cargo=cargo, |
||||
|
mesa_diretora=mesa_diretora |
||||
|
) |
||||
|
|
||||
|
form = ComposicaoMesaForm(data={ |
||||
|
'parlamentar': parlamentar2.id, |
||||
|
'cargo': cargo.id, |
||||
|
'mesa_diretora': mesa_diretora.id, |
||||
|
}, initial={ |
||||
|
'mesa_diretora': mesa_diretora, |
||||
|
}) |
||||
|
|
||||
|
assert not form.is_valid() |
||||
|
errors = form.errors |
||||
|
assert errors['__all__'] == [_('Cargo único já ocupado por outro parlamentar.')] |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_composicaomesa_form_view_create(admin_client): |
||||
|
parlamentar = baker.make('parlamentares.Parlamentar') |
||||
|
cargo = baker.make('parlamentares.CargoMesa') |
||||
|
mesa_diretora = baker.make('parlamentares.MesaDiretora') |
||||
|
mandato = baker.make( |
||||
|
'parlamentares.Mandato', |
||||
|
parlamentar=parlamentar, |
||||
|
legislatura=mesa_diretora.legislatura) |
||||
|
|
||||
|
response = admin_client.post(reverse('sapl.parlamentares:composicaomesa_create', kwargs={'pk': mesa_diretora.id}), data={ |
||||
|
'parlamentar': parlamentar.id, |
||||
|
'cargo': cargo.id, |
||||
|
'mesa_diretora': mesa_diretora.id, |
||||
|
}) |
||||
|
|
||||
|
assert ComposicaoMesa.objects.filter(parlamentar=parlamentar, cargo=cargo, mesa_diretora=mesa_diretora).exists() |
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_composicaomesa_form_view_update(admin_client): |
||||
|
parlamentar = baker.make('parlamentares.Parlamentar') |
||||
|
cargo = baker.make('parlamentares.CargoMesa') |
||||
|
mesa_diretora = baker.make('parlamentares.MesaDiretora') |
||||
|
mandato = baker.make( |
||||
|
'parlamentares.Mandato', |
||||
|
parlamentar=parlamentar, |
||||
|
legislatura=mesa_diretora.legislatura) |
||||
|
|
||||
|
composicao = ComposicaoMesa.objects.create( |
||||
|
parlamentar=parlamentar, |
||||
|
cargo=cargo, |
||||
|
mesa_diretora=mesa_diretora |
||||
|
) |
||||
|
|
||||
|
new_cargo = baker.make('parlamentares.CargoMesa') |
||||
|
|
||||
|
response = admin_client.post(reverse('sapl.parlamentares:composicaomesa_update', kwargs={'pk': composicao.id}), data={ |
||||
|
'parlamentar': parlamentar.id, |
||||
|
'cargo': new_cargo.id, |
||||
|
'mesa_diretora': mesa_diretora.id, |
||||
|
}) |
||||
|
|
||||
|
composicao.refresh_from_db() |
||||
|
assert composicao.cargo == new_cargo |
||||
Loading…
Reference in new issue