mirror of https://github.com/interlegis/sapl.git
2 changed files with 113 additions and 46 deletions
@ -0,0 +1,64 @@ |
|||
import os |
|||
|
|||
from django.core.files.uploadedfile import SimpleUploadedFile |
|||
from django.urls import reverse |
|||
from model_bakery import baker |
|||
import pytest |
|||
|
|||
from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa, |
|||
TipoDocumento) |
|||
|
|||
|
|||
@pytest.fixture |
|||
def dirs(settings, tmp_path, monkeypatch): |
|||
media = tmp_path / 'media' |
|||
temp = tmp_path / 'temp' |
|||
media.mkdir() |
|||
temp.mkdir() |
|||
settings.MEDIA_ROOT = str(media) |
|||
monkeypatch.setattr('sapl.materia.views.MEDIA_ROOT', str(media)) |
|||
monkeypatch.setattr('sapl.materia.views.get_tempfile_dir', |
|||
lambda: str(temp)) |
|||
return media, temp |
|||
|
|||
|
|||
def _post(client, nome, conteudo): |
|||
materias = baker.make(MateriaLegislativa, _quantity=2) |
|||
tipo = baker.make(TipoDocumento, descricao='Parecer') |
|||
client.post(reverse('sapl.materia:acessorio_em_lote'), { |
|||
'materia_id': [m.pk for m in materias], |
|||
'tipo': tipo.descricao, |
|||
'nome': 'Parecer', |
|||
'autor': 'Comissão', |
|||
'data': '12/10/2026', |
|||
'ementa': 'Ementa', |
|||
'arquivo': SimpleUploadedFile(nome, conteudo), |
|||
}) |
|||
return materias |
|||
|
|||
|
|||
@pytest.mark.django_db(transaction=False) |
|||
def test_arquivo_invalido_nao_grava_nada(admin_client, dirs): |
|||
media, temp = dirs |
|||
|
|||
_post(admin_client, 'x.html', b'%PDF-1.4\n<html><script></script>') |
|||
|
|||
assert not DocumentoAcessorio.objects.exists() |
|||
assert os.listdir(media) == [] |
|||
assert os.listdir(temp) == [] |
|||
|
|||
|
|||
@pytest.mark.django_db(transaction=False) |
|||
def test_arquivo_valido_copiado_para_cada_materia(admin_client, dirs): |
|||
media, temp = dirs |
|||
|
|||
materias = _post(admin_client, 'parecer.pdf', b'%PDF-1.4\n%%EOF') |
|||
|
|||
docs = DocumentoAcessorio.objects.filter(materia__in=materias) |
|||
assert docs.count() == 2 |
|||
for doc in docs: |
|||
assert doc.arquivo.name == ( |
|||
'sapl/public/documentoacessorio/2026/%s/parecer.pdf' % doc.pk) |
|||
assert (media / doc.arquivo.name).read_bytes() == b'%PDF-1.4\n%%EOF' |
|||
assert os.listdir(media) == ['sapl'] |
|||
assert os.listdir(temp) == [] |
|||
Loading…
Reference in new issue