generated from coulomb/repo-seed
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>
71 lines
2.2 KiB
Python
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
|