"""Tests for the CLI module.""" import sys from unittest.mock import MagicMock, patch import click from click.testing import CliRunner from git_commit_ai.cli.cli import main class TestCLIBasic: """Basic CLI tests.""" def test_main_help(self): """Test main command help.""" runner = CliRunner() result = runner.invoke(main, ["--help"]) assert result.exit_code == 0 assert "Git Commit AI" in result.output assert "generate" in result.output assert "status" in result.output def test_generate_help(self): """Test generate command help.""" runner = CliRunner() result = runner.invoke(main, ["generate", "--help"]) assert result.exit_code == 0 assert "conventional" in result.output assert "model" in result.output class TestCLIValidation: """CLI validation tests.""" def test_validate_valid_message(self): """Test validating a valid conventional commit message.""" runner = CliRunner() result = runner.invoke(main, ["validate", "feat(auth): add login"]) assert result.exit_code == 0 assert "Valid" in result.output def test_validate_invalid_message(self): """Test validating an invalid commit message.""" runner = CliRunner() result = runner.invoke(main, ["validate", "just a random message"]) assert result.exit_code == 1 assert "Invalid" in result.output def test_validate_empty_message(self): """Test validating an empty commit message.""" runner = CliRunner() result = runner.invoke(main, ["validate", ""]) assert result.exit_code == 1 class TestCLIAutoFix: """CLI auto-fix tests.""" def test_validate_auto_fix(self): """Test auto-fix suggestion.""" runner = CliRunner() result = runner.invoke(main, ["validate", "add login feature", "--auto-fix"]) assert result.exit_code == 1 assert "Suggested fix" in result.output