Пример #1
0
    def test_q1_updated_after_q2_snapshot_inserted(self):
        """Test that Q1 values are updated correctly when Q2 snapshot is added"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 1)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["total_spent_in_quarter"], 10)
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], 210)

        # Create Q2 snapshot
        q2 = Quarter(number=2)
        irm_snapshot_2 = IRMSnapshot(financial_year=self.fin_year, quarter=q2)
        self.project_snapshot_2 = ProvInfraProjectSnapshot(
            irm_snapshot=irm_snapshot_2,
            project=self.project,
            actual_expenditure_q1=11,
            actual_expenditure_q2=20,
            expenditure_from_previous_years_total=200,
        )
        # Recreate the chart data
        snapshots_data = time_series_data(
            [self.project_snapshot, self.project_snapshot_2])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["total_spent_in_quarter"], 11)
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], 211)
Пример #2
0
    def test_correct_value_used_for_previous_total(self):
        """
        Q2 snapshot's expenditure_from_previous_years_total updates total_spent of Q1 chart item.
        """
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 1)
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], 110)

        # Create Q2 Snapshot
        q2 = Quarter(number=2)
        irm_snapshot_2 = IRMSnapshot(financial_year=self.fin_year, quarter=q2)
        self.project_snapshot_2 = ProvInfraProjectSnapshot(
            irm_snapshot=irm_snapshot_2,
            project=self.project,
            actual_expenditure_q1=10,
            actual_expenditure_q2=20,
            expenditure_from_previous_years_total=200,
        )
        # Recreate the chart data
        snapshots_data = time_series_data(
            [self.project_snapshot, self.project_snapshot_2])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check total_spent_to_date values for Q1 and Q2
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], 210)
        self.assertEqual(snapshots_data[1]["total_spent_to_date"], 230)
Пример #3
0
    def test_chart_data_can_be_serialized(self):
        """Test that it is possible to serialize and deserialize chart data"""
        original_chart_data = time_series_data([self.project_snapshot])
        serialized_data = json.dumps(original_chart_data, cls=JSONEncoder)
        converted_chart_data = json.loads(serialized_data)

        self.assertEqual(original_chart_data, converted_chart_data)
Пример #4
0
    def test_status_is_null(self):
        """Test that status for Q1 (which created by Q2 snapshot) is Null"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["status"], None)
Пример #5
0
    def test_status_assigned_correctly(self):
        """Test that status for Q2 is Tender"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q2 values
        self.assertEqual(snapshots_data[1]["status"], "Tender")
Пример #6
0
    def test_total_project_cost_assigned_correctly(self):
        """Test that total project cost for Q2 is 100"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q2 values
        self.assertEqual(snapshots_data[1]["total_estimated_project_cost"],
                         100)
Пример #7
0
    def test_label_is_empty_for_q2(self):
        """Test that financial year label is empty for quarters except Q1"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q2 values
        self.assertEqual(snapshots_data[1]["quarter_label"], "END Q2")
        self.assertEqual(snapshots_data[1]["financial_year_label"], "")
Пример #8
0
    def test_total_project_cost_is_null(self):
        """Test that total project cost for Q1 (which created by Q2 snapshot) is Null"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["total_estimated_project_cost"],
                         None)
Пример #9
0
    def test_label_is_assigned_to_q1(self):
        """Test that financial year label is correctly assigned for Q1"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["quarter_label"], "END Q1")
        self.assertEqual(snapshots_data[0]["financial_year_label"], "2030-31")
Пример #10
0
    def test_total_spends_are_correct(self):
        """Test that total spends are none because of actual_expenditure_q1"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 3)

        # Check total_spent_to_date values for Q1, Q2 and Q3
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], 210)
        self.assertEqual(snapshots_data[1]["total_spent_to_date"], None)
        self.assertEqual(snapshots_data[2]["total_spent_to_date"], None)
