import os import sys root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))) sys.path.append(root) # ---------------------------------------------------------------------------- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN: # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code # ---------------------------------------------------------------------------- # -*- coding: utf-8 -*- from ccxt.test.exchange.base import test_shared_methods # noqa E402 from ccxt.test.exchange.base.test_trade import test_trade # noqa E402 def test_order(exchange, skipped_properties, method, entry, symbol, now): format = { 'info': {}, 'id': '123', 'clientOrderId': '1234', 'timestamp': 1649373600000, 'datetime': '2022-04-07T23:20:00.000Z', 'lastTradeTimestamp': 1649373610000, 'symbol': 'XYZ/USDT', 'type': 'limit', 'timeInForce': 'GTC', 'postOnly': True, 'side': 'sell', 'price': exchange.parse_number('1.23456'), 'stopPrice': exchange.parse_number('1.1111'), 'amount': exchange.parse_number('1.23'), 'cost': exchange.parse_number('2.34'), 'average': exchange.parse_number('1.234'), 'filled': exchange.parse_number('1.23'), 'remaining': exchange.parse_number('0.123'), 'status': 'ok', 'fee': {}, 'trades': [], } empty_allowed_for = ['clientOrderId', 'stopPrice', 'trades', 'timestamp', 'datetime', 'lastTradeTimestamp', 'average', 'type', 'timeInForce', 'postOnly', 'side', 'price', 'amount', 'cost', 'filled', 'remaining', 'status', 'fee'] # there are exchanges that return only order id, so we don't need to strictly requite all props to be set. test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for) test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry, now) # test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'timeInForce', ['GTC', 'GTK', 'IOC', 'FOK', 'PO']) test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'status', ['open', 'closed', 'canceled']) test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'side', ['buy', 'sell']) test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'postOnly', [True, False]) test_shared_methods.assert_symbol(exchange, skipped_properties, method, entry, 'symbol', symbol) test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'price', '0') test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'stopPrice', '0') test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'cost', '0') test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'average', '0') test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'filled', '0') test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'remaining', '0') test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', '0') test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', exchange.safe_string(entry, 'remaining')) test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', exchange.safe_string(entry, 'filled')) if not ('trades' in skipped_properties): skipped_new = exchange.deep_extend(skipped_properties, { 'timestamp': True, 'datetime': True, 'side': True, }) if entry['trades'] is not None: for i in range(0, len(entry['trades'])): test_trade(exchange, skipped_new, method, entry['trades'][i], symbol, now) test_shared_methods.assert_fee_structure(exchange, skipped_properties, method, entry, 'fee')