Exemple #1
0
    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),
        )
Exemple #2
0
    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,
                            "&quot;effort_type&quot;: &quot;consulting&quot;")
        self.assertContains(response, "&quot;effort_rate&quot;: 250")
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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",
        )