def test_mandato_form_duplicado():
    parlamentar = baker.make(Parlamentar, pk=1)
    legislatura = baker.make(Legislatura, pk=1)

    Mandato.objects.create(parlamentar=parlamentar,
                           legislatura=legislatura,
                           data_expedicao_diploma='2017-07-25',
                           data_inicio_mandato=legislatura.data_inicio,
                           data_fim_mandato=legislatura.data_fim)

    form = MandatoForm(
        data={
            'parlamentar': str(parlamentar.pk),
            'legislatura': str(legislatura.pk),
            'data_expedicao_diploma': '01/07/2015',
            'data_inicio_mandato': legislatura.data_inicio,
            'data_fim_mandato': legislatura.data_fim,
            'titular': True,
        })

    assert not form.is_valid()

    assert form.errors['__all__'] == [
        _('Mandato nesta legislatura já existe.')
    ]
def test_mandato_form_invalido():

    form = MandatoForm(data={})

    assert not form.is_valid()

    errors = form.errors
    assert errors['legislatura'] == [_('Este campo é obrigatório.')]
    assert errors['parlamentar'] == [_('Este campo é obrigatório.')]
def test_mandato_form_datas_invalidas():
    parlamentar = baker.make(Parlamentar, pk=1)
    legislatura = baker.make(Legislatura,
                             pk=1,
                             data_inicio='2017-01-01',
                             data_fim='2021-12-31')

    form = MandatoForm(
        data={
            'parlamentar': str(parlamentar.pk),
            'legislatura': str(legislatura.pk),
            'data_expedicao_diploma': '2016-11-01',
            'data_inicio_mandato': '2016-12-12',
            'data_fim_mandato': '2019-10-09'
        })

    assert not form.is_valid()
    assert form.errors['__all__'] == \
        ["Data início mandato fora do intervalo de legislatura informada"]

    form = MandatoForm(
        data={
            'parlamentar': str(parlamentar.pk),
            'legislatura': str(legislatura.pk),
            'data_expedicao_diploma': '2016-11-01',
            'data_inicio_mandato': '2017-02-02',
            'data_fim_mandato': '2022-01-01'
        })

    assert not form.is_valid()
    assert form.errors['__all__'] == \
        ["Data fim mandato fora do intervalo de legislatura informada"]