diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 6eec2beb7..61acdf510 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -249,7 +249,7 @@ class Exchange: # Holds all open sell orders for dry_run self._dry_run_open_orders: dict[str, Any] = {} - + self._is_demo_trading = exchange_conf.get("demo_trading", False) if self._config["dry_run"]: logger.info("Instance is running with dry_run enabled") logger.info(f"Using CCXT {ccxt.__version__}") @@ -437,12 +437,12 @@ class Exchange: @property def name(self) -> str: """exchange Name (from ccxt)""" - return self._api.name + return self._api.name if not self._is_demo_trading else f"{self._api.name} (Demo)" @property def id(self) -> str: """exchange ccxt id""" - return self._api.id + return self._api.id if not self._is_demo_trading else f"{self._api.id}_demo" @property def timeframes(self) -> list[str]: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index a9200f926..022c410f0 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -4312,12 +4312,29 @@ def test_fetch_order_or_stoploss_order(default_conf, mocker): @pytest.mark.parametrize("exchange_name", EXCHANGES) -def test_name(default_conf, mocker, exchange_name): - exchange = get_patched_exchange(mocker, default_conf, exchange=exchange_name) +def test_name(default_conf_usdt, mocker, exchange_name): + # exchange = get_patched_exchange(mocker, default_conf_usdt, exchange=exchange_name) + api_mock = MagicMock() + api_mock.name = exchange_name.title() + api_mock.id = exchange_name + mocker.patch(f"{EXMS}._init_ccxt", MagicMock(return_value=api_mock)) + mocker.patch(f"{EXMS}._load_async_markets") + # mocker.patch(f"{EXMS}.validate_timeframes") + # mocker.patch(f"{EXMS}.validate_stakecurrency") + # mocker.patch(f"{EXMS}.validate_pricing") + default_conf_usdt["exchange"]["name"] = "exchange_name" + exchange = ExchangeResolver.load_exchange(default_conf_usdt, validate=False) assert exchange.name == exchange_name.title() assert exchange.id == exchange_name + default_conf_usdt["exchange"]["demo_trading"] = True + + exchange_demo = ExchangeResolver.load_exchange(default_conf_usdt, validate=False) + + assert exchange_demo.name == f"{exchange_name.title()} (Demo)" + assert exchange_demo.id == f"{exchange_name}_demo" + @pytest.mark.parametrize( "trading_mode,amount",