def test_writting_fetching_external_trades(data_dir, username): msg_aggregator = MessagesAggregator() data = DataHandler(data_dir, msg_aggregator) data.unlock(username, '123', create_new=True) # add 2 trades and check they are in the DB trade1 = { 'otc_timestamp': '10/03/2018 23:30', 'otc_pair': 'ETH_EUR', 'otc_type': 'buy', 'otc_amount': '10', 'otc_rate': '100', 'otc_fee': '0.001', 'otc_fee_currency': 'ETH', 'otc_link': 'a link', 'otc_notes': 'a note', } trade2 = { 'otc_timestamp': '15/03/2018 23:35', 'otc_pair': 'ETH_EUR', 'otc_type': 'buy', 'otc_amount': '5', 'otc_rate': '100', 'otc_fee': '0.001', 'otc_fee_currency': 'ETH', 'otc_link': 'a link 2', 'otc_notes': 'a note 2', } result, _, = data.add_external_trade(trade1) assert result result, _ = data.add_external_trade(trade2) assert result result = data.get_external_trades() del result[0]['id'] assert result[0] == from_otc_trade(trade1) del result[1]['id'] assert result[1] == from_otc_trade(trade2) # query trades in period result = data.get_external_trades( from_ts=1520553600, # 09/03/2018 to_ts=1520726400, # 11/03/2018 ) assert len(result) == 1 del result[0]['id'] assert result[0] == from_otc_trade(trade1) # query trades only with to_ts result = data.get_external_trades( to_ts=1520726400, # 11/03/2018 ) assert len(result) == 1 del result[0]['id'] assert result[0] == from_otc_trade(trade1) # edit a trade and check the edit made it in the DB trade1['otc_rate'] = '120' trade1['otc_id'] = 1 result, _ = data.edit_external_trade(trade1) assert result result = data.get_external_trades() assert result[0] == from_otc_trade(trade1) del result[1]['id'] assert result[1] == from_otc_trade(trade2) # try to edit a non-existing trade trade1['otc_rate'] = '160' trade1['otc_id'] = 5 result, _ = data.edit_external_trade(trade1) assert not result trade1['otc_rate'] = '120' trade1['otc_id'] = 1 result = data.get_external_trades() assert result[0] == from_otc_trade(trade1) del result[1]['id'] assert result[1] == from_otc_trade(trade2) # try to delete non-existing trade result, _ = data.delete_external_trade(6) assert not result # delete an external trade result, _ = data.delete_external_trade(1) result = data.get_external_trades() del result[0]['id'] assert result[0] == from_otc_trade(trade2)
def test_writting_fetching_external_trades(data_dir, username): data = DataHandler(data_dir) data.unlock(username, '123', create_new=True) # add 2 trades and check they are in the DB trade1 = { 'otc_timestamp': '10/03/2018 23:30', 'otc_pair': 'ETH_EUR', 'otc_type': 'buy', 'otc_amount': '10', 'otc_rate': '100', 'otc_fee': '0.001', 'otc_fee_currency': 'ETH', 'otc_link': 'a link', 'otc_notes': 'a note', } trade2 = { 'otc_timestamp': '10/03/2018 23:35', 'otc_pair': 'ETH_EUR', 'otc_type': 'buy', 'otc_amount': '5', 'otc_rate': '100', 'otc_fee': '0.001', 'otc_fee_currency': 'ETH', 'otc_link': 'a link 2', 'otc_notes': 'a note 2', } result, _, = data.add_external_trade(trade1) assert result result, _ = data.add_external_trade(trade2) assert result result = data.get_external_trades() del result[0]['id'] assert result[0] == from_otc_trade(trade1) del result[1]['id'] assert result[1] == from_otc_trade(trade2) # edit a trade and check the edit made it in the DB trade1['otc_rate'] = '120' trade1['otc_id'] = 1 result, _ = data.edit_external_trade(trade1) assert result result = data.get_external_trades() assert result[0] == from_otc_trade(trade1) del result[1]['id'] assert result[1] == from_otc_trade(trade2) # try to edit a non-existing trade trade1['otc_rate'] = '160' trade1['otc_id'] = 5 result, _ = data.edit_external_trade(trade1) assert not result trade1['otc_rate'] = '120' trade1['otc_id'] = 1 result = data.get_external_trades() assert result[0] == from_otc_trade(trade1) del result[1]['id'] assert result[1] == from_otc_trade(trade2) # try to delete non-existing trade result, _ = data.delete_external_trade(6) assert not result # delete an external trade result, _ = data.delete_external_trade(1) result = data.get_external_trades() del result[0]['id'] assert result[0] == from_otc_trade(trade2)
def test_writting_fetching_external_trades(data_dir, username): msg_aggregator = MessagesAggregator() data = DataHandler(data_dir, msg_aggregator) data.unlock(username, '123', create_new=True) # add 2 trades and check they are in the DB otc_trade1 = { 'otc_timestamp': '10/03/2018 23:30', 'otc_pair': 'ETH_EUR', 'otc_type': 'buy', 'otc_amount': '10', 'otc_rate': '100', 'otc_fee': '0.001', 'otc_fee_currency': 'ETH', 'otc_link': 'a link', 'otc_notes': 'a note', } otc_trade2 = { 'otc_timestamp': '15/03/2018 23:35', 'otc_pair': 'ETH_EUR', 'otc_type': 'buy', 'otc_amount': '5', 'otc_rate': '100', 'otc_fee': '0.001', 'otc_fee_currency': 'ETH', 'otc_link': 'a link 2', 'otc_notes': 'a note 2', } trade1, _ = verify_otctrade_data(otc_trade1) trade2, _ = verify_otctrade_data(otc_trade2) result, _, = data.add_external_trade(otc_trade1) assert result result, _ = data.add_external_trade(otc_trade2) assert result result = data.get_external_trades() assert result[0] == trade1 assert result[1] == trade2 # query trades in period result = data.get_external_trades( from_ts=1520553600, # 09/03/2018 to_ts=1520726400, # 11/03/2018 ) assert len(result) == 1 # make sure id is there but do not compare it assert result[0] == trade1 # query trades only with to_ts result = data.get_external_trades( to_ts=1520726400, # 11/03/2018 ) assert len(result) == 1 # make sure id is there but do not compare it assert result[0] == trade1 # edit a trade and check the edit made it in the DB otc_trade1['otc_rate'] = '120' trade1_id = trade1.identifier otc_trade1['otc_id'] = trade1_id result, _ = data.edit_external_trade(otc_trade1) assert result result = data.get_external_trades() edited_trade1 = trade1._replace(rate=FVal(120)) assert result[0] == edited_trade1 assert result[1] == trade2 # edit a trade's time (or any other field which makes up the id) and see # that the ID changes later new_time_str = '10/03/2018 23:35' new_timestamp = 1520724900 otc_trade1['otc_timestamp'] = new_time_str otc_trade1['otc_id'] = edited_trade1.identifier result, _ = data.edit_external_trade(otc_trade1) assert result result = data.get_external_trades() edited_trade1 = trade1._replace(rate=FVal(120), timestamp=new_timestamp) assert result[0] == edited_trade1 assert result[1] == trade2 # Here trade is edited succesfully but let's also look in the DB to see # if the trade is indeed there with a new ID cursor = data.db.conn.cursor() results = cursor.execute( f'SELECT id, time, pair, amount FROM trades where id="{edited_trade1.identifier}";', ) results = results.fetchall() assert len(results) == 1 result = results[0] assert result[0] == edited_trade1.identifier assert result[1] == new_timestamp assert result[2] == otc_trade1['otc_pair'] assert result[3] == otc_trade1['otc_amount'] # try to edit a non-existing trade otc_trade1['otc_rate'] = '160' otc_trade1['otc_id'] = '5' result, _ = data.edit_external_trade(otc_trade1) assert not result otc_trade1['otc_rate'] = '120' otc_trade1['otc_id'] = trade1_id result = data.get_external_trades() assert result[0] == edited_trade1 assert result[1] == trade2 # try to delete non-existing trade result, _ = data.delete_external_trade('dasdasd') assert not result # delete an external trade result, _ = data.delete_external_trade(edited_trade1.identifier) result = data.get_external_trades() assert result[0] == trade2