Пример #11
0
    def test_total_spends_are_none(self):
        """Test that Q1 and Q2 total_spent values when expenditure_
        from_previous_years_total is empty."""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check total_spent_to_date values for Q1 and Q2
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], None)
        self.assertEqual(snapshots_data[1]["total_spent_to_date"], None)
Пример #12
0
    def test_total_spent_to_dates_are_correct(self):
        """Test that the second year's total_spent_to_date starts from the second
        year's total_from_previous_financial_years."""
        snapshots_data = time_series_data(
            [self.project_snapshot, self.project_snapshot_2])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 5)

        # Check that 2019 Q1 Snapshot's total_spent_to_date is correct
        self.assertNotEqual(snapshots_data[4]["total_spent_to_date"], 110)
        self.assertEqual(snapshots_data[4]["total_spent_to_date"], 250)
Пример #13
0
    def test_label_is_correct(self):
        """Test that quarter labels start with 'END Q' and ends with (1,2,3,4)"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 4)

        # Check quarter label texts for all quarters
        self.assertEqual(snapshots_data[0]["quarter_label"], "END Q1")
        self.assertEqual(snapshots_data[1]["quarter_label"], "END Q2")
        self.assertEqual(snapshots_data[2]["quarter_label"], "END Q3")
        self.assertEqual(snapshots_data[3]["quarter_label"], "END Q4")
Пример #14
0
    def test_dates_are_end_of_quarters(self):
        """Test that all dates are end day of a quarter"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 4)

        # Q1->06-30, Q2->09-30, Q3->12-31, Q4->03-31
        self.assertEqual(snapshots_data[0]["date"], "2019-06-30")
        self.assertEqual(snapshots_data[1]["date"], "2019-09-30")
        self.assertEqual(snapshots_data[2]["date"], "2019-12-31")
        self.assertEqual(snapshots_data[3]["date"], "2020-03-31")
Пример #15
0
    def test_q1_q2_updated_after_q3_snapshot_inserted(self):
        """Test that Q1 and Q2 are updated correctly when Q3 inserted"""
        snapshots_data = time_series_data(
            [self.project_snapshot, self.project_snapshot_2])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["total_spent_in_quarter"], 11)
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], 211)

        # Check Q2 values
        self.assertEqual(snapshots_data[1]["total_spent_in_quarter"], 20)
        self.assertEqual(snapshots_data[1]["total_spent_to_date"], 231)

        # Create Q3 snapshot
        q3 = Quarter(number=3)
        irm_snapshot_3 = IRMSnapshot(financial_year=self.fin_year, quarter=q3)
        self.project_snapshot_3 = ProvInfraProjectSnapshot(
            irm_snapshot=irm_snapshot_3,
            project=self.project,
            actual_expenditure_q1=12,
            actual_expenditure_q2=21,
            actual_expenditure_q3=30,
            expenditure_from_previous_years_total=200,
        )
        # Recreate the chart data
        snapshots_data = time_series_data([
            self.project_snapshot, self.project_snapshot_2,
            self.project_snapshot_3
        ])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 3)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["total_spent_in_quarter"], 12)
        self.assertEqual(snapshots_data[0]["total_spent_to_date"], 212)

        # Check Q2 values
        self.assertEqual(snapshots_data[1]["total_spent_in_quarter"], 21)
        self.assertEqual(snapshots_data[1]["total_spent_to_date"], 233)
Пример #16
0
    def test_two_snapshots_emitted(self):
        """Test that if the first snapshot is Q2, items are created for Q1 and Q2 but nothing later than Q2."""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 2)

        # Check Q1 values
        self.assertEqual(snapshots_data[0]["financial_year_label"], "2030-31")
        self.assertEqual(snapshots_data[0]["date"], "2030-06-30")
        self.assertEqual(snapshots_data[0]["quarter_label"], "END Q1")

        # Check Q2 values
        self.assertEqual(snapshots_data[1]["date"], "2030-09-30")
        self.assertEqual(snapshots_data[1]["quarter_label"], "END Q2")
