From 0cab1f7db30f880568b96a5c700a8806efd57363 Mon Sep 17 00:00:00 2001 From: Jay Graber Date: Fri, 28 Jul 2017 19:44:24 -0700 Subject: [PATCH] Add tests for database --- xcat/cli.py | 8 ++------ xcat/database.py | 19 +++++++++---------- xcat/tests/test_db.py | 6 +++++- xcat/utils.py | 27 ++++++++++++++++++++------- 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/xcat/cli.py b/xcat/cli.py index bd07110..03f47b5 100644 --- a/xcat/cli.py +++ b/xcat/cli.py @@ -6,7 +6,6 @@ import xcat.zcashRPC import xcat.userInput from xcat.trades import * from xcat.protocol import * -import ast def save_state(trade, tradeid): save(trade) @@ -53,8 +52,7 @@ def checkBuyStatus(trade): # Import a trade in hex, and save to db def importtrade(hexstr): - trade = x2s(hexstr) - trade = instantiateTrade(ast.literal_eval(trade)) + trade = instantiate(trade) save_state(trade) # Export a trade by its tradeid @@ -74,8 +72,6 @@ def newtrade(tradeid): # db.create(trade) save_state(trade, tradeid) -def instantiateTrade(trade): - return Trade(buy=Contract(trade['buy']), sell=Contract(trade['sell'])) def main(): parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, @@ -105,7 +101,7 @@ def main(): exporttrade(tradeid) elif command == 'checktrades': trade = get_trade() - trade = instantiateTrade(trade) + trade = instantiate(trade) if find_role(trade.sell) == 'initiator': role = 'seller' checkSellStatus(trade) diff --git a/xcat/database.py b/xcat/database.py index 1d00ed8..c05cebc 100644 --- a/xcat/database.py +++ b/xcat/database.py @@ -1,17 +1,11 @@ import plyvel -from .utils import * +from xcat.utils import * import binascii import sys import json db = plyvel.DB('/tmp/testdb', create_if_missing=True) -# trade = get_trade() -# ## txid we retrieve by -# if trade and trade.sell: -# if hasattr(trade.sell, 'fund_tx'): -# txid = trade.sell.fund_tx - # Takes object, saves json as bytes def create(trade, tradeid): trade = trade.toJSON() @@ -26,14 +20,19 @@ def createByFundtx(trade): db.put(b(txid), b(trade)) def get(txid): - return db.get(b(txid)) + rawtrade = db.get(b(txid)) + tradestr = x2s(b2x(rawtrade)) + trade = instantiate(tradestr) + return trade # db.delete(b'hello') -db.get(b'test') +# testtrade = get('test') +# testtrade = instantiate(testtrade) +# print(testtrade) # hexstr = get(txid) # print(x2s(hexstr)) -# + def print_entries(): it = db.iterator() with db.iterator() as it: diff --git a/xcat/tests/test_db.py b/xcat/tests/test_db.py index 6b6285e..74a51ab 100644 --- a/xcat/tests/test_db.py +++ b/xcat/tests/test_db.py @@ -15,7 +15,11 @@ class DatabaseTest(unittest.TestCase): def test_get(self): trade = db.get('test') - print("Trade") + tradejson = json.loads(trade.toJSON()) + datajson = json.loads(json.dumps(self.data)) + self.assertEqual(datajson['sell'], tradejson['sell']) + self.assertEqual(datajson['buy'], tradejson['buy']) + self.assertEqual(datajson['commitment'], tradejson['commitment']) if __name__ == '__main__': unittest.main() diff --git a/xcat/utils.py b/xcat/utils.py index 06e1d2c..bc95c4d 100644 --- a/xcat/utils.py +++ b/xcat/utils.py @@ -1,5 +1,5 @@ -import hashlib, json, random, binascii -import xcat.trades +import hashlib, json, random, binascii, ast +import xcat.trades as trades ############################################ ########### Data conversion utils ########## @@ -26,8 +26,6 @@ def s2x(string): def hex2dict(hexstr): jsonstr = x2s(hexstr) - print(hexstr['fund_tx']) - print(jsonstr) return json.loads(jsonstr) def jsonformat(trade): @@ -84,6 +82,23 @@ def save_secret(secret): ######### xcat.json temp file ############# ############################################# +def instantiate(tradedata): + print("tradedata", tradedata) + if type(tradedata) == dict: + string = str(tradedata) + print("STRING", string) + tradedata = json.loads(ast.literal_eval(tradedata)) + print("@", tradedata) + elif type(tradedata) == hex: + hexstr = x2s(tradedata) + tradedata = ast.literal_eval(hexstr) + elif type(tradedata) == str: + tradedata = json.loads(tradedata) + sell = trades.Contract(tradedata['sell']) + buy = trades.Contract(tradedata['buy']) + trade = trades.Trade(sell, buy, commitment=tradedata['commitment']) + return trade + def save_trade(trade): print("Trade in save_trade", trade) with open('xcat.json', 'w+') as outfile: @@ -93,9 +108,7 @@ def get_trade(): try: with open('xcat.json') as data_file: xcatdb = json.load(data_file) - sell = trades.Contract(xcatdb['sell']) - buy = trades.Contract(xcatdb['buy']) - trade = trades.Trade(sell, buy, commitment=xcatdb['commitment']) + trade = instantiate(tradedata) return trade except: return None