diff options
Diffstat (limited to 'beancount_extras_kris7t/plugins/closing_balance_test.py')
-rw-r--r-- | beancount_extras_kris7t/plugins/closing_balance_test.py | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/beancount_extras_kris7t/plugins/closing_balance_test.py b/beancount_extras_kris7t/plugins/closing_balance_test.py new file mode 100644 index 0000000..40115bf --- /dev/null +++ b/beancount_extras_kris7t/plugins/closing_balance_test.py | |||
@@ -0,0 +1,124 @@ | |||
1 | __copyright__ = 'Copyright (c) 2020 Kristóf Marussy <kristof@marussy.com>' | ||
2 | __license__ = 'GNU GPLv2' | ||
3 | |||
4 | import unittest | ||
5 | |||
6 | from beancount import loader | ||
7 | from beancount.parser import cmptest | ||
8 | |||
9 | |||
10 | class TestClosingBalance(cmptest.TestCase): | ||
11 | |||
12 | @loader.load_doc() | ||
13 | def test_close_account_correct(self, entries, errors, options_map): | ||
14 | ''' | ||
15 | plugin "beancount_extras_kris7t.plugins.closing_balance" | ||
16 | |||
17 | 2020-01-01 open Assets:Checking | ||
18 | 2020-01-01 open Equity:Opening-Balances | ||
19 | 2020-01-01 open Equity:Closing-Balances | ||
20 | |||
21 | 2020-01-01 * "Opening balances" | ||
22 | Assets:Checking 100 USD | ||
23 | Equity:Opening-Balances -100 USD | ||
24 | |||
25 | 2020-03-15 balance Assets:Checking 100 USD | ||
26 | close-to: Equity:Closing-Balances | ||
27 | ''' | ||
28 | self.assertEqualEntries(''' | ||
29 | plugin "beancount_extras_kris7t.plugins.closing_balance" | ||
30 | |||
31 | 2020-01-01 open Assets:Checking | ||
32 | 2020-01-01 open Equity:Opening-Balances | ||
33 | 2020-01-01 open Equity:Closing-Balances | ||
34 | |||
35 | 2020-01-01 * "Opening balances" | ||
36 | Assets:Checking 100 USD | ||
37 | Equity:Opening-Balances -100 USD | ||
38 | |||
39 | 2020-03-15 balance Assets:Checking 100 USD | ||
40 | close-to: Equity:Closing-Balances | ||
41 | |||
42 | 2020-03-15 * "Closing Assets:Checking" | ||
43 | Assets:Checking -100 USD | ||
44 | closing: TRUE | ||
45 | Equity:Closing-Balances 100 USD | ||
46 | |||
47 | 2020-03-15 close Assets:Checking | ||
48 | ''', entries) | ||
49 | |||
50 | @loader.load_doc(expect_errors=True) | ||
51 | def test_close_account_incorrect(self, entries, errors, options_map): | ||
52 | ''' | ||
53 | plugin "beancount_extras_kris7t.plugins.closing_balance" | ||
54 | |||
55 | 2020-01-01 open Assets:Checking | ||
56 | 2020-01-01 open Equity:Opening-Balances | ||
57 | 2020-01-01 open Equity:Closing-Balances | ||
58 | |||
59 | 2020-01-01 * "Opening balances" | ||
60 | Assets:Checking 100 USD | ||
61 | Equity:Opening-Balances -100 USD | ||
62 | |||
63 | 2020-03-15 balance Assets:Checking 80 USD | ||
64 | close-to: Equity:Closing-Balances | ||
65 | ''' | ||
66 | self.assertEqualEntries(''' | ||
67 | plugin "beancount_extras_kris7t.plugins.closing_balance" | ||
68 | |||
69 | 2020-01-01 open Assets:Checking | ||
70 | 2020-01-01 open Equity:Opening-Balances | ||
71 | 2020-01-01 open Equity:Closing-Balances | ||
72 | |||
73 | 2020-01-01 * "Opening balances" | ||
74 | Assets:Checking 100 USD | ||
75 | Equity:Opening-Balances -100 USD | ||
76 | |||
77 | 2020-03-15 balance Assets:Checking 80 USD | ||
78 | close-to: Equity:Closing-Balances | ||
79 | |||
80 | 2020-03-15 * "Closing Assets:Checking" | ||
81 | Assets:Checking -80 USD | ||
82 | closing: TRUE | ||
83 | Equity:Closing-Balances 80 USD | ||
84 | |||
85 | 2020-03-15 close Assets:Checking | ||
86 | ''', entries) | ||
87 | self.assertRegex(errors[0].message, '^Balance failed for \'Assets:Checking\'') | ||
88 | |||
89 | @loader.load_doc() | ||
90 | def test_close_account_zero(self, entries, errors, options_map): | ||
91 | ''' | ||
92 | plugin "beancount_extras_kris7t.plugins.closing_balance" | ||
93 | |||
94 | 2020-01-01 open Assets:Checking | ||
95 | |||
96 | 2020-03-15 balance Assets:Checking 0 USD | ||
97 | close-to: Equity:Closing-Balances | ||
98 | ''' | ||
99 | self.assertEqualEntries(''' | ||
100 | plugin "beancount_extras_kris7t.plugins.closing_balance" | ||
101 | |||
102 | 2020-01-01 open Assets:Checking | ||
103 | |||
104 | 2020-03-15 balance Assets:Checking 0 USD | ||
105 | close-to: Equity:Closing-Balances | ||
106 | |||
107 | 2020-03-15 close Assets:Checking | ||
108 | ''', entries) | ||
109 | |||
110 | @loader.load_doc(expect_errors=True) | ||
111 | def test_invalid_close_to(self, entries, errors, options_map): | ||
112 | ''' | ||
113 | plugin "beancount_extras_kris7t.plugins.closing_balance" | ||
114 | |||
115 | 2020-01-01 open Assets:Checking | ||
116 | |||
117 | 2020-03-15 balance Assets:Checking 100 USD | ||
118 | close-to: TRUE | ||
119 | ''' | ||
120 | self.assertRegex(errors[0].message, '^close-to must be a string') | ||
121 | |||
122 | |||
123 | if __name__ == '__main__': | ||
124 | unittest.main() | ||