コード例 #1
0
    def test_doest_show_active_invoices_when_paid_or_declined(self):
        project = ProjectFactory(lead=self.user)
        InvoiceFactory(project=project, status=PAID)
        InvoiceFactory(project=project, status=DECLINED)

        response = self.get_page()
        self.assertNotContains(response, "Active Invoices")
コード例 #2
0
    def test_active_invoices_with_invoices_in_correct_state(self):
        project = ProjectFactory(lead=self.user)
        InvoiceFactory(project=project, status=SUBMITTED)
        InvoiceFactory(project=project, status=CHANGES_REQUESTED)
        InvoiceFactory(project=project, status=RESUBMITTED)

        response = self.get_page()
        self.assertContains(response, "Active Invoices")
コード例 #3
0
    def test_doesnt_show_active_invoices_when_not_mine(self):
        project = ProjectFactory()
        InvoiceFactory(project=project, status=SUBMITTED)
        InvoiceFactory(project=project, status=CHANGES_REQUESTED)
        InvoiceFactory(project=project, status=RESUBMITTED)

        response = self.get_page()
        self.assertNotContains(response, "Active Invoices")
コード例 #4
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_finance1_can_get_required_valid_checks(self):
        user = FinanceFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=APPROVED_BY_STAFF, valid_checks=True)

        self.client.force_login(user)
        response = self.get_to_retrieve(project.id, invoice.id)
        self.assertEqual(response.status_code, 200)
        self.assertTrue(response.data.get('valid_checks'))
コード例 #5
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_applicant_cant_add_deliverables(self):
        user = ApplicantFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project)
        deliverable = DeliverableFactory(project=project)
        self.client.force_login(user)

        response = self.post_to_add(project.id, invoice.id, deliverable.id)
        self.assertEqual(response.status_code, 403)
コード例 #6
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_finance2_can_add_deliverables(self):
        user = Finance2Factory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=APPROVED_BY_FINANCE_1)
        deliverable = DeliverableFactory(project=project)
        self.client.force_login(user)

        response = self.post_to_add(project.id, invoice.id, deliverable.id)
        self.assertEqual(response.status_code, 201)
コード例 #7
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_staff_can_add_deliverables(self):
        user = StaffFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=SUBMITTED)
        deliverable = DeliverableFactory(project=project)
        self.client.force_login(user)

        response = self.post_to_add(project.id, invoice.id, deliverable.id)
        self.assertEqual(response.status_code, 201)
コード例 #8
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_finance1_can_set_required_valid_checks(self):
        user = FinanceFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=APPROVED_BY_STAFF)
        valid_checks = True
        valid_checks_link = 'https://google.com'

        self.client.force_login(user)
        response = self.post_to_set(project.id, invoice.id, valid_checks, valid_checks_link)
        self.assertEqual(response.status_code, 201)
コード例 #9
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_deliverable_available_gte_quantity(self):
        user = StaffFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=SUBMITTED)
        deliverable = DeliverableFactory(project=project)
        self.client.force_login(user)

        response = self.post_to_add(project.id, invoice.id, deliverable.id, quantity=3)
        self.assertEqual(response.status_code, 400)
        error_message = {'detail': ErrorDetail(string='Required quantity is more than available', code='invalid')}
        self.assertEqual(response.data, error_message)
コード例 #10
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_deliverable_dont_exists_in_project_deliverables(self):
        user = StaffFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=SUBMITTED)
        deliverable = DeliverableFactory()
        self.client.force_login(user)

        response = self.post_to_add(project.id, invoice.id, deliverable.id)
        self.assertEqual(response.status_code, 400)
        error_message = {'detail': ErrorDetail(string='Not Found', code='invalid')}
        self.assertEqual(response.data, error_message)
コード例 #11
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_finance2_can_remove_deliverables(self):
        user = Finance2Factory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=APPROVED_BY_FINANCE_1)
        deliverable = DeliverableFactory(project=project)
        invoice_deliverable = InvoiceDeliverableFactory(deliverable=deliverable)
        invoice.deliverables.add(invoice_deliverable)
        self.client.force_login(user)

        response = self.delete_to_remove(project.id, invoice.id, invoice_deliverable.id)
        self.assertEqual(response.status_code, 200)
コード例 #12
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_staff_cant_remove_deliverables_after_staff_approval(self):
        user = StaffFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=APPROVED_BY_STAFF)
        deliverable = DeliverableFactory(project=project)
        invoice_deliverable = InvoiceDeliverableFactory(deliverable=deliverable)
        invoice.deliverables.add(invoice_deliverable)
        self.client.force_login(user)

        response = self.delete_to_remove(project.id, invoice.id, invoice_deliverable.id)
        self.assertEqual(response.status_code, 403)
コード例 #13
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_staff_can_remove_deliverables(self):
        user = StaffFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=SUBMITTED)
        deliverable = DeliverableFactory(project=project)
        invoice_deliverable = InvoiceDeliverableFactory(deliverable=deliverable)
        invoice.deliverables.add(invoice_deliverable)
        self.client.force_login(user)

        response = self.delete_to_remove(project.id, invoice.id, invoice_deliverable.id)
        self.assertEqual(response.status_code, 200)
コード例 #14
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_applicant_cant_remove_deliverables(self):
        user = ApplicantFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project)
        deliverable = DeliverableFactory(project=project)
        invoice_deliverable = InvoiceDeliverableFactory(deliverable=deliverable)
        invoice.deliverables.add(invoice_deliverable)
        self.client.force_login(user)

        response = self.delete_to_remove(project.id, invoice.id, invoice_deliverable.id)
        self.assertEqual(response.status_code, 403)
