diff --git a/tox.ini b/tox.ini index e39156e..c6897ef 100644 --- a/tox.ini +++ b/tox.ini @@ -13,7 +13,7 @@ deps = commands = flake8 \ - --ignore=E501,E266 \ + --ignore=E501,E266,W503 \ --exclude test.py \ xcat pytest \ diff --git a/xcat/db.py b/xcat/db.py index 79bac22..478e423 100644 --- a/xcat/db.py +++ b/xcat/db.py @@ -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 diff --git a/xcat/tests/unit/test_db.py b/xcat/tests/unit/test_db.py index b71d3e4..cc14345 100644 --- a/xcat/tests/unit/test_db.py +++ b/xcat/tests/unit/test_db.py @@ -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 diff --git a/xcat/trades.py b/xcat/trades.py index 2857d67..fbaf3fc 100644 --- a/xcat/trades.py +++ b/xcat/trades.py @@ -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