Files
vergabe-teilnahme/vergabe_teilnahme/apps/marktbegleiter/tests.py
tegwick bde10f3a69 feat(WP-0011): Marktbegleiter-Analyse — Katalog, Passagen, Auswertung
Implementiert UC-MB-01 bis UC-MB-03: Marktbegleiter-Katalog (Liste,
Detail, Anlegen/Bearbeiten), Ausschreibungspassagen mit Verlässlichkeitsscore
(1–10, Validator), Musterauswertung mit Aggregationen (Ausschreiber-Häufigkeit,
Ø-Score, Passagen-Anzahl). 4 Tests grün.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 16:20:55 +02:00

71 lines
2.2 KiB
Python

import pytest
from django.core.exceptions import ValidationError
from django.urls import reverse
from vergabe_teilnahme.apps.ausschreibungen.tests import AusschreibungFactory
from .models import Ausschreibungspassage, Marktbegleiter
def make_mb(name='TestBegleiter', **kwargs):
return Marktbegleiter.objects.create(name=name, **kwargs)
@pytest.mark.django_db
def test_passage_anlegen_mit_score_10(client):
a = AusschreibungFactory()
mb = make_mb()
url = reverse('marktbegleiter:passagen:neu', kwargs={'ausschreibung_id': a.pk})
response = client.post(url, {
'passage': 'Musterpassage aus dem Dokument',
'marktbegleiter': mb.pk,
'verlaesslichkeitsscore': 10,
})
assert response.status_code == 302
assert Ausschreibungspassage.objects.filter(marktbegleiter=mb, verlaesslichkeitsscore=10).exists()
@pytest.mark.django_db
def test_passage_score_zu_hoch_validierungsfehler():
a = AusschreibungFactory()
mb = make_mb()
p = Ausschreibungspassage(
ausschreibung=a,
marktbegleiter=mb,
passage='Test',
verlaesslichkeitsscore=11,
)
with pytest.raises(ValidationError):
p.full_clean()
@pytest.mark.django_db
def test_auswertung_score_durchschnitt(client):
a = AusschreibungFactory()
mb = make_mb()
Ausschreibungspassage.objects.create(
ausschreibung=a, marktbegleiter=mb, passage='P1', verlaesslichkeitsscore=8
)
Ausschreibungspassage.objects.create(
ausschreibung=a, marktbegleiter=mb, passage='P2', verlaesslichkeitsscore=6
)
url = reverse('marktbegleiter:auswertung', kwargs={'pk': mb.pk})
response = client.get(url)
assert response.status_code == 200
content = response.content.decode()
assert '7' in content
@pytest.mark.django_db
def test_marktbegleiter_detail_zeigt_passagen(client):
a = AusschreibungFactory()
mb = make_mb(name='DetailBegleiter')
Ausschreibungspassage.objects.create(
ausschreibung=a, marktbegleiter=mb,
passage='Sichtbare Passage', verlaesslichkeitsscore=5
)
url = reverse('marktbegleiter:detail', kwargs={'pk': mb.pk})
response = client.get(url)
assert response.status_code == 200
assert b'Sichtbare Passage' in response.content