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)