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