summaryrefslogtreecommitdiffstats
path: root/engagements/tests/test_views.py
blob: 017b96fe7080ae7f43c9016ce129701aa7a5fa8a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import datetime
from http import HTTPStatus

import pytest
from django.test import RequestFactory
from django.urls import reverse

from engagements import models, views
from engagements.models import EngagementStrategy, RegulatoryCycle, Organisation
from engagements.utils import populate_database

pytestmark = pytest.mark.django_db


@pytest.fixture
def test_data():
    return populate_database()


@pytest.fixture
def request_factory():
    return RequestFactory()


def test_dscs_for_ep(client, test_data, request_factory):
    org = test_data["orgs"][0]
    et = models.EngagementType.objects.get(name="INSPECTION")
    si = test_data["sub_instruments"][0]
    si2 = test_data["sub_instruments"][2]
    si3 = test_data["sub_instruments"][3]

    engagement = models.Engagement.objects.create(
        proposed_start_date=datetime.date(2022, 10, 10),
        proposed_end_date=datetime.date(2022, 10, 10),
        engagement_type=et,
        external_party=org,
    )
    ef1 = models.EngagementEffort.objects.create(
        is_planned=True,
        effort_type="REGULATION",
        proposed_start_date=datetime.date(2022, 10, 10),
        proposed_end_date=datetime.date(2022, 10, 10),
        engagement=engagement,
    )
    ef1.sub_instruments.add(si, si2, si3)

    url = reverse("engagements:plan_for_org", kwargs={"orgslug": org.slug})
    client.force_login(test_data["superuser"])
    response = client.get(url)

    assert response.status_code == HTTPStatus.OK
    assert response.context["entity"]
    assert response.context["entity"].name == org.name
    assert si in response.context["dscs"]
    assert si2 in response.context["dscs"]
    assert si3 in response.context["dscs"]


def test_get_blank_form(client, test_data, request_factory):
    url = reverse("engagements:effort_create", kwargs={"eid": 1, "etype": "PLANNING"})
    client.force_login(test_data["superuser"])
    request = request_factory.get(url)
    request.user = test_data["superuser"]
    response = views.engagement_effort_create(request, eid=1, etype="PLANNING")
    assert response.status_code == HTTPStatus.OK


# def test_get_form_to_create_engagement_strategy(client, request_factory):
#     url = reverse("engagements:es-create")
#     client.force_login(test_data["superuser"])
#     request = request_factory.get(url)
#     request.user = test_data["superuser"]
#     response = views.CreateEngagementStrategy()
#     assert response.status_code == HTTPStatus.OK


def test_create_engagement_strategy(client, user, org, regulatory_cycles):
    # Define the URL for the create view
    url = reverse("engagements:es-create")
    client.force_login(user)
    mod = Organisation.objects.create(name="MOD", is_regulated_entity=False)

    sy = RegulatoryCycle.objects.get(start_date__year="2022")
    ey = RegulatoryCycle.objects.get(start_date__year="2024")

    # Define sample data for the form
    data = {
        "organisation": mod.pk,
        "start_year": sy.pk,  # Use the pk of the regulatory cycle instead of the object itself
        "end_year": ey.pk,
        "description": "Example description",
        "inspector_sign_off": "2022-01-10",
        "owned_by": user.pk,  # Same here
        "reviewed_by": user.pk,
        "management_sign_off": "2022-02-10",
        "status": "DRAFT",
    }

    # Send a POST request to the view
    response = client.post(url, data)

    # Check that the response redirects (status code 302) after successful creation
    assert response.status_code == 302
    assert EngagementStrategy.objects.count() == 1