summaryrefslogtreecommitdiffstats
path: root/engagements/tests/test_views.py
blob: f25eb3a5c58cbe406858e15490de58a54ad786ca (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
import datetime
from http import HTTPStatus

from django.test import RequestFactory, TestCase
from django.urls import reverse

from engagements import models, views
from engagements.utils import populate_database


class TestModels(TestCase):
    @classmethod
    def setUpTestData(cls):
        cls.request = RequestFactory()  # for use in _ep_request_factory test
        cls.data = populate_database()

    def test_dscs_for_ep(self):
        org = self.data["orgs"][0]
        # we set up an engagement and effort for this org
        et = models.EngagementType.objects.get(name="INSPECTION")
        si = self.data["sub_instruments"][0]
        si2 = self.data["sub_instruments"][2]
        si3 = self.data["sub_instruments"][3]
        # si_not = self.data["sub_instruments"][1]
        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)  # DSC 1
        ef1.sub_instruments.add(si2)  # DSC 3
        ef1.sub_instruments.add(si3)  # DSC 4
        ef1.save()
        url = reverse("engagements:plan_for_org", kwargs={"orgslug": org.slug})
        self.client.force_login(self.data["superuser"])
        response = self.client.get(url)
        self.assertEqual(response.status_code, HTTPStatus.OK)
        self.assertTrue(response.context["entity"])
        self.assertEqual(response.context["entity"].name, org.name)
        self.assertIn(si, response.context["dscs"])
        self.assertIn(si2, response.context["dscs"])
        self.assertIn(si3, response.context["dscs"])
        self.assertEqual(response.context["dscs"].count(), 3)
        # self.assertNotIn(si_not, response.context["dscs"])

    def test_dscs_for_ep_request_factory(self):
        """
        On the EP page, we expect to see a list of all DSCs related to effort
        for this organisation.

        Included this here for reference
        """
        org = self.data["orgs"][0]
        url = reverse("engagements:plan_for_org", kwargs={"orgslug": org.slug})
        request = self.request.get(url)
        request.user = self.data["superuser"]
        response = views.engagement_plan_for(request, org.slug)
        self.assertEqual(response.status_code, HTTPStatus.OK)


class TestEngagementEffortView(TestCase):
    @classmethod
    def setUpTestData(cls):
        cls.request = RequestFactory()  # for use in _ep_request_factory test
        cls.data = populate_database()

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

    # def test_post_data(self):
    #     url = reverse(
    #         "engagements:effort_create", kwargs={"eid": 1, "etype": "PLANNING"}
    #     )
    #     self.client.force_login(self.data["superuser"])
    #     request = self.request.post(url, {"proposed_start_date": "toss"})
    #     request.user = self.data["superuser"]
    #     response = views.engagement_effort_create(request, eid=1, etype="PLANNING")
    #     self.assertEqual(response.status_code, HTTPStatus.OK)