예제 #1
0
    def test_delete_budget_value_from_wfl2(self):
        """
        When budget deleted, then related wfl2s total_estimated_budget
        should be updated
        """

        wflvl1 = factories.WorkflowLevel1(name='WorkflowLevel1',
                                          organization=self.organization)
        wflvl2 = factories.WorkflowLevel2(name='WorkflowLevel2',
                                          workflowlevel1=wflvl1,
                                          total_estimated_budget=0,
                                          actual_cost=0)
        factories.Budget(proposed_value=100,
                         actual_value=10,
                         workflowlevel2=wflvl2)

        budget_2 = factories.Budget(proposed_value=80,
                                    actual_value=20,
                                    workflowlevel2=wflvl2)

        wflvl2 = WorkflowLevel2.objects.get(pk=wflvl2.pk)
        self.assertEqual(wflvl2.total_estimated_budget, 180.00)
        self.assertEqual(wflvl2.actual_cost, 30.00)

        budget_2.delete()
        wflvl2 = WorkflowLevel2.objects.get(pk=wflvl2.pk)
        self.assertEqual(wflvl2.total_estimated_budget, 100.00)
        self.assertEqual(wflvl2.actual_cost, 10.00)
예제 #2
0
    def test_save_budget_value_without_wfl2_create(self):
        """
        When a budget is created without wfl2s, it's should work properly
        """
        budget = factories.Budget(proposed_value=100, actual_value=10)

        self.assertEqual(budget.proposed_value, 100.00)
        self.assertEqual(budget.actual_value, 10.00)
예제 #3
0
    def test_list_budget_normaluser_one_result(self):
        tola_user = factories.TolaUser()
        wflvl1 = factories.WorkflowLevel1(name='WorkflowLevel1',
                                          organization=tola_user.organization)
        wflvl2 = factories.WorkflowLevel2(name='WorkflowLevel2',
                                          workflowlevel1=wflvl1)
        factories.Budget(workflowlevel2=wflvl2)

        self.request.user = tola_user.user
        view = BudgetViewSet.as_view({'get': 'list'})
        response = view(self.request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.data), 1)
예제 #4
0
    def test_filter_budget_org_superuser(self):
        self.tola_user.user.is_staff = True
        self.tola_user.user.is_superuser = True
        self.tola_user.user.save()

        another_org = factories.Organization(name='Another Org')
        wkflvl1_1 = factories.WorkflowLevel1(
            organization=self.tola_user.organization)
        wkflvl1_2 = factories.WorkflowLevel1(organization=another_org)
        wkflvl2_1 = factories.WorkflowLevel2(workflowlevel1=wkflvl1_1)
        wkflvl2_2 = factories.WorkflowLevel2(workflowlevel1=wkflvl1_2)
        budget1 = factories.Budget(workflowlevel2=wkflvl2_1)
        factories.Budget(contributor='Paul McCartney',
                         workflowlevel2=wkflvl2_2)

        request = self.factory.get(
            '/api/budget/?workflowlevel2__workflowlevel1__organization__id'
            '=%s' % self.tola_user.organization.pk)
        request.user = self.tola_user.user
        view = BudgetViewSet.as_view({'get': 'list'})
        response = view(request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.data), 1)
        self.assertEqual(response.data[0]['contributor'], budget1.contributor)
예제 #5
0
    def test_save_budget_value_from_wfl2_update(self):
        """
        When a budget is updated, the related wfl2s total_estimated_budget
        should be updated
        """

        wflvl1 = factories.WorkflowLevel1(name='WorkflowLevel1',
                                          organization=self.organization)
        wflvl2 = factories.WorkflowLevel2(name='WorkflowLevel2',
                                          workflowlevel1=wflvl1,
                                          total_estimated_budget=0,
                                          actual_cost=0)
        budget = factories.Budget(proposed_value=100,
                                  actual_value=10,
                                  workflowlevel2=wflvl2)

        budget.proposed_value = 150
        budget.actual_value = 50
        budget.save()

        wflvl2 = WorkflowLevel2.objects.get(pk=wflvl2.pk)
        self.assertEqual(wflvl2.total_estimated_budget, 150.00)
        self.assertEqual(wflvl2.actual_cost, 50.00)