def assert_trades_equal(t1: Trade, t2: Trade) -> None: """Checks 2 trades are equal. Has a tolerance for precision errors in real numbers since the precision generated by sqlite division is different to fval one """ t1_dict = t1._asdict() for key, val in t1_dict.items(): if key in ('rate', 'amount'): assert val.is_close(getattr(t2, key)) else: assert val == getattr(t2, key)
def test_serialize_deserialize_trade(): trade = Trade( timestamp=Timestamp(1537985746), location=Location.KRAKEN, pair=TradePair('ETH_BTC'), trade_type=TradeType.SELL, amount=FVal('2.80'), rate=FVal('0.1234'), fee=FVal('0.01'), fee_currency=A_ETH, link='a link can be here', notes='notes can be here', ) serialized_trade = rlk_jsondumps(trade._asdict()) assert serialized_trade == rlk_jsondumps(raw_trade2) deserialized_trade = deserialize_trade(raw_trade2) assert deserialized_trade == trade