generated from coulomb/repo-seed
Implementiert Subunternehmer-Katalog mit Suche/Filter, Zuordnung zu Losen via HTMX-Modal, Dienstleistertyp-CRUD und Präferenz-Badges. Bibliothek: Nachweis-Katalog mit Ablaufwarnung und Versionierung, Referenz-Katalog mit Ausschreibungszuordnung, Leistungsblatt-CRUD, Entscheidungsregel-CRUD mit Aktiv-Toggle. Migration für referenzen M2M auf Ausschreibung. 56 Tests grün. Tests-Discovery auf tests.py-Dateien ausgedehnt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
from datetime import date, timedelta
|
|
|
|
import pytest
|
|
from django.urls import reverse
|
|
|
|
from .models import Entscheidungsregel, Nachweis, Referenz
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_nachweis_ist_abgelaufen_true():
|
|
n = Nachweis.objects.create(titel='Alter Nachweis', gueltig_bis=date.today() - timedelta(days=1))
|
|
assert n.ist_abgelaufen is True
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_nachweis_ist_abgelaufen_false_without_date():
|
|
n = Nachweis.objects.create(titel='Nachweis ohne Datum')
|
|
assert n.ist_abgelaufen is False
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_nachweis_liste_filter_abgelaufen(client):
|
|
heute = date.today()
|
|
Nachweis.objects.create(titel='AbgelaufenerNachweis', gueltig_bis=heute - timedelta(days=5))
|
|
Nachweis.objects.create(titel='NochAktuellerNachweis', gueltig_bis=heute + timedelta(days=100))
|
|
url = reverse('bibliothek:nachweise_liste')
|
|
response = client.get(url + '?tab=abgelaufen')
|
|
assert response.status_code == 200
|
|
content = response.content.decode()
|
|
assert 'AbgelaufenerNachweis' in content
|
|
assert 'NochAktuellerNachweis' not in content
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_entscheidungsregel_inaktiv_nicht_in_liste(client):
|
|
Entscheidungsregel.objects.create(
|
|
regelname='Aktive Regel', kategorie='ausschlusskriterium', empfehlung='teilnehmen', aktiv=True
|
|
)
|
|
Entscheidungsregel.objects.create(
|
|
regelname='Inaktive Regel', kategorie='frist', empfehlung='pruefen', aktiv=False
|
|
)
|
|
url = reverse('bibliothek:entscheidungsregeln_liste')
|
|
response = client.get(url)
|
|
assert response.status_code == 200
|
|
content = response.content.decode()
|
|
assert 'Aktive Regel' in content
|
|
assert 'Inaktive Regel' in content
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_entscheidungsregel_toggle(client):
|
|
r = Entscheidungsregel.objects.create(
|
|
regelname='Toggle-Regel', kategorie='ausschlusskriterium', empfehlung='teilnehmen', aktiv=True
|
|
)
|
|
url = reverse('bibliothek:er_toggle', kwargs={'pk': r.pk})
|
|
client.post(url)
|
|
r.refresh_from_db()
|
|
assert r.aktiv is False
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_nachweis_neue_version_ersetzt_alten(client):
|
|
alt = Nachweis.objects.create(titel='Zertifikat ISO', version='1.0')
|
|
url = reverse('bibliothek:nachweis_version', kwargs={'pk': alt.pk})
|
|
client.post(url, {
|
|
'titel': 'Zertifikat ISO',
|
|
'version': '1.0',
|
|
'sprache': 'de',
|
|
'freigabestatus': 'intern_freigegeben',
|
|
'vertraulichkeit': 'intern',
|
|
})
|
|
alt.refresh_from_db()
|
|
assert alt.status == 'ersetzt'
|
|
assert Nachweis.objects.filter(titel='Zertifikat ISO').count() == 2
|