Files
vergabe-teilnahme/vergabe_teilnahme/apps/bibliothek/tests.py
tegwick 278cc1014c feat(partner,bibliothek): Subunternehmer-Katalog, Dienstleistertypen und Bibliothek (WP-0010)
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>
2026-05-11 15:27:53 +02:00

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