Remove Tx model

There was a split between a transaction request and an actual
transaction. This was kind of annoying because transactions were one-way
only, while transaction requests were two-way - which is what I believe
most transactions will be using. Tx model has been removed and the
responsibilities of it are covered by TxRequest. It simplifies
everything surrounding transactions, since we have only one model to
deal with instead of two.

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-03-26 12:49:46 -04:00
parent 80ad39eb6f
commit c320f81181
7 changed files with 101 additions and 171 deletions

View File

@@ -1,38 +1,8 @@
from django.test import TestCase
from trading.models import User, Commodity, Tx, TxRequest, BalanceError
from trading.models import User, Commodity, TxRequest, 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")
# Create test commodity
commodity = Commodity(created_by=user1, in_circulation=1000, name="commodity")
commodity.save()
# Confirm balances
self.assertEqual(user1.balances(), {commodity: 1000})
self.assertEqual(user1.balance_of(commodity), 1000)
self.assertEqual(user2.balances(), {})
self.assertEqual(user2.balance_of(commodity), 0)
# Create transaction
Tx(source=user1, dest=user2, amount=100, commodity=commodity).save()
# Confirm balances
self.assertEqual(user1.balances(), {commodity: 900})
self.assertEqual(user2.balances(), {commodity: 100})
# Ensure we can't trade when there's missing balance
with self.assertRaises(BalanceError):
Tx(source=user2, dest=user1, amount=1000, commodity=commodity).save()
# Confirm balances
self.assertEqual(user1.balances(), {commodity: 900})
self.assertEqual(user2.balances(), {commodity: 100})
def test_tx_requests(self):
# Create users
user1 = User.objects.create_user(username="test1", email="test1@test.test")