accountsindex.py (2237B)
1 import logging 2 import datetime 3 import unittest 4 import os 5 6 from whee.mem import MemStore 7 8 from usawa import Ledger, UnitIndex, EntryPart, Entry, DemoWallet, ACL, schema_path 9 from usawa.store import LedgerStore 10 from usawa.account import AccountIndex, AccountType, AccountDisplay 11 from usawa.error import AccountError 12 from usawa.index.account import EntryAccountIndex 13 14 logging.basicConfig(level=logging.DEBUG) 15 logg = logging.getLogger() 16 17 testdir = os.path.realpath(os.path.dirname(__file__)) 18 19 class TestAccountsIndex(unittest.TestCase): 20 21 22 def setUp(self): 23 self.store = MemStore() 24 self.eidx = EntryAccountIndex() 25 26 27 def test_accountsindex(self): 28 s = 'FOO' 29 uidx = UnitIndex(s) 30 wallet = DemoWallet() 31 o = Ledger(uidx, wallet=wallet) 32 o.register_callback(self.eidx.entry_callback) 33 store = LedgerStore(self.store, ledger=o) 34 store.start() 35 36 37 x = EntryPart(s + '.Income/foo', 1337, debit=True) 38 y = EntryPart(s + '.Asset/foo', 1337) 39 v = Entry(o.peek(), datetime.datetime.now(), parent=o.current()) 40 v.add_part(x) 41 v.add_part(y) 42 v.sign(wallet) 43 store.add_entry(v, update_ledger=True) 44 45 x = EntryPart(s + '.Expense/bar', 42, debit=True) 46 y = EntryPart(s + '.Liability/bar', 42) 47 v = Entry(o.peek(), datetime.datetime.now(), parent=o.current()) 48 v.add_part(x) 49 v.add_part(y) 50 v.sign(wallet) 51 store.add_entry(v, update_ledger=True) 52 53 x = EntryPart(s + '.Expense/bar', 42, debit=True) 54 y = EntryPart(s + '.Liability/bar', 42) 55 v = Entry(o.peek(), datetime.datetime.now(), parent=o.current()) 56 v.add_part(x) 57 v.add_part(y) 58 v.sign(wallet) 59 store.add_entry(v, update_ledger=True) 60 61 self.eidx.start('FOO.income/foo') 62 r = list(self.eidx) 63 self.assertEqual(len(r), 1) 64 entry = Entry.empty(serial=r[0]) 65 entry = store.get_entry(entry) 66 67 self.eidx.start('FOO.expense/bar') 68 r = list(self.eidx) 69 self.assertEqual(len(r), 2) 70 for v in r: 71 entry = Entry.empty(serial=v) 72 entry = store.get_entry(entry) 73 74 75 if __name__ == '__main__': 76 unittest.main()