Skip to content

Commit 02d409f

Browse files
committed
[ExchangeTests] add market filter portfolio test
1 parent 3ea24d7 commit 02d409f

18 files changed

+87
-3
lines changed

additional_tests/exchanges_tests/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def get_name(self):
6363

6464
@contextlib.asynccontextmanager
6565
async def get_authenticated_exchange_manager(exchange_name, exchange_tentacle_name, config=None,
66-
credentials_exchange_name=None):
66+
credentials_exchange_name=None, market_filter=None):
6767
credentials_exchange_name = credentials_exchange_name or exchange_name
6868
_load_exchange_creds_env_variables_if_necessary()
6969
config = {**test_config.load_test_config(), **config} if config else test_config.load_test_config()
@@ -82,6 +82,7 @@ async def get_authenticated_exchange_manager(exchange_name, exchange_tentacle_na
8282
.is_checking_credentials(False) \
8383
.is_sandboxed(_get_exchange_is_sandboxed(credentials_exchange_name)) \
8484
.is_using_exchange_type(exchange_type) \
85+
.use_market_filter(market_filter) \
8586
.enable_storage(False) \
8687
.disable_trading_mode() \
8788
.is_exchange_only()

additional_tests/exchanges_tests/abstract_authenticated_exchange_tester.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,18 @@ async def test_get_portfolio(self):
7676
async with self.local_exchange_manager():
7777
await self.inner_test_get_portfolio()
7878

79+
async def test_get_portfolio_with_market_filter(self):
80+
# ensure market status are already loaded by another exchange manage and filters are applied
81+
async with self.local_exchange_manager():
82+
# get portfolio with all markets
83+
all_markets_portfolio = await self.get_portfolio()
84+
85+
# now that market status are cached, test with filters
86+
async with self.local_exchange_manager(market_filter=self._get_market_filter()):
87+
# check portfolio fetched with filtered markets (should be equal to the one with all markets)
88+
filtered_markets_portfolio = await self.get_portfolio()
89+
assert filtered_markets_portfolio == all_markets_portfolio
90+
7991
async def inner_test_get_portfolio(self):
8092
self.check_portfolio_content(await self.get_portfolio())
8193

@@ -554,14 +566,15 @@ async def get_price(self, symbol=None):
554566
))
555567

556568
@contextlib.asynccontextmanager
557-
async def local_exchange_manager(self):
569+
async def local_exchange_manager(self, market_filter=None):
558570
try:
559571
exchange_tentacle_name = self.EXCHANGE_TENTACLE_NAME or self.EXCHANGE_NAME.capitalize()
560572
async with get_authenticated_exchange_manager(
561573
self.EXCHANGE_NAME,
562574
exchange_tentacle_name,
563575
self.get_config(),
564-
credentials_exchange_name=self.CREDENTIALS_EXCHANGE_NAME or self.EXCHANGE_NAME
576+
credentials_exchange_name=self.CREDENTIALS_EXCHANGE_NAME or self.EXCHANGE_NAME,
577+
market_filter=market_filter
565578
) as exchange_manager:
566579
self.exchange_manager = exchange_manager
567580
yield
@@ -903,3 +916,12 @@ def get_exchange_data(self, symbol=None, all_symbols=None) -> exchange_data_impo
903916
for s in _symbols
904917
]
905918
)
919+
920+
def _get_market_filter(self):
921+
def market_filter(market):
922+
return (
923+
market[trading_enums.ExchangeConstantsMarketStatusColumns.SYMBOL.value]
924+
in (self.SYMBOL, )
925+
)
926+
927+
return market_filter

