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>
This commit is contained in:
parent
ca8818254b
commit
278cc1014c
31 changed files with 1818 additions and 22 deletions
|
|
@ -1,3 +1,74 @@
|
|||
from django.test import TestCase
|
||||
from datetime import date, timedelta
|
||||
|
||||
# Create your tests here.
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue