def test_log_and_create_service(self): """Logging hours and creating a new service is possible at the same time""" project = factories.ProjectFactory.create() self.client.force_login(project.owned_by) types = factories.service_types() response = self.client.post( project.urls["createhours"], { "modal-rendered_by": project.owned_by_id, "modal-rendered_on": dt.date.today().isoformat(), # "modal-service": service.id, "modal-hours": "0.1", "modal-description": "Test", "modal-service_title": "service title", "modal-service_description": "service description", "modal-service_type": types.administration.pk, }, HTTP_X_REQUESTED_WITH="XMLHttpRequest", ) self.assertEqual(response.status_code, 201) entry = LoggedHours.objects.get() self.assertEqual(entry.service.title, "service title") self.assertEqual(entry.service.effort_rate, types.administration.hourly_rate) response = self.client.get(entry.urls["detail"], HTTP_X_REQUESTED_WITH="XMLHttpRequest") self.assertContains( response, '<a href="{}#service{}">service title: service description' "</a>".format(project.get_absolute_url(), entry.service.id), )
def test_autofill(self): """Required autofilling attributes for service types are available""" project = factories.ProjectFactory.create() self.client.force_login(project.owned_by) response = self.client.get(project.urls["createservice"], HTTP_X_REQUESTED_WITH="XMLHttpRequest") self.assertContains(response, 'data-autofill="{}"') factories.service_types() response = self.client.get(project.urls["createservice"], HTTP_X_REQUESTED_WITH="XMLHttpRequest") self.assertContains(response, ""effort_type": "consulting"") self.assertContains(response, ""effort_rate": 250")
def test_planned_work_crud(self): """Create, update and delete planned work""" service_types = factories.service_types() project = factories.ProjectFactory.create() self.client.force_login(project.owned_by) response = self.client.get(project.urls["creatework"] + "?request=bla") self.assertEqual(response.status_code, 200) # No crash response = self.client.post( project.urls["creatework"], { "modal-user": project.owned_by.id, "modal-title": "bla", "modal-planned_hours": 50, "modal-weeks": [monday().isoformat()], "modal-service_type": service_types.consulting.pk, }, HTTP_X_REQUESTED_WITH="XMLHttpRequest", ) self.assertEqual(response.status_code, 201) pw = PlannedWork.objects.get() response = self.client.post( pw.urls["update"], { "modal-user": project.owned_by.id, "modal-title": "bla", "modal-planned_hours": 50, "modal-weeks": [monday().isoformat()], "modal-service_type": service_types.consulting.pk, }, HTTP_X_REQUESTED_WITH="XMLHttpRequest", ) self.assertEqual(response.status_code, 202) response = self.client.post( project.urls["creatework"], { "modal-user": project.owned_by.id, "modal-title": "bla", "modal-planned_hours": 50, "modal-weeks": [ monday().isoformat(), (monday() + dt.timedelta(days=7)).isoformat(), ], "modal-service_type": service_types.consulting.pk, }, HTTP_X_REQUESTED_WITH="XMLHttpRequest", ) # print(response, response.content.decode("utf-8")) self.assertEqual(response.status_code, 201)
def test_assign_service_types(self): """The assign services type endpoint works and redirects""" service = factories.ServiceFactory.create() self.client.force_login(service.project.owned_by) service_types = factories.service_types() response = self.client.get( service.urls["assign_service_type"] + f"?service_type={service_types.consulting.pk}") self.assertRedirects(response, service.get_absolute_url()) service.refresh_from_db() self.assertEqual(service.effort_type, "consulting") self.assertEqual(service.effort_rate, 250)
def test_content_object_url(self): """The content_object_url admin helper works""" # Has URL deal = factories.DealFactory.create() content_type = ContentType.objects.get_for_model(deal) self.assertEqual( content_object_url(Note(content_type=content_type, object_id=42)), '<a href="/deals/42/">deal</a>', ) # No URL types = factories.service_types() content_type = ContentType.objects.get_for_model(types.consulting) self.assertEqual( content_object_url(Note(content_type=content_type, object_id=42)), "service type", )