diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-01-25 01:14:28 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2021-01-25 01:14:28 +0100 |
commit | a1c2a999e449054d6641bbb633954e45fcd63f90 (patch) | |
tree | 47628c10ded721d66e47b5f87f501293cd8af003 /beancount_extras_kris7t/plugins/transfer_accounts_test.py | |
parent | Initialize package (diff) | |
download | beancount-extras-kris7t-a1c2a999e449054d6641bbb633954e45fcd63f90.tar.gz beancount-extras-kris7t-a1c2a999e449054d6641bbb633954e45fcd63f90.tar.zst beancount-extras-kris7t-a1c2a999e449054d6641bbb633954e45fcd63f90.zip |
Add plugins and importers from private config
The importers are missing tests, because not having any specifications
for the import formats means we must use real, private data as test inputs
Diffstat (limited to 'beancount_extras_kris7t/plugins/transfer_accounts_test.py')
-rw-r--r-- | beancount_extras_kris7t/plugins/transfer_accounts_test.py | 628 |
1 files changed, 628 insertions, 0 deletions
diff --git a/beancount_extras_kris7t/plugins/transfer_accounts_test.py b/beancount_extras_kris7t/plugins/transfer_accounts_test.py new file mode 100644 index 0000000..0883522 --- /dev/null +++ b/beancount_extras_kris7t/plugins/transfer_accounts_test.py | |||
@@ -0,0 +1,628 @@ | |||
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 TestTransferAccounts(cmptest.TestCase): | ||
11 | |||
12 | @loader.load_doc() | ||
13 | def test_same_currency(self, entries, _, __): | ||
14 | ''' | ||
15 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
16 | |||
17 | 2020-01-01 open Assets:Checking | ||
18 | 2020-01-01 open Liabilities:CreditCard | ||
19 | 2020-01-01 open Expenses:Taxi | ||
20 | |||
21 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
22 | Assets:Checking -20 USD | ||
23 | Expenses:Taxi | ||
24 | transfer-account: Liabilities:CreditCard | ||
25 | transfer-date: 2020-03-10 | ||
26 | ''' | ||
27 | self.assertEqualEntries(''' | ||
28 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
29 | |||
30 | 2020-01-01 open Assets:Checking | ||
31 | 2020-01-01 open Liabilities:CreditCard | ||
32 | 2020-01-01 open Expenses:Taxi | ||
33 | |||
34 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
35 | Assets:Checking -20 USD | ||
36 | Liabilities:CreditCard 20 USD | ||
37 | |||
38 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
39 | Expenses:Taxi 20 USD | ||
40 | Liabilities:CreditCard -20 USD | ||
41 | ''', entries) | ||
42 | |||
43 | @loader.load_doc() | ||
44 | def test_missing_date(self, entries, _, __): | ||
45 | ''' | ||
46 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
47 | |||
48 | 2020-01-01 open Assets:Checking | ||
49 | 2020-01-01 open Liabilities:CreditCard | ||
50 | 2020-01-01 open Expenses:Taxi | ||
51 | |||
52 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
53 | Assets:Checking -20 USD | ||
54 | Expenses:Taxi | ||
55 | transfer-account: Liabilities:CreditCard | ||
56 | ''' | ||
57 | self.assertEqualEntries(''' | ||
58 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
59 | |||
60 | 2020-01-01 open Assets:Checking | ||
61 | 2020-01-01 open Liabilities:CreditCard | ||
62 | 2020-01-01 open Expenses:Taxi | ||
63 | |||
64 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
65 | Assets:Checking -20 USD | ||
66 | Liabilities:CreditCard 20 USD | ||
67 | |||
68 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
69 | Expenses:Taxi 20 USD | ||
70 | Liabilities:CreditCard -20 USD | ||
71 | ''', entries) | ||
72 | |||
73 | @loader.load_doc(expect_errors=True) | ||
74 | def test_missing_account_with_date(self, _, errors, __): | ||
75 | ''' | ||
76 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
77 | |||
78 | 2020-01-01 open Assets:Checking | ||
79 | 2020-01-01 open Liabilities:CreditCard | ||
80 | 2020-01-01 open Expenses:Taxi | ||
81 | |||
82 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
83 | Assets:Checking -20 USD | ||
84 | Expenses:Taxi | ||
85 | transfer-date: 2020-03-10 | ||
86 | ''' | ||
87 | self.assertRegex(errors[0].message, 'transfer-date was set but transfer-account was not') | ||
88 | |||
89 | @loader.load_doc(expect_errors=True) | ||
90 | def test_missing_account_with_conversion(self, _, errors, __): | ||
91 | ''' | ||
92 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
93 | |||
94 | 2020-01-01 open Assets:Checking | ||
95 | 2020-01-01 open Liabilities:CreditCard | ||
96 | 2020-01-01 open Expenses:Taxi | ||
97 | |||
98 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
99 | Assets:Checking -25.60 CAD | ||
100 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
101 | transfer-converted: FALSE | ||
102 | ''' | ||
103 | self.assertRegex( | ||
104 | errors[0].message, 'transfer-converted was set but transfer-account was not') | ||
105 | |||
106 | @loader.load_doc(expect_errors=True) | ||
107 | def test_invalid_account(self, _, errors, __): | ||
108 | ''' | ||
109 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
110 | |||
111 | 2020-01-01 open Assets:Checking | ||
112 | 2020-01-01 open Liabilities:CreditCard | ||
113 | 2020-01-01 open Expenses:Taxi | ||
114 | |||
115 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
116 | Assets:Checking -20 USD | ||
117 | Expenses:Taxi | ||
118 | transfer-account: 2020-03-10 | ||
119 | ''' | ||
120 | self.assertRegex(errors[0].message, 'transfer-account must be a string.*') | ||
121 | |||
122 | @loader.load_doc(expect_errors=True) | ||
123 | def test_invalid_date(self, _, errors, __): | ||
124 | ''' | ||
125 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
126 | |||
127 | 2020-01-01 open Assets:Checking | ||
128 | 2020-01-01 open Liabilities:CreditCard | ||
129 | 2020-01-01 open Expenses:Taxi | ||
130 | |||
131 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
132 | Assets:Checking -20 USD | ||
133 | Expenses:Taxi | ||
134 | transfer-account: Liabilities:CreditCard | ||
135 | transfer-date: "Ides of March" | ||
136 | ''' | ||
137 | self.assertRegex(errors[0].message, 'transfer-date must be a date.*') | ||
138 | |||
139 | @loader.load_doc(expect_errors=True) | ||
140 | def test_invalid_conversion(self, _, errors, __): | ||
141 | ''' | ||
142 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
143 | |||
144 | 2020-01-01 open Assets:Checking | ||
145 | 2020-01-01 open Liabilities:CreditCard | ||
146 | 2020-01-01 open Expenses:Taxi | ||
147 | |||
148 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
149 | Assets:Checking -25.60 CAD | ||
150 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
151 | transfer-account: Liabilities:CreditCard | ||
152 | transfer-converted: "indeed" | ||
153 | ''' | ||
154 | self.assertRegex(errors[0].message, 'transfer-converted must be a Boolean.*') | ||
155 | |||
156 | @loader.load_doc(expect_errors=True) | ||
157 | def test_invalid_account_conversion(self, _, errors, __): | ||
158 | ''' | ||
159 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
160 | |||
161 | 2020-01-01 open Liabilities:CreditCard | ||
162 | transfer-converted: "Indeed" | ||
163 | ''' | ||
164 | self.assertRegex(errors[0].message, 'transfer-converted must be a Boolean.*') | ||
165 | |||
166 | @loader.load_doc(expect_errors=True) | ||
167 | def test_redundant_conversion(self, _, errors, __): | ||
168 | ''' | ||
169 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
170 | |||
171 | 2020-01-01 open Assets:Checking | ||
172 | 2020-01-01 open Liabilities:CreditCard | ||
173 | 2020-01-01 open Expenses:Taxi | ||
174 | |||
175 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
176 | Assets:Checking -20 USD | ||
177 | Expenses:Taxi | ||
178 | transfer-account: Liabilities:CreditCard | ||
179 | transfer-converted: TRUE | ||
180 | ''' | ||
181 | self.assertRegex( | ||
182 | errors[0].message, 'transfer-converted was set, but there is no conversion.*') | ||
183 | |||
184 | @loader.load_doc() | ||
185 | def test_converted_price_false(self, entries, _, __): | ||
186 | ''' | ||
187 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
188 | |||
189 | 2020-01-01 open Assets:Checking | ||
190 | 2020-01-01 open Liabilities:CreditCard | ||
191 | 2020-01-01 open Expenses:Taxi | ||
192 | |||
193 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
194 | Assets:Checking -25.60 CAD | ||
195 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
196 | transfer-account: Liabilities:CreditCard | ||
197 | transfer-date: 2020-03-10 | ||
198 | transfer-converted: FALSE | ||
199 | ''' | ||
200 | self.assertEqualEntries(''' | ||
201 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
202 | |||
203 | 2020-01-01 open Assets:Checking | ||
204 | 2020-01-01 open Liabilities:CreditCard | ||
205 | 2020-01-01 open Expenses:Taxi | ||
206 | |||
207 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
208 | Assets:Checking -25.60 CAD | ||
209 | Liabilities:CreditCard 25.60 CAD | ||
210 | |||
211 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
212 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
213 | Liabilities:CreditCard -25.60 CAD | ||
214 | ''', entries) | ||
215 | |||
216 | @loader.load_doc() | ||
217 | def test_converted_price_true(self, entries, _, __): | ||
218 | ''' | ||
219 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
220 | |||
221 | 2020-01-01 open Assets:Checking | ||
222 | 2020-01-01 open Liabilities:CreditCard | ||
223 | 2020-01-01 open Expenses:Taxi | ||
224 | |||
225 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
226 | Assets:Checking -25.60 CAD | ||
227 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
228 | transfer-account: Liabilities:CreditCard | ||
229 | transfer-date: 2020-03-10 | ||
230 | transfer-converted: TRUE | ||
231 | ''' | ||
232 | self.assertEqualEntries(''' | ||
233 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
234 | |||
235 | 2020-01-01 open Assets:Checking | ||
236 | 2020-01-01 open Liabilities:CreditCard | ||
237 | 2020-01-01 open Expenses:Taxi | ||
238 | |||
239 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
240 | Assets:Checking -25.60 CAD | ||
241 | Liabilities:CreditCard 20 USD @ 1.28 CAD | ||
242 | |||
243 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
244 | Expenses:Taxi 20 USD | ||
245 | Liabilities:CreditCard -20 USD | ||
246 | ''', entries) | ||
247 | |||
248 | @loader.load_doc() | ||
249 | def test_converted_price_default(self, entries, _, __): | ||
250 | ''' | ||
251 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
252 | |||
253 | 2020-01-01 open Assets:Checking | ||
254 | 2020-01-01 open Liabilities:CreditCard | ||
255 | 2020-01-01 open Expenses:Taxi | ||
256 | |||
257 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
258 | Assets:Checking -25.60 CAD | ||
259 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
260 | transfer-account: Liabilities:CreditCard | ||
261 | transfer-date: 2020-03-10 | ||
262 | ''' | ||
263 | self.assertEqualEntries(''' | ||
264 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
265 | |||
266 | 2020-01-01 open Assets:Checking | ||
267 | 2020-01-01 open Liabilities:CreditCard | ||
268 | 2020-01-01 open Expenses:Taxi | ||
269 | |||
270 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
271 | Assets:Checking -25.60 CAD | ||
272 | Liabilities:CreditCard 20 USD @ 1.28 CAD | ||
273 | |||
274 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
275 | Expenses:Taxi 20 USD | ||
276 | Liabilities:CreditCard -20 USD | ||
277 | ''', entries) | ||
278 | |||
279 | @loader.load_doc() | ||
280 | def test_converted_price_account_false(self, entries, _, __): | ||
281 | ''' | ||
282 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
283 | |||
284 | 2020-01-01 open Assets:Checking | ||
285 | 2020-01-01 open Liabilities:CreditCard | ||
286 | transfer-converted: FALSE | ||
287 | 2020-01-01 open Expenses:Taxi | ||
288 | |||
289 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
290 | Assets:Checking -25.60 CAD | ||
291 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
292 | transfer-account: Liabilities:CreditCard | ||
293 | transfer-date: 2020-03-10 | ||
294 | ''' | ||
295 | self.assertEqualEntries(''' | ||
296 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
297 | |||
298 | 2020-01-01 open Assets:Checking | ||
299 | 2020-01-01 open Liabilities:CreditCard | ||
300 | 2020-01-01 open Expenses:Taxi | ||
301 | |||
302 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
303 | Assets:Checking -25.60 CAD | ||
304 | Liabilities:CreditCard 25.60 CAD | ||
305 | |||
306 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
307 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
308 | Liabilities:CreditCard -25.60 CAD | ||
309 | ''', entries) | ||
310 | |||
311 | @loader.load_doc() | ||
312 | def test_converted_price_account_true(self, entries, _, __): | ||
313 | ''' | ||
314 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
315 | |||
316 | 2020-01-01 open Assets:Checking | ||
317 | 2020-01-01 open Liabilities:CreditCard | ||
318 | transfer-converted: TRUE | ||
319 | 2020-01-01 open Expenses:Taxi | ||
320 | |||
321 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
322 | Assets:Checking -25.60 CAD | ||
323 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
324 | transfer-account: Liabilities:CreditCard | ||
325 | transfer-date: 2020-03-10 | ||
326 | ''' | ||
327 | self.assertEqualEntries(''' | ||
328 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
329 | |||
330 | 2020-01-01 open Assets:Checking | ||
331 | 2020-01-01 open Liabilities:CreditCard | ||
332 | 2020-01-01 open Expenses:Taxi | ||
333 | |||
334 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
335 | Assets:Checking -25.60 CAD | ||
336 | Liabilities:CreditCard 20 USD @ 1.28 CAD | ||
337 | |||
338 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
339 | Expenses:Taxi 20 USD | ||
340 | Liabilities:CreditCard -20 USD | ||
341 | ''', entries) | ||
342 | |||
343 | @loader.load_doc() | ||
344 | def test_converted_cost_false(self, entries, _, __): | ||
345 | ''' | ||
346 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
347 | |||
348 | 2020-01-01 open Assets:Checking | ||
349 | 2020-01-01 open Liabilities:CreditCard | ||
350 | 2020-01-01 open Expenses:Taxi | ||
351 | |||
352 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
353 | Assets:Checking -25.60 CAD | ||
354 | Expenses:Taxi 20 USD {1.28 CAD} | ||
355 | transfer-account: Liabilities:CreditCard | ||
356 | transfer-date: 2020-03-10 | ||
357 | transfer-converted: FALSE | ||
358 | ''' | ||
359 | self.assertEqualEntries(''' | ||
360 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
361 | |||
362 | 2020-01-01 open Assets:Checking | ||
363 | 2020-01-01 open Liabilities:CreditCard | ||
364 | 2020-01-01 open Expenses:Taxi | ||
365 | |||
366 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
367 | Assets:Checking -25.60 CAD | ||
368 | Liabilities:CreditCard 25.60 CAD | ||
369 | |||
370 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
371 | Expenses:Taxi 20 USD {1.28 CAD, 2020-03-15} | ||
372 | Liabilities:CreditCard -25.60 CAD | ||
373 | ''', entries) | ||
374 | |||
375 | @loader.load_doc() | ||
376 | def test_converted_cost_true(self, entries, _, __): | ||
377 | ''' | ||
378 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
379 | |||
380 | 2020-01-01 open Assets:Checking | ||
381 | 2020-01-01 open Liabilities:CreditCard | ||
382 | 2020-01-01 open Expenses:Taxi | ||
383 | |||
384 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
385 | Assets:Checking -25.60 CAD | ||
386 | Expenses:Taxi 20 USD {1.28 CAD} | ||
387 | transfer-account: Liabilities:CreditCard | ||
388 | transfer-date: 2020-03-10 | ||
389 | transfer-converted: TRUE | ||
390 | ''' | ||
391 | self.assertEqualEntries(''' | ||
392 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
393 | |||
394 | 2020-01-01 open Assets:Checking | ||
395 | 2020-01-01 open Liabilities:CreditCard | ||
396 | 2020-01-01 open Expenses:Taxi | ||
397 | |||
398 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
399 | Assets:Checking -25.60 CAD | ||
400 | Liabilities:CreditCard 20 USD {1.28 CAD, 2020-03-15} | ||
401 | |||
402 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
403 | Expenses:Taxi 20 USD {1.28 CAD, 2020-03-15} | ||
404 | Liabilities:CreditCard -20 USD {1.28 CAD, 2020-03-15} | ||
405 | ''', entries) | ||
406 | |||
407 | @loader.load_doc() | ||
408 | def test_converted_cost_and_price_false(self, entries, _, __): | ||
409 | ''' | ||
410 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
411 | |||
412 | 2020-01-01 open Assets:Checking | ||
413 | 2020-01-01 open Liabilities:CreditCard | ||
414 | 2020-01-01 open Expenses:Taxi | ||
415 | |||
416 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
417 | Assets:Checking -25.60 CAD | ||
418 | Expenses:Taxi 20 USD {1.28 CAD} @ 1.30 CAD | ||
419 | transfer-account: Liabilities:CreditCard | ||
420 | transfer-date: 2020-03-10 | ||
421 | transfer-converted: FALSE | ||
422 | ''' | ||
423 | self.assertEqualEntries(''' | ||
424 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
425 | |||
426 | 2020-01-01 open Assets:Checking | ||
427 | 2020-01-01 open Liabilities:CreditCard | ||
428 | 2020-01-01 open Expenses:Taxi | ||
429 | |||
430 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
431 | Assets:Checking -25.60 CAD | ||
432 | Liabilities:CreditCard 25.60 CAD | ||
433 | |||
434 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
435 | Expenses:Taxi 20 USD {1.28 CAD, 2020-03-15} @ 1.30 CAD | ||
436 | Liabilities:CreditCard -25.60 CAD | ||
437 | ''', entries) | ||
438 | |||
439 | @loader.load_doc() | ||
440 | def test_converted_cost_and_price_true(self, entries, _, __): | ||
441 | ''' | ||
442 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
443 | |||
444 | 2020-01-01 open Assets:Checking | ||
445 | 2020-01-01 open Liabilities:CreditCard | ||
446 | 2020-01-01 open Expenses:Taxi | ||
447 | |||
448 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
449 | Assets:Checking -25.60 CAD | ||
450 | Expenses:Taxi 20 USD {1.28 CAD} @ 1.30 CAD | ||
451 | transfer-account: Liabilities:CreditCard | ||
452 | transfer-date: 2020-03-10 | ||
453 | transfer-converted: TRUE | ||
454 | ''' | ||
455 | self.assertEqualEntries(''' | ||
456 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
457 | |||
458 | 2020-01-01 open Assets:Checking | ||
459 | 2020-01-01 open Liabilities:CreditCard | ||
460 | 2020-01-01 open Expenses:Taxi | ||
461 | |||
462 | 2020-03-15 * "Taxi home from concert in Brooklyn" ^taxi | ||
463 | Assets:Checking -25.60 CAD | ||
464 | Liabilities:CreditCard 20 USD {1.28 CAD, 2020-03-15} @ 1.30 CAD | ||
465 | |||
466 | 2020-03-10 * "Taxi home from concert in Brooklyn" ^taxi | ||
467 | Expenses:Taxi 20 USD {1.28 CAD, 2020-03-15} | ||
468 | Liabilities:CreditCard -20 USD {1.28 CAD, 2020-03-15} | ||
469 | ''', entries) | ||
470 | |||
471 | @loader.load_doc() | ||
472 | def test_multiple_separate(self, entries, _, __): | ||
473 | ''' | ||
474 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
475 | |||
476 | 2020-01-01 open Assets:Checking | ||
477 | 2020-01-01 open Liabilities:CreditCard | ||
478 | 2020-01-01 open Expenses:Taxi | ||
479 | 2020-01-01 open Expenses:Food | ||
480 | |||
481 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
482 | Assets:Checking -45 USD | ||
483 | Expenses:Taxi 20 USD | ||
484 | transfer-account: Liabilities:CreditCard | ||
485 | transfer-date: 2020-03-10 | ||
486 | Expenses:Food 25 USD | ||
487 | transfer-account: Liabilities:CreditCard | ||
488 | transfer-date: 2020-03-12 | ||
489 | ''' | ||
490 | self.assertEqualEntries(''' | ||
491 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
492 | |||
493 | 2020-01-01 open Assets:Checking | ||
494 | 2020-01-01 open Liabilities:CreditCard | ||
495 | 2020-01-01 open Expenses:Taxi | ||
496 | 2020-01-01 open Expenses:Food | ||
497 | |||
498 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
499 | Assets:Checking -45 USD | ||
500 | Liabilities:CreditCard 45 USD | ||
501 | |||
502 | 2020-03-10 * "Night out in Brooklyn" ^taxi | ||
503 | Expenses:Taxi 20 USD | ||
504 | Liabilities:CreditCard -20 USD | ||
505 | |||
506 | 2020-03-12 * "Night out in Brooklyn" ^taxi | ||
507 | Expenses:Food 25 USD | ||
508 | Liabilities:CreditCard -25 USD | ||
509 | ''', entries) | ||
510 | |||
511 | @loader.load_doc() | ||
512 | def test_multiple_merge(self, entries, _, __): | ||
513 | ''' | ||
514 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
515 | |||
516 | 2020-01-01 open Assets:Checking | ||
517 | 2020-01-01 open Liabilities:CreditCard | ||
518 | 2020-01-01 open Expenses:Taxi | ||
519 | 2020-01-01 open Expenses:Food | ||
520 | |||
521 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
522 | Assets:Checking -45 USD | ||
523 | Expenses:Taxi 20 USD | ||
524 | transfer-account: Liabilities:CreditCard | ||
525 | transfer-date: 2020-03-10 | ||
526 | Expenses:Food 25 USD | ||
527 | transfer-account: Liabilities:CreditCard | ||
528 | transfer-date: 2020-03-10 | ||
529 | ''' | ||
530 | self.assertEqualEntries(''' | ||
531 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
532 | |||
533 | 2020-01-01 open Assets:Checking | ||
534 | 2020-01-01 open Liabilities:CreditCard | ||
535 | 2020-01-01 open Expenses:Taxi | ||
536 | 2020-01-01 open Expenses:Food | ||
537 | |||
538 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
539 | Assets:Checking -45 USD | ||
540 | Liabilities:CreditCard 45 USD | ||
541 | |||
542 | 2020-03-10 * "Night out in Brooklyn" ^taxi | ||
543 | Expenses:Taxi 20 USD | ||
544 | Expenses:Food 25 USD | ||
545 | Liabilities:CreditCard -45 USD | ||
546 | ''', entries) | ||
547 | |||
548 | @loader.load_doc() | ||
549 | def test_multiple_currencies_merge_converted_false(self, entries, _, __): | ||
550 | ''' | ||
551 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
552 | |||
553 | 2020-01-01 open Assets:Checking | ||
554 | 2020-01-01 open Liabilities:CreditCard | ||
555 | 2020-01-01 open Expenses:Taxi | ||
556 | 2020-01-01 open Expenses:Food | ||
557 | |||
558 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
559 | Assets:Checking -50.60 CAD | ||
560 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
561 | transfer-account: Liabilities:CreditCard | ||
562 | transfer-date: 2020-03-10 | ||
563 | transfer-converted: FALSE | ||
564 | Expenses:Food 25 CAD | ||
565 | transfer-account: Liabilities:CreditCard | ||
566 | transfer-date: 2020-03-10 | ||
567 | ''' | ||
568 | self.assertEqualEntries(''' | ||
569 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
570 | |||
571 | 2020-01-01 open Assets:Checking | ||
572 | 2020-01-01 open Liabilities:CreditCard | ||
573 | 2020-01-01 open Expenses:Taxi | ||
574 | 2020-01-01 open Expenses:Food | ||
575 | |||
576 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
577 | Assets:Checking -50.60 CAD | ||
578 | Liabilities:CreditCard 50.60 CAD | ||
579 | |||
580 | 2020-03-10 * "Night out in Brooklyn" ^taxi | ||
581 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
582 | Expenses:Food 25 CAD | ||
583 | Liabilities:CreditCard -50.60 CAD | ||
584 | ''', entries) | ||
585 | |||
586 | @loader.load_doc() | ||
587 | def test_multiple_currencies_merge_converted_true(self, entries, _, __): | ||
588 | ''' | ||
589 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
590 | |||
591 | 2020-01-01 open Assets:Checking | ||
592 | 2020-01-01 open Liabilities:CreditCard | ||
593 | 2020-01-01 open Expenses:Taxi | ||
594 | 2020-01-01 open Expenses:Food | ||
595 | |||
596 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
597 | Assets:Checking -50.60 CAD | ||
598 | Expenses:Taxi 20 USD @ 1.28 CAD | ||
599 | transfer-account: Liabilities:CreditCard | ||
600 | transfer-date: 2020-03-10 | ||
601 | transfer-converted: TRUE | ||
602 | Expenses:Food 25 CAD | ||
603 | transfer-account: Liabilities:CreditCard | ||
604 | transfer-date: 2020-03-10 | ||
605 | ''' | ||
606 | self.assertEqualEntries(''' | ||
607 | plugin "beancount_extras_kris7t.plugins.transfer_accounts" | ||
608 | |||
609 | 2020-01-01 open Assets:Checking | ||
610 | 2020-01-01 open Liabilities:CreditCard | ||
611 | 2020-01-01 open Expenses:Taxi | ||
612 | 2020-01-01 open Expenses:Food | ||
613 | |||
614 | 2020-03-15 * "Night out in Brooklyn" ^taxi | ||
615 | Assets:Checking -50.60 CAD | ||
616 | Liabilities:CreditCard 20 USD @ 1.28 CAD | ||
617 | Liabilities:CreditCard 25 CAD | ||
618 | |||
619 | 2020-03-10 * "Night out in Brooklyn" ^taxi | ||
620 | Expenses:Taxi 20 USD | ||
621 | Expenses:Food 25 CAD | ||
622 | Liabilities:CreditCard -20 USD | ||
623 | Liabilities:CreditCard -25 CAD | ||
624 | ''', entries) | ||
625 | |||
626 | |||
627 | if __name__ == '__main__': | ||
628 | unittest.main() | ||