from django.test import TestCase from trading.models import User, Commodity, Tx, BalanceError class TestTransactions(TestCase): def test_user_balances(self): # Create users user1 = User.objects.create_user(username="test1", email="test1@test.test") user2 = User.objects.create_user(username="test2", email="test2@test.test") commodity = Commodity(created_by=user1, in_circulation=1000, name="commodity") commodity.save() self.assertEqual(user1.balances(), {commodity: 1000}) self.assertEqual(user2.balances(), {}) Tx(source=user1, dest=user2, amount=100, commodity=commodity).save() self.assertEqual(user1.balances(), {commodity: 900}) self.assertEqual(user2.balances(), {commodity: 100}) with self.assertRaises(BalanceError): Tx(source=user2, dest=user1, amount=1000, commodity=commodity).save() self.assertEqual(user1.balances(), {commodity: 900}) self.assertEqual(user2.balances(), {commodity: 100})