summaryrefslogtreecommitdiff
path: root/cli/tests/test_cli_strategy.py
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-01 17:56:16 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-01 17:56:16 +0900
commitfa7e1dc44787592da647bdda0a63310be0cfcc8b (patch)
tree9533c747f8a40aaa1697252382bfbbafc8f3fe9d /cli/tests/test_cli_strategy.py
parenta65575124b18f2ec5d418623e22c5bdef6c3424e (diff)
test: add CLI command tests and API router tests
Diffstat (limited to 'cli/tests/test_cli_strategy.py')
-rw-r--r--cli/tests/test_cli_strategy.py47
1 files changed, 47 insertions, 0 deletions
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