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