"""Tests for CLI commands.""" from click.testing import CliRunner import pytest from i18n_guardian.cli import main @pytest.fixture def runner(): """Create a Click CLI runner.""" return CliRunner() class TestCLIBasic: """Basic CLI tests.""" def test_version(self, runner): """Test --version option.""" result = runner.invoke(main, ["--version"]) assert result.exit_code == 0 assert "i18n-guardian" in result.output.lower() def test_help(self, runner): """Test --help option.""" result = runner.invoke(main, ["--help"]) assert result.exit_code == 0 assert "scan" in result.output.lower() assert "fix" in result.output.lower() assert "init" in result.output.lower() assert "check" in result.output.lower() class TestScanCommand: """Tests for scan command.""" def test_scan_no_path(self, runner): """Test scan without path.""" result = runner.invoke(main, ["scan"]) assert result.exit_code == 0 def test_scan_with_verbose(self, runner, temp_dir): """Test scan with verbose flag.""" result = runner.invoke(main, ["--verbose", "--path", str(temp_dir), "scan"]) assert result.exit_code == 0 def test_scan_output_format(self, runner, temp_dir): """Test scan with different output formats.""" for fmt in ["text", "json"]: result = runner.invoke(main, ["--path", str(temp_dir), "scan", "--output", fmt]) assert result.exit_code == 0 class TestFixCommand: """Tests for fix command.""" def test_fix_dry_run(self, runner, temp_dir): """Test fix with dry-run flag.""" result = runner.invoke(main, ["--path", str(temp_dir), "fix", "--dry-run"]) assert result.exit_code == 0 class TestInitCommand: """Tests for init command.""" def test_init_output(self, runner, temp_dir): """Test init command output.""" output_path = str(temp_dir / ".i18n-guardian.yaml") result = runner.invoke(main, ["init", "--output", output_path]) assert result.exit_code == 0 class TestCheckCommand: """Tests for check command.""" def test_check_ci_output(self, runner, temp_dir): """Test check command with CI options.""" result = runner.invoke(main, ["--path", str(temp_dir), "check", "--output", "json"]) assert result.exit_code == 0