more db tests, equality operators for Trade and Contract

This commit is contained in:
James Prestwich 2017-09-15 14:32:48 -06:00
parent 8dc7f77bae
commit 182d9caa97
No known key found for this signature in database
GPG Key ID: 519E010A79028CCC
4 changed files with 41 additions and 10 deletions

View File

@ -13,7 +13,7 @@ deps =
commands =
flake8 \
--ignore=E501,E266 \
--ignore=E501,E266,W503 \
--exclude test.py \
xcat
pytest \

View File

@ -1,7 +1,7 @@
import plyvel
import json
import xcat.utils as utils
from xcat.trades import Trade, Contract
from xcat.trades import Trade
class DB():
@ -63,7 +63,7 @@ class DB():
results = []
with self.db.iterator() as it:
for k, v in it:
j = json.loads(utils.x2s(utils.b2x(v)))
j = json.loads(str(v, 'utf-8'))
results.append((str(k, 'utf-8'), j))
return results

View File

@ -70,13 +70,26 @@ class TestDB(unittest.TestCase):
in str(context.exception))
def test_get(self):
pass
self.db.db.get.return_value = str.encode(utils.test_trade.toJSON())
trade = self.db.get('test')
self.assertEqual(trade, utils.test_trade)
def test_save_secret(self):
pass
self.db.save_secret('my life', 'I like black liquorice')
self.db.preimageDB.put.assert_called_with(
str.encode('my life'),
str.encode('I like black liquorice'))
def test_get_secret(self):
pass
self.db.preimageDB.get.return_value = str.encode(
'I like black liquorice')
secret = self.db.get_secret('my life')
self.assertEqual(secret, 'I like black liquorice')
def test_dump(self):
pass

View File

@ -36,14 +36,21 @@ class Trade():
self.buy.currency,
self.buy.initiator)
def __eq__(self, other):
return (self.sell == other.sell
and self.buy == other.buy
and self.commitment == other.commitment)
class Contract():
allowed = ('fulfiller', 'initiator', 'currency', 'p2sh', 'amount',
'fund_tx', 'redeem_tx', 'secret', 'redeemScript',
'redeemblocknum', 'locktime')
def __init__(self, data):
allowed = ('fulfiller', 'initiator', 'currency', 'p2sh', 'amount',
'fund_tx', 'redeem_tx', 'secret', 'redeemScript',
'redeemblocknum', 'locktime')
for key in data:
if key in allowed:
if key in Contract.allowed:
setattr(self, key, data[key])
def get_status(self):
@ -56,3 +63,14 @@ class Contract():
return 'funded'
else:
return 'empty'
def __eq__(self, other):
for key in Contract.allowed:
if key in self.__dict__:
if key not in other.__dict__:
return False
if self.__dict__[key] != other.__dict__[key]:
return False
if key in other.__dict__ and key not in self.__dict__:
return False
return True