add new binutils 1259 grant temporary name
[utils.git] / src / budget_sync / test / test_budget_graph.py
index 7aaadf5ae04865a2ac2a03b881d28ffa915bf05a..12219462490f1d1873f8d4534ee05470b8030dfe 100644 (file)
@@ -186,7 +186,8 @@ class TestBudgetGraph(unittest.TestCase):
             "budget_excluding_subtasks=10, budget_including_subtasks=20, "
             "fixed_budget_excluding_subtasks=10, "
             "fixed_budget_including_subtasks=20, milestone_str='milestone "
-            "1', milestone=Milestone(config=..., identifier='milestone 1', "
+            "1', is_in_nlnet_mou=False, "
+            "milestone=Milestone(config=..., identifier='milestone 1', "
             "canonical_bug_id=1), immediate_children=[#2], payments=[], "
             "status=BugStatus.CONFIRMED, assignee=Person<'person3'>, "
             "resolved_payments={}, payment_summaries={}), Node(graph=..., "
@@ -194,7 +195,8 @@ class TestBudgetGraph(unittest.TestCase):
             "budget_including_subtasks=10, "
             "fixed_budget_excluding_subtasks=10, "
             "fixed_budget_including_subtasks=10, milestone_str='milestone "
-            "1', milestone=Milestone(config=..., identifier='milestone 1', "
+            "1', is_in_nlnet_mou=True, "
+            "milestone=Milestone(config=..., identifier='milestone 1', "
             "canonical_bug_id=1), immediate_children=[], payments=[], "
             "status=BugStatus.CONFIRMED, assignee=Person<'person3'>, "
             "resolved_payments={}, payment_summaries={})], roots=[#1], "
@@ -244,6 +246,7 @@ class TestBudgetGraph(unittest.TestCase):
             "budget_excluding_subtasks=0, budget_including_subtasks=0, "
             "fixed_budget_excluding_subtasks=0, "
             "fixed_budget_including_subtasks=0, milestone_str=None, "
+            "is_in_nlnet_mou=False, "
             "milestone=None, immediate_children=[], payments=[], "
             "status=<unknown status: 'blah'>, assignee=<unknown assignee: "
             "'unknown@example.com'>, resolved_payments={}, "
@@ -292,6 +295,7 @@ alias2 = {paid=2020-03-16,amount=23}
             "budget_excluding_subtasks=0, budget_including_subtasks=0, "
             "fixed_budget_excluding_subtasks=0, "
             "fixed_budget_including_subtasks=0, milestone_str=None, "
+            "is_in_nlnet_mou=False, "
             "milestone=None, immediate_children=[], "
             "payments=[Payment(node=#1, payee=Person<'person1'>, "
             "payee_key='person1', amount=5, state=Paid, paid=2020-03-15, "
@@ -571,7 +575,6 @@ alias2 = {paid=2020-03-16,amount=23}
                         cf_budget=child_budget,
                         cf_total_budget=child_budget,
                         cf_nlnet_milestone="milestone 1",
-                        cf_payees_list="",
                         summary=""),
             ], EXAMPLE_CONFIG)
             node1: Node = bg.nodes[1]
@@ -1443,6 +1446,34 @@ alias2 = {paid=2020-03-16,amount=23}
         self.assertEqual(bg.nodes[1].assignee,
                          EXAMPLE_CONFIG.people["person2"])
 
+    def test_closest_bug_in_mou(self):
+        bg = BudgetGraph([
+            MockBug(bug_id=1, cf_nlnet_milestone="milestone 1"),
+            MockBug(bug_id=2, cf_budget_parent=1,
+                    cf_nlnet_milestone="milestone 1"),
+            MockBug(bug_id=3, cf_budget_parent=2,
+                    cf_nlnet_milestone="milestone 1"),
+            MockBug(bug_id=4, cf_budget_parent=1,
+                    cf_nlnet_milestone="milestone 1"),
+            MockBug(bug_id=5, cf_budget_parent=4,
+                    cf_nlnet_milestone="milestone 1"),
+            MockBug(bug_id=6),
+            MockBug(bug_id=7, cf_nlnet_milestone="bad milestone"),
+            MockBug(bug_id=8, cf_budget_parent=7,
+                    cf_nlnet_milestone="bad milestone"),
+        ], EXAMPLE_CONFIG)
+        errors = bg.get_errors()
+        self.assertErrorTypesMatches(errors, [BudgetGraphUnknownMilestone,
+                                              BudgetGraphUnknownMilestone])
+        self.assertEqual(bg.nodes[1].closest_bug_in_mou, None)
+        self.assertEqual(bg.nodes[2].closest_bug_in_mou, bg.nodes[2])
+        self.assertEqual(bg.nodes[3].closest_bug_in_mou, bg.nodes[2])
+        self.assertEqual(bg.nodes[4].closest_bug_in_mou, bg.nodes[4])
+        self.assertEqual(bg.nodes[5].closest_bug_in_mou, bg.nodes[4])
+        self.assertEqual(bg.nodes[6].closest_bug_in_mou, None)
+        self.assertEqual(bg.nodes[7].closest_bug_in_mou, None)
+        self.assertEqual(bg.nodes[8].closest_bug_in_mou, None)
+
 
 if __name__ == "__main__":
     unittest.main()