additional_tests/exchanges_tests/test_ascendex.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class TestAscendexAuthenticatedExchange(
3535
async def test_get_portfolio(self):
3636
await super().test_get_portfolio()
3737

38+
async def test_get_portfolio_with_market_filter(self):
39+
# pass if not implemented
40+
pass
41+
3842
async def test_create_and_cancel_limit_orders(self):
3943
await super().test_create_and_cancel_limit_orders()
4044

additional_tests/exchanges_tests/test_binance.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ class TestBinanceAuthenticatedExchange(
3535
async def test_get_portfolio(self):
3636
await super().test_get_portfolio()
3737

38+
async def test_get_portfolio_with_market_filter(self):
39+
await super().test_get_portfolio_with_market_filter()
40+
3841
async def test_create_and_cancel_limit_orders(self):
3942
await super().test_create_and_cancel_limit_orders()
4043

additional_tests/exchanges_tests/test_binance_futures.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ async def _set_account_types(self, account_types):
4242
async def test_get_portfolio(self):
4343
await super().test_get_portfolio()
4444

45+
async def test_get_portfolio_with_market_filter(self):
46+
# pass if not implemented
47+
pass
48+
4549
async def test_get_empty_linear_and_inverse_positions(self):
4650
await super().test_get_empty_linear_and_inverse_positions()
4751

additional_tests/exchanges_tests/test_bitget.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ class TestBitgetAuthenticatedExchange(
3737
async def test_get_portfolio(self):
3838
await super().test_get_portfolio()
3939

40+
async def test_get_portfolio_with_market_filter(self):
41+
# pass if not implemented
42+
pass
43+
4044
async def test_create_and_cancel_limit_orders(self):
4145
await super().test_create_and_cancel_limit_orders()
4246

additional_tests/exchanges_tests/test_bybit.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ class TestBybitAuthenticatedExchange(
3939
async def test_get_portfolio(self):
4040
await super().test_get_portfolio()
4141

42+
async def test_get_portfolio_with_market_filter(self):
43+
# pass if not implemented
44+
pass
45+
4246
async def test_create_and_cancel_limit_orders(self):
4347
await super().test_create_and_cancel_limit_orders()
4448

additional_tests/exchanges_tests/test_bybit_futures.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ class TestBybitFuturesAuthenticatedExchange(
4040
async def test_get_portfolio(self):
4141
await super().test_get_portfolio()
4242

43+
async def test_get_portfolio_with_market_filter(self):
44+
# pass if not implemented
45+
pass
46+
4347
async def test_get_empty_linear_and_inverse_positions(self):
4448
await super().test_get_empty_linear_and_inverse_positions()
4549

additional_tests/exchanges_tests/test_coinbase.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class TestCoinbaseAuthenticatedExchange(
3535
async def test_get_portfolio(self):
3636
await super().test_get_portfolio()
3737

38+
async def test_get_portfolio_with_market_filter(self):
39+
# pass if not implemented
40+
pass
41+
3842
async def test_create_and_cancel_limit_orders(self):
3943
await super().test_create_and_cancel_limit_orders()
4044

additional_tests/exchanges_tests/test_cryptocom.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class TestCryptoComAuthenticatedExchange(
3535
async def test_get_portfolio(self):
3636
await super().test_get_portfolio()
3737

38+
async def test_get_portfolio_with_market_filter(self):
39+
# pass if not implemented
40+
pass
41+
3842
async def test_create_and_cancel_limit_orders(self):
3943
await super().test_create_and_cancel_limit_orders()
4044

additional_tests/exchanges_tests/test_hollaex.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ class TestHollaexAuthenticatedExchange(
3838
async def test_get_portfolio(self):
3939
await super().test_get_portfolio()
4040

41+
async def test_get_portfolio_with_market_filter(self):
42+
# pass if not implemented
43+
pass
44+
4145
async def test_create_and_cancel_limit_orders(self):
4246
await super().test_create_and_cancel_limit_orders()
4347

additional_tests/exchanges_tests/test_huobi.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ class _TestHuobiAuthenticatedExchange(
3737
async def test_get_portfolio(self):
3838
await super().test_get_portfolio()
3939

40+
async def test_get_portfolio_with_market_filter(self):
41+
# pass if not implemented
42+
pass
43+
4044
async def test_create_and_cancel_limit_orders(self):
4145
await super().test_create_and_cancel_limit_orders()
4246

additional_tests/exchanges_tests/test_kucoin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class TestKucoinAuthenticatedExchange(
3434
async def test_get_portfolio(self):
3535
await super().test_get_portfolio()
3636

37+
async def test_get_portfolio_with_market_filter(self):
38+
await super().test_get_portfolio_with_market_filter()
39+
3740
async def test_create_and_cancel_limit_orders(self):
3841
await super().test_create_and_cancel_limit_orders()
3942

additional_tests/exchanges_tests/test_kucoin_futures.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ class TestKucoinFuturesAuthenticatedExchange(
3838
async def test_get_portfolio(self):
3939
await super().test_get_portfolio()
4040

41+
async def test_get_portfolio_with_market_filter(self):
42+
# pass if not implemented
43+
pass
44+
4145
async def test_get_empty_linear_and_inverse_positions(self):
4246
await super().test_get_empty_linear_and_inverse_positions()
4347

additional_tests/exchanges_tests/test_mexc.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ class TestMEXCAuthenticatedExchange(
3737
async def test_get_portfolio(self):
3838
await super().test_get_portfolio()
3939

40+
async def test_get_portfolio_with_market_filter(self):
41+
# pass if not implemented
42+
pass
43+
4044
async def test_create_and_cancel_limit_orders(self):
4145
await super().test_create_and_cancel_limit_orders()
4246

additional_tests/exchanges_tests/test_okx.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class TestOKXAuthenticatedExchange(
3434
async def test_get_portfolio(self):
3535
await super().test_get_portfolio()
3636

37+
async def test_get_portfolio_with_market_filter(self):
38+
await super().test_get_portfolio_with_market_filter()
39+
3740
async def test_create_and_cancel_limit_orders(self):
3841
await super().test_create_and_cancel_limit_orders()
3942

additional_tests/exchanges_tests/test_okx_futures.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ class TestOKXFuturesAuthenticatedExchange(
3737
async def test_get_portfolio(self):
3838
await super().test_get_portfolio()
3939

40+
async def test_get_portfolio_with_market_filter(self):
41+
# pass if not implemented
42+
pass
43+
4044
async def test_get_empty_linear_and_inverse_positions(self):
4145
await super().test_get_empty_linear_and_inverse_positions()
4246

additional_tests/exchanges_tests/test_phemex.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ class TestPemexAuthenticatedExchange(
3636
async def test_get_portfolio(self):
3737
await super().test_get_portfolio()
3838

39+
async def test_get_portfolio_with_market_filter(self):
40+
# pass if not implemented
41+
pass
42+
3943
async def test_create_and_cancel_limit_orders(self):
4044
await super().test_create_and_cancel_limit_orders()
4145

0 commit comments

Comments
 (0)