test(v1.4.0-p2): add failing tests for milestones and columns
RED phase: 5 tests in test_collector.py (collect_milestones), 10 tests in test_display.py (render_milestones, parse_columns), 2 tests in test_exporter.py (milestones JSON), 7 tests in test_cli.py (--milestones, --columns). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -389,3 +389,94 @@ class TestMainFormatJson:
|
||||
captured = capsys.readouterr()
|
||||
parsed = json.loads(captured.out)
|
||||
assert isinstance(parsed, list)
|
||||
|
||||
|
||||
class TestParseArgsMilestones:
|
||||
"""Test --milestones argument parsing."""
|
||||
|
||||
def test_parse_args_milestones(self):
|
||||
"""--milestones sets milestones=True."""
|
||||
from gitea_dashboard.cli import parse_args
|
||||
|
||||
args = parse_args(["--milestones"])
|
||||
assert args.milestones is True
|
||||
|
||||
def test_parse_args_milestones_default(self):
|
||||
"""Without --milestones, milestones is False."""
|
||||
from gitea_dashboard.cli import parse_args
|
||||
|
||||
args = parse_args([])
|
||||
assert args.milestones is False
|
||||
|
||||
|
||||
class TestParseArgsColumns:
|
||||
"""Test --columns argument parsing."""
|
||||
|
||||
def test_parse_args_columns(self):
|
||||
"""--columns name,issues sets columns='name,issues'."""
|
||||
from gitea_dashboard.cli import parse_args
|
||||
|
||||
args = parse_args(["--columns", "name,issues"])
|
||||
assert args.columns == "name,issues"
|
||||
|
||||
def test_parse_args_columns_default(self):
|
||||
"""Without --columns, columns is None."""
|
||||
from gitea_dashboard.cli import parse_args
|
||||
|
||||
args = parse_args([])
|
||||
assert args.columns is None
|
||||
|
||||
|
||||
class TestMainMilestonesMode:
|
||||
"""Test main() with --milestones."""
|
||||
|
||||
@patch("gitea_dashboard.cli.render_milestones")
|
||||
@patch("gitea_dashboard.cli.collect_milestones")
|
||||
@patch("gitea_dashboard.cli.GiteaClient")
|
||||
def test_main_milestones_mode(self, mock_client_cls, mock_collect_ms, mock_render_ms):
|
||||
"""--milestones routes to collect_milestones + render_milestones."""
|
||||
env = {"GITEA_TOKEN": "test-tok"}
|
||||
mock_client_cls.return_value = MagicMock()
|
||||
mock_collect_ms.return_value = []
|
||||
|
||||
with patch.dict("os.environ", env, clear=True):
|
||||
main(["--milestones"])
|
||||
|
||||
mock_collect_ms.assert_called_once()
|
||||
mock_render_ms.assert_called_once()
|
||||
|
||||
|
||||
class TestMainColumnsHelp:
|
||||
"""Test main() with --columns help."""
|
||||
|
||||
@patch("gitea_dashboard.cli.GiteaClient")
|
||||
def test_main_columns_help(self, mock_client_cls, capsys):
|
||||
"""--columns help displays available columns and exits."""
|
||||
env = {"GITEA_TOKEN": "test-tok"}
|
||||
mock_client_cls.return_value = MagicMock()
|
||||
|
||||
with patch.dict("os.environ", env, clear=True):
|
||||
main(["--columns", "help"])
|
||||
|
||||
captured = capsys.readouterr()
|
||||
# Should list column names
|
||||
assert "name" in captured.out or "name" in captured.err
|
||||
|
||||
@patch("gitea_dashboard.cli.render_dashboard")
|
||||
@patch("gitea_dashboard.cli.collect_all")
|
||||
@patch("gitea_dashboard.cli.GiteaClient")
|
||||
def test_main_no_desc_and_columns_compat(self, mock_client_cls, mock_collect, mock_render):
|
||||
"""--no-desc and --columns -commit both apply cumulatively."""
|
||||
env = {"GITEA_TOKEN": "test-tok"}
|
||||
mock_client_cls.return_value = MagicMock()
|
||||
mock_collect.return_value = []
|
||||
|
||||
with patch.dict("os.environ", env, clear=True):
|
||||
main(["--no-desc", "--columns", "-commit"])
|
||||
|
||||
# render_dashboard should be called with columns excluding both description and commit
|
||||
call_kwargs = mock_render.call_args
|
||||
columns = call_kwargs[1].get("columns") if call_kwargs[1] else None
|
||||
if columns is not None:
|
||||
assert "description" not in columns
|
||||
assert "commit" not in columns
|
||||
|
||||
Reference in New Issue
Block a user