def cache_test(self, do_quit=True): self.init_test('test_reconciler_caching') with FileTester.temp_input(self.teststmt) as tempfilename: recon = Reconciler(LedgerFile(tempfilename, 'cash')) self.responses = ['2030/03/30', '-30'] recon.do_statement('') if do_quit: recon.do_quit('') print('<<< test: restart >>>') with FileTester.temp_input(self.teststmt) as tempfilename: recon = Reconciler(LedgerFile(tempfilename, 'cash')) recon.do_mark('1 2') recon.do_finish('') if do_quit: recon.do_quit('') print('<<< test: restart >>>') with FileTester.temp_input(self.testfinish) as tempfilename: Reconciler(LedgerFile(tempfilename, 'cash')) self.conclude_test(strip_ansi_color=True)
def test_finish(self): self.init_test('test_reconcile_finish') with FileTester.temp_input(self.teststmt) as tempfilename: recon = Reconciler(LedgerFile(tempfilename, 'cash')) self.responses = ['2016/10/30', '-30'] recon.do_statement('') recon.do_mark('1 2') recon.do_finish('') self.conclude_test(strip_ansi_color=True)
def test_mark_and_unmark_all(self): with FileTester.temp_input(testdata) as tempfilename: recon = Reconciler(LedgerFile(tempfilename, 'cash')) self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-32.12, recon.total_pending) recon.do_unmark('all') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(0, recon.total_pending) recon.do_mark('all') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-22.12, recon.total_pending)
def test_mark_and_unmark_errors(self): with FileTester.temp_input(testdata) as tempfilename: recon = Reconciler(LedgerFile(tempfilename, 'cash')) self.reset_redirect() # none of these should result in a file write; we'll get out of # the context manager as an additional confirmation of this for command in [recon.do_mark, recon.do_unmark]: command('') self.assertEqual( '*** Transaction number(s) required', self.redirect.getvalue().rstrip() ) self.reset_redirect() command('ahchew') self.assertEqual( 'Transaction not found: ahchew', self.redirect.getvalue().rstrip() ) self.reset_redirect() recon.do_list('') self.reset_redirect() recon.do_mark('2') self.assertEqual( 'Already marked pending: 2', self.redirect.getvalue().rstrip() ) self.reset_redirect() recon.do_unmark('1') self.assertEqual( "Not marked; can't unmark: 1", self.redirect.getvalue().rstrip() )
def test_mark_and_unmark(self): with FileTester.temp_input(testdata) as tempfilename: recon = Reconciler(LedgerFile(tempfilename, 'cash')) self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-32.12, recon.total_pending) recon.do_mark('1') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-52.12, recon.total_pending) recon.do_unmark('1 2') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-30, recon.total_pending) recon.do_mark('1 2') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-52.12, recon.total_pending) recon.do_unmark('2') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-50, recon.total_pending) recon.do_mark('1 2 blurg') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-52.12, recon.total_pending) recon.do_unmark('blarg 2') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-50, recon.total_pending) recon.do_unmark('1 sdjfkljsdfkljsdl 2') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-30, recon.total_pending) recon.default('1') self.verify_equal_floats(-15, recon.total_cleared) self.verify_equal_floats(-50, recon.total_pending) # entry with account on multiple lines with FileTester.temp_input(testdata) as tempfilename: recon = Reconciler(LedgerFile(tempfilename, 'credit')) self.verify_equal_floats(0, recon.total_cleared) self.verify_equal_floats(0, recon.total_pending) recon.do_mark('1') self.verify_equal_floats(0, recon.total_cleared) self.verify_equal_floats(-33, recon.total_pending) recon.do_unmark('1') self.verify_equal_floats(0, recon.total_cleared) self.verify_equal_floats(0, recon.total_pending)