def test_recursion_bug(self): p = Node(name="project") g = Node(name="goal") p.children << g m = MockClerk(DBMAP) m.store(p) n = m.fetch(Node, g.ID) assert len(n.crumbs) == 1, len(n.crumbs)
class BankTest(unittest.TestCase): def setUp(self): """ our test bank has two accounts: wanda and rufus. """ self.clerk = MockClerk(schema) self.clerk.store(Account(username="******")) self.clerk.store(Account(username="******")) self.bank = Bank(self.clerk) def test_zerosum(self): """ LETS currency is a zero sum game. Every credit holding account is offset by another account holding debt. """ zeroSum = lambda: 0 == sum([self.bank.balanceFor(a.username) for a in self.clerk.match(Account)]) assert zeroSum() self.bank.transfer("rufus", "wanda", 5, "test") self.assertEquals(self.bank.balanceFor("rufus"), -5) self.assertEquals(self.bank.balanceFor("wanda"), 5) assert zeroSum() def test_positive(self): """ you can't give someone a debt, or a 'nothing' """ self.assertRaises(ValueError, self.bank.transfer, "wanda", "rufus", -1, "whatever") self.assertRaises(ValueError, self.bank.transfer, "wanda", "rufus", 0, "whatever") def test_transfer_to_self(self): self.assertRaises(ValueError, self.bank.transfer, "wanda", "wanda", 1, "self transfer") def test_history(self): assert len(self.clerk.match(Transaction)) == 0 self.bank.transfer("wanda", "rufus", 1, "history test") assert len(self.clerk.match(Transaction)) == 1 t = self.clerk.fetch(Transaction, 1) assert t.src.username == "wanda" assert t.dst.username == "rufus" assert t.amount == 1 assert self.bank.balanceFor("wanda") == -1 assert len(self.bank.historyFor("wanda")) == 1