"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=..., "
"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], "
"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={}, "
"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, "
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]
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()