From fa7e1dc44787592da647bdda0a63310be0cfcc8b Mon Sep 17 00:00:00 2001 From: TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:56:16 +0900 Subject: test: add CLI command tests and API router tests --- cli/tests/test_cli_strategy.py | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 cli/tests/test_cli_strategy.py (limited to 'cli/tests/test_cli_strategy.py') diff --git a/cli/tests/test_cli_strategy.py b/cli/tests/test_cli_strategy.py new file mode 100644 index 0000000..3c89477 --- /dev/null +++ b/cli/tests/test_cli_strategy.py @@ -0,0 +1,47 @@ +"""Tests for strategy CLI commands.""" +from unittest.mock import patch, MagicMock +from click.testing import CliRunner +from trading_cli.main import cli + + +def _make_mock_strategy(name, warmup_period=14): + s = MagicMock() + s.name = name + s.warmup_period = warmup_period + type(s).__name__ = "MockStrategy" + return s + + +def test_strategy_list(): + mock_strategies = [_make_mock_strategy("rsi"), _make_mock_strategy("macd", 26)] + with patch("trading_cli.commands.strategy._load_all_strategies", return_value=mock_strategies): + runner = CliRunner() + result = runner.invoke(cli, ["strategy", "list"]) + assert result.exit_code == 0 + assert "rsi" in result.output.lower() or "Strategy" in result.output + + +def test_strategy_list_empty(): + with patch("trading_cli.commands.strategy._load_all_strategies", return_value=[]): + runner = CliRunner() + result = runner.invoke(cli, ["strategy", "list"]) + assert result.exit_code == 0 + assert "No strategies found" in result.output + + +def test_strategy_info_rsi(): + mock_strategies = [_make_mock_strategy("rsi")] + with patch("trading_cli.commands.strategy._load_all_strategies", return_value=mock_strategies): + runner = CliRunner() + result = runner.invoke(cli, ["strategy", "info", "--name", "rsi"]) + assert result.exit_code == 0 + assert "rsi" in result.output.lower() + + +def test_strategy_info_unknown(): + mock_strategies = [_make_mock_strategy("rsi")] + with patch("trading_cli.commands.strategy._load_all_strategies", return_value=mock_strategies): + runner = CliRunner() + result = runner.invoke(cli, ["strategy", "info", "--name", "nonexistent"]) + # Should handle gracefully (exit 0 or 1 with message) + assert "not found" in result.output.lower() or result.exit_code != 0 or "nonexistent" in result.output -- cgit v1.2.3