aboutsummaryrefslogtreecommitdiffstats
path: root/beancount_extras_kris7t/plugins/closing_balance_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'beancount_extras_kris7t/plugins/closing_balance_test.py')
-rw-r--r--beancount_extras_kris7t/plugins/closing_balance_test.py124
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
4import unittest
5
6from beancount import loader
7from beancount.parser import cmptest
8
9
10class 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
123if __name__ == '__main__':
124 unittest.main()