57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
|
|
"""Tests for the debug CLI."""
|
||
|
|
from unittest.mock import MagicMock, patch
|
||
|
|
|
||
|
|
from click.testing import CliRunner
|
||
|
|
|
||
|
|
from main import cli
|
||
|
|
|
||
|
|
|
||
|
|
class TestDebugGroup:
|
||
|
|
"""Tests for the debug command group."""
|
||
|
|
|
||
|
|
@patch("main.engine", new_callable=MagicMock)
|
||
|
|
def test_debug_help_shows_subcommands(self, mock_engine: MagicMock) -> None:
|
||
|
|
runner = CliRunner()
|
||
|
|
result = runner.invoke(cli, ["debug", "--help"])
|
||
|
|
assert result.exit_code == 0
|
||
|
|
assert "districts" in result.output
|
||
|
|
|
||
|
|
@patch("main.engine", new_callable=MagicMock)
|
||
|
|
def test_debug_requires_user_email(self, mock_engine: MagicMock) -> None:
|
||
|
|
runner = CliRunner()
|
||
|
|
result = runner.invoke(cli, ["debug", "districts", "list"])
|
||
|
|
assert result.exit_code != 0
|
||
|
|
assert "user-email" in result.output.lower() or "Missing" in result.output
|
||
|
|
|
||
|
|
|
||
|
|
class TestDistrictsCommand:
|
||
|
|
"""Tests for debug districts subcommand."""
|
||
|
|
|
||
|
|
@patch("cli.districts.district_service.get_all_districts")
|
||
|
|
@patch("main.engine", new_callable=MagicMock)
|
||
|
|
def test_list_districts_direct(
|
||
|
|
self, mock_engine: MagicMock, mock_get: MagicMock
|
||
|
|
) -> None:
|
||
|
|
mock_get.return_value = {"London": "R1", "Camden": "R2"}
|
||
|
|
runner = CliRunner()
|
||
|
|
result = runner.invoke(
|
||
|
|
cli, ["debug", "-u", "test@example.com", "districts", "list"]
|
||
|
|
)
|
||
|
|
assert result.exit_code == 0
|
||
|
|
assert "London" in result.output
|
||
|
|
|
||
|
|
@patch("cli.districts.district_service.get_all_districts")
|
||
|
|
@patch("main.engine", new_callable=MagicMock)
|
||
|
|
def test_list_districts_json(
|
||
|
|
self, mock_engine: MagicMock, mock_get: MagicMock
|
||
|
|
) -> None:
|
||
|
|
mock_get.return_value = {"London": "R1"}
|
||
|
|
runner = CliRunner()
|
||
|
|
result = runner.invoke(
|
||
|
|
cli, ["debug", "-u", "test@example.com", "--json", "districts", "list"]
|
||
|
|
)
|
||
|
|
assert result.exit_code == 0
|
||
|
|
import json
|
||
|
|
data = json.loads(result.output)
|
||
|
|
assert "London" in data
|