vergabe-teilnahme/vergabe_teilnahme/apps/nachbetrachtung/tests.py

75 lines
2.8 KiB
Python
Raw Normal View History

import pytest
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
2026-05-08 14:26:48 +02:00
from vergabe_teilnahme.apps.ausschreibungen.tests import AusschreibungFactory
from vergabe_teilnahme.apps.core.models import Freigabe
from .abgabe_views import abgabe_vollstaendigkeit
from .models import Nachbetrachtung
@pytest.mark.django_db
def test_abgabe_vollstaendigkeit_ohne_freigaben():
a = AusschreibungFactory(teilnahmeentscheidung='offen')
v = abgabe_vollstaendigkeit(a)
assert v['teilnahme_freigabe'] is False
assert v['preis_freigabe'] is False
assert v['recht_freigabe'] is False
assert v['abgabe_freigabe'] is False
assert v['entscheidung_getroffen'] is False
@pytest.mark.django_db
def test_abgabe_vollstaendigkeit_mit_freigabe():
from vergabe_teilnahme.apps.accounts.models import Mitarbeiter
user = Mitarbeiter.objects.create_user(username='pruefer', password='x')
a = AusschreibungFactory(teilnahmeentscheidung='teilnahme')
ct = ContentType.objects.get_for_model(a)
Freigabe.objects.create(
content_type=ct, object_id=a.pk,
freigabe_typ='preis', status='erteilt',
freigebende_person=user,
)
v = abgabe_vollstaendigkeit(a)
assert v['preis_freigabe'] is True
assert v['teilnahme_freigabe'] is False
assert v['entscheidung_getroffen'] is True
@pytest.mark.django_db
def test_ergebnis_gewonnen_erstellt_kickoff_aufgabe(client):
from vergabe_teilnahme.apps.aufgaben.models import Aufgabe
a = AusschreibungFactory(status=9)
url = reverse('ausschreibungen:nachbetrachtung:detail', kwargs={'ausschreibung_id': a.pk})
response = client.post(url, {
'ergebnis': 'gewonnen',
'verlustgruende': '[]',
})
assert response.status_code == 302
a.refresh_from_db()
assert a.status == 10
assert Aufgabe.objects.filter(ausschreibung=a, titel='Kickoff vorbereiten').exists()
@pytest.mark.django_db
def test_ergebnis_verloren_setzt_status_11(client):
a = AusschreibungFactory(status=9)
url = reverse('ausschreibungen:nachbetrachtung:detail', kwargs={'ausschreibung_id': a.pk})
client.post(url, {'ergebnis': 'verloren', 'verlustgruende': '[]'})
a.refresh_from_db()
assert a.status == 11
@pytest.mark.django_db
def test_verlustgruende_json_gespeichert(client):
import json
a = AusschreibungFactory(status=9)
url = reverse('ausschreibungen:nachbetrachtung:detail', kwargs={'ausschreibung_id': a.pk})
gruende = [{'grund': 'Zu teuer', 'kategorie': 'preis', 'verlaesslichkeit': 4}]
client.post(url, {'ergebnis': 'verloren', 'verlustgruende': json.dumps(gruende)})
nb = Nachbetrachtung.objects.get(ausschreibung=a)
assert nb.verlustgruende[0]['grund'] == 'Zu teuer'
assert nb.verlustgruende[0]['kategorie'] == 'preis'
assert nb.verlustgruende[0]['verlaesslichkeit'] == 4