summaryrefslogtreecommitdiffstats
path: root/engagements/tests/test_views.py
blob: 7a65ea0fe72bc8f6675ff565ee63ac877edd8934 (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
105
106
107
108
109
110
111
112
113
114
115
116
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
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)

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

    # Define sample data for the form
    data = {
        "organisation": org,
        "start_year": sy,
        "end_year": ey,
        "description": "Example description",
        "inspector_sign_off": "2022-01-10",
        "owned_by": user,
        "reviewed_by": user,
        "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 == 200

    # Check that a new EngagementStrategy object was created in the database
    assert EngagementStrategy.objects.filter(organisation__name="MOD").exists()


# def test_create_view_uses_correct_form(self):
#     # Define the URL for the create view
#     url = reverse("engagement_strategy_create")
#
#     # Send a GET request to the view
#     response = self.client.get(url)
#
#     # Check that the response uses the correct form class
#     self.assertIsInstance(response.context["form"], EngagementStrategyCreateForm)