コード例 #15
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_cant_get_set_required_checks_without_login(self):
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=APPROVED_BY_STAFF)
        valid_checks = True
        valid_checks_link = 'https://google.com'

        response = self.post_to_set(project.id, invoice.id, valid_checks, valid_checks_link)
        self.assertEqual(response.status_code, 403)

        response = self.get_to_retrieve(project.id, invoice.id)
        self.assertEqual(response.status_code, 403)
コード例 #16
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_cant_add_or_remove_wihtout_login(self):
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project)
        deliverable = DeliverableFactory(project=project)
        invoice_deliverable = InvoiceDeliverableFactory(deliverable=deliverable)

        response = self.post_to_add(project.id, invoice.id, deliverable.id)
        self.assertEqual(response.status_code, 403)

        response = self.delete_to_remove(project.id, invoice.id, invoice_deliverable.id)
        self.assertEqual(response.status_code, 403)
コード例 #17
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_deliverable_already_exists_in_invoice(self):
        user = StaffFactory()
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=SUBMITTED)
        deliverable = DeliverableFactory(project=project)
        invoice_deliverable = InvoiceDeliverableFactory(deliverable=deliverable)
        invoice.deliverables.add(invoice_deliverable)
        self.client.force_login(user)

        response = self.post_to_add(project.id, invoice.id, deliverable.id)
        self.assertEqual(response.status_code, 400)
        error_message = {'detail': ErrorDetail(string='Invoice Already has this deliverable', code='invalid')}
        self.assertEqual(response.data, error_message)
コード例 #18
0
ファイル: test_views.py プロジェクト: HyphaApp/hypha
    def test_deliverables_cant_removed_after_finance2_approval(self):
        project = ProjectFactory()
        invoice = InvoiceFactory(project=project, status=APPROVED_BY_FINANCE_2)
        deliverable = DeliverableFactory(project=project)
        invoice_deliverable = InvoiceDeliverableFactory(deliverable=deliverable)
        invoice.deliverables.add(invoice_deliverable)

        finance1 = FinanceFactory()
        finance2 = Finance2Factory()
        staff = StaffFactory()
        for user in [staff, finance1, finance2]:
            self.client.force_login(user)
            response = self.delete_to_remove(project.id, invoice.id, invoice_deliverable.id)
            self.assertEqual(response.status_code, 403)
コード例 #19
0
ファイル: test_messaging.py プロジェクト: HyphaApp/hypha
    def test_email_staff_update_invoice(self):
        project = self.source_factory()
        invoice = InvoiceFactory(project=project)
        staff = StaffFactory()

        self.adapter_process(
            MESSAGES.UPDATE_INVOICE,
            adapter=EmailAdapter(),
            user=staff,
            source=project,
            related=invoice,
        )

        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].to, [project.user.email])
コード例 #20
0
ファイル: test_messaging.py プロジェクト: HyphaApp/hypha
    def test_slack_staff_update_invoice(self):
        backend = get_backend()
        backend.reset_messages()
        project = self.source_factory()
        invoice = InvoiceFactory(project=project)
        staff = StaffFactory()

        self.adapter_process(
            MESSAGES.UPDATE_INVOICE,
            adapter=self.slack(),
            user=staff,
            source=project,
            related=invoice,
        )
        messages = backend.retrieve_messages()
        self.assertEqual(len(messages), 1)
コード例 #21
0
    def test_slack_staff_update_invoice(self):
        responses.add(responses.POST, self.target_url, status=200, body='OK')

        project = self.source_factory()
        invoice = InvoiceFactory(project=project)
        staff = StaffFactory()

        self.adapter_process(
            MESSAGES.UPDATE_INVOICE,
            adapter=self.slack(),
            user=staff,
            source=project,
            related=invoice,
        )

        self.assertEqual(len(responses.calls), 1)
コード例 #22
0
ファイル: test_messaging.py プロジェクト: HyphaApp/hypha
    def test_slack_applicant_update_invoice(self):
        backend = get_backend()
        backend.reset_messages()
        project = self.source_factory()
        invoice = InvoiceFactory(project=project)
        applicant = ApplicantFactory()

        self.adapter_process(
            MESSAGES.UPDATE_INVOICE,
            adapter=self.slack(),
            user=applicant,
            source=project,
            related=invoice,
        )
        messages = backend.retrieve_messages()

        self.assertEqual(len(messages), 1)
        message_payload = json.loads(messages[0]['payload'])
        self.assertIn(str(applicant), message_payload['text'])
        self.assertIn(str(project), message_payload['text'])
コード例 #23
0
    def test_slack_applicant_update_invoice(self):
        responses.add(responses.POST, self.target_url, status=200, body='OK')

        project = self.source_factory()
        invoice = InvoiceFactory(project=project)
        applicant = ApplicantFactory()

        self.adapter_process(
            MESSAGES.UPDATE_INVOICE,
            adapter=self.slack(),
            user=applicant,
            source=project,
            related=invoice,
        )

        self.assertEqual(len(responses.calls), 1)

        data = json.loads(responses.calls[0].request.body)
        self.assertIn(str(applicant), data['message'])
        self.assertIn(str(project), data['message'])
コード例 #24
0
ファイル: test_models.py プロジェクト: HyphaApp/hypha
 def test_can_save_related_invoice(self):
     other = InvoiceFactory()
     activity = ActivityFactory(related_object=other)
     self.assertEqual(other, activity.related_object)