a95a686d54382d29b603b6a2b271451c7a0e04c3
[utils.git] / src / budget_sync / test / test_write_budget_csv.py
1 from budget_sync.budget_graph import BudgetGraph
2 from budget_sync.config import Config
3 from budget_sync.test.mock_path import DIR, MockPath
4 from budget_sync.test.test_mock_path import make_filesystem_and_report_if_error
5 from budget_sync.util import pretty_print
6 from budget_sync.write_budget_csv import write_budget_csv
7 from budget_sync.test.mock_bug import MockBug
8 import unittest
9
10
11 class TestWriteBudgetMarkdown(unittest.TestCase):
12 maxDiff = None
13
14 def test(self):
15 config = Config.from_str(
16 """
17 bugzilla_url = "https://bugzilla.example.com/"
18 [people."person1"]
19 aliases = ["person1_alias1", "alias1"]
20 full_name = "Person One"
21 [people."person2"]
22 email = "person2@example.com"
23 aliases = ["person1_alias2", "alias2", "person 2"]
24 full_name = "Person Two"
25 [people."person3"]
26 email = "user@example.com"
27 full_name = "Person Three"
28 [milestones]
29 "milestone 1" = { canonical_bug_id = 1 }
30 "milestone 2" = { canonical_bug_id = 2 }
31 """)
32 budget_graph = BudgetGraph([
33 MockBug(bug_id=1,
34 cf_budget_parent=None,
35 cf_budget="1000",
36 cf_total_budget="1000",
37 cf_nlnet_milestone="milestone 1",
38 cf_payees_list="""
39 person1 = 123
40 alias1 = 456
41 person2 = {amount=421,paid=2020-01-01}
42 """,
43 summary="",
44 assigned_to="person2@example.com"),
45 MockBug(bug_id=2,
46 cf_budget_parent=None,
47 cf_budget="0",
48 cf_total_budget="0",
49 cf_nlnet_milestone="milestone 2",
50 cf_payees_list="",
51 summary="",
52 assigned_to="person2@example.com"),
53 ], config)
54 self.assertEqual([], budget_graph.get_errors())
55 # pretty_print(budget_graph)
56 with make_filesystem_and_report_if_error(self) as filesystem:
57 output_dir = MockPath("/output_dir/", filesystem=filesystem)
58 write_budget_csv(budget_graph, output_dir)
59 self.assertEqual(filesystem.files, {
60 '/': DIR,
61 '/output_dir': DIR,
62 '/output_dir/csvs.mdwn': b"""\
63 # milestone 1
64
65 [[!table format=csv file="/output_dir/milestone 1.csv"]]
66 # milestone 2
67
68 [[!table format=csv file="/output_dir/milestone 2.csv"]]""",
69 '/output_dir/milestone 1.csv': b"""\
70 bug_id,excl_subtasks,inc_subtasks,fixed_excl_subtasks,fixed_inc_subtasks,req_excl_subtasks,paid_excl_subtasks,person1 (planned amt),person1 (req amt),person1 (req date),person1 (paid amt),person1 (paid date),person2 (planned amt),person2 (req amt),person2 (req date),person2 (paid amt),person2 (paid date)
71 1,1000,1000,1000,1000,421,421,579,0,,0,,421,421,,421,2020-01-01
72 """,
73 '/output_dir/milestone 2.csv': b"""\
74 bug_id,excl_subtasks,inc_subtasks,fixed_excl_subtasks,fixed_inc_subtasks,req_excl_subtasks,paid_excl_subtasks
75 """
76 })
77 # TODO: add more test cases
78
79
80 if __name__ == "__main__":
81 unittest.main()