Пример #17
0
    def test_events_when_latest_snapshot_has_empty_dates(self):
        """Test that only not null values emitted to events"""
        q3 = Quarter(number=3)
        irm_snapshot_2 = IRMSnapshot(financial_year=self.fin_year, quarter=q3)
        self.project_snapshot_2 = ProvInfraProjectSnapshot(
            irm_snapshot=irm_snapshot_2,
            project=self.project,
            start_date="2029-09-30")
        events_data = time_series_data(
            [self.project_snapshot, self.project_snapshot_2])
        events_data = events_data[u"events"]
        self.assertEqual(len(events_data), 1)

        # Project Start Date
        self.assertEqual(events_data[0]["date"], "2029-09-30")
Пример #18
0
    def test_dates_match_with_quarters(self):
        """Test that dates and quarter_labels match"""
        snapshots_data = time_series_data([self.project_snapshot])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 4)

        # Q1->06-30, Q2->09-30, Q3->12-31, Q4->03-31
        self.assertEqual(snapshots_data[0]["date"], "2019-06-30")
        self.assertEqual(snapshots_data[0]["quarter_label"], "END Q1")
        self.assertEqual(snapshots_data[1]["date"], "2019-09-30")
        self.assertEqual(snapshots_data[1]["quarter_label"], "END Q2")
        self.assertEqual(snapshots_data[2]["date"], "2019-12-31")
        self.assertEqual(snapshots_data[2]["quarter_label"], "END Q3")
        self.assertEqual(snapshots_data[3]["date"], "2020-03-31")
        self.assertEqual(snapshots_data[3]["quarter_label"], "END Q4")
Пример #19
0
    def test_events_assigned_correctly(self):
        """Test that all dates are assigned correctly"""
        events_data = time_series_data([self.project_snapshot])
        events_data = events_data[u"events"]
        self.assertEqual(len(events_data), 5)

        # Project Start Date
        self.assertEqual(events_data[0]["date"], "2029-09-30")
        # Estimated Construction Start Date
        self.assertEqual(events_data[1]["date"], "2030-01-01")
        # Estimated Completion Date
        self.assertEqual(events_data[2]["date"], "2033-02-01")
        # Contracted Construction End Date
        self.assertEqual(events_data[3]["date"], "2033-01-31")
        # Estimated Construction End Date
        self.assertEqual(events_data[4]["date"], "2032-12-31")
Пример #20
0
    def test_six_snapshots_emitted(self):
        """Test that 2018 Q2 created 2, and 2019 Q4 created 4 items"""
        snapshots_data = time_series_data(
            [self.project_snapshot, self.project_snapshot_2])
        snapshots_data = snapshots_data[u"snapshots"]
        self.assertEqual(len(snapshots_data), 6)

        # Check 2018's Q1 and Q2 in a row
        self.assertEqual(snapshots_data[0]["financial_year_label"], "2018-19")
        self.assertEqual(snapshots_data[0]["date"], "2018-06-30")
        self.assertEqual(snapshots_data[0]["quarter_label"], "END Q1")
        self.assertEqual(snapshots_data[1]["date"], "2018-09-30")
        self.assertEqual(snapshots_data[1]["quarter_label"], "END Q2")

        # Check 2019's Q1, Q2, Q3 and Q4 in a row
        self.assertEqual(snapshots_data[2]["financial_year_label"], "2019-20")
        self.assertEqual(snapshots_data[2]["date"], "2019-06-30")
        self.assertEqual(snapshots_data[2]["quarter_label"], "END Q1")
        self.assertEqual(snapshots_data[3]["date"], "2019-09-30")
        self.assertEqual(snapshots_data[3]["quarter_label"], "END Q2")
        self.assertEqual(snapshots_data[4]["date"], "2019-12-31")
        self.assertEqual(snapshots_data[4]["quarter_label"], "END Q3")
        self.assertEqual(snapshots_data[5]["date"], "2020-03-31")
        self.assertEqual(snapshots_data[5]["quarter_label"], "END Q4")