diff options
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/tests/test_cli_backtest.py | 19 | ||||
| -rw-r--r-- | cli/tests/test_cli_portfolio.py | 16 | ||||
| -rw-r--r-- | cli/tests/test_cli_service.py | 22 | ||||
| -rw-r--r-- | cli/tests/test_cli_strategy.py | 47 |
4 files changed, 104 insertions, 0 deletions
diff --git a/cli/tests/test_cli_backtest.py b/cli/tests/test_cli_backtest.py new file mode 100644 index 0000000..84227a9 --- /dev/null +++ b/cli/tests/test_cli_backtest.py @@ -0,0 +1,19 @@ +"""Tests for backtest CLI commands.""" +from click.testing import CliRunner +from trading_cli.main import cli + + +def test_backtest_run_help(): + runner = CliRunner() + result = runner.invoke(cli, ["backtest", "run", "--help"]) + assert result.exit_code == 0 + assert "--strategy" in result.output + assert "--symbol" in result.output + assert "--balance" in result.output + + +def test_backtest_report_help(): + runner = CliRunner() + result = runner.invoke(cli, ["backtest", "report", "--help"]) + assert result.exit_code == 0 + assert "--id" in result.output diff --git a/cli/tests/test_cli_portfolio.py b/cli/tests/test_cli_portfolio.py new file mode 100644 index 0000000..351b49f --- /dev/null +++ b/cli/tests/test_cli_portfolio.py @@ -0,0 +1,16 @@ +"""Tests for portfolio CLI commands.""" +from click.testing import CliRunner +from trading_cli.main import cli + + +def test_portfolio_show_help(): + runner = CliRunner() + result = runner.invoke(cli, ["portfolio", "show", "--help"]) + assert result.exit_code == 0 + + +def test_portfolio_history_help(): + runner = CliRunner() + result = runner.invoke(cli, ["portfolio", "history", "--help"]) + assert result.exit_code == 0 + assert "--days" in result.output diff --git a/cli/tests/test_cli_service.py b/cli/tests/test_cli_service.py new file mode 100644 index 0000000..08cd396 --- /dev/null +++ b/cli/tests/test_cli_service.py @@ -0,0 +1,22 @@ +"""Tests for service CLI commands.""" +from click.testing import CliRunner +from trading_cli.main import cli + + +def test_service_up_help(): + runner = CliRunner() + result = runner.invoke(cli, ["service", "up", "--help"]) + assert result.exit_code == 0 + + +def test_service_down_help(): + runner = CliRunner() + result = runner.invoke(cli, ["service", "down", "--help"]) + assert result.exit_code == 0 + + +def test_service_logs_help(): + runner = CliRunner() + result = runner.invoke(cli, ["service", "logs", "--help"]) + assert result.exit_code == 0 + assert "--name" in result.output 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 |
