import pytest from django.contrib.contenttypes.models import ContentType from django.urls import reverse 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