"""Tests for the CLI module.""" import json import pytest from click.testing import CliRunner from regex_humanizer.cli import main class TestCLIMain: def test_main_help(self): runner = CliRunner() result = runner.invoke(main, ["--help"]) assert result.exit_code == 0 assert "Regex Humanizer" in result.output def test_main_version(self): runner = CliRunner() result = runner.invoke(main, ["--version"]) assert result.exit_code == 0 assert "0.1.0" in result.output class TestExplainCommand: def test_explain_literal(self): runner = CliRunner() result = runner.invoke(main, ["explain", "hello"]) assert result.exit_code == 0 assert "hello" in result.output.lower() or "letter" in result.output.lower() def test_explain_with_flavor(self): runner = CliRunner() result = runner.invoke(main, ["explain", "hello", "--flavor", "python"]) assert result.exit_code == 0 assert "hello" in result.output.lower() def test_explain_verbose(self): runner = CliRunner() result = runner.invoke(main, ["explain", "hello", "--verbose"]) assert result.exit_code == 0 assert "Pattern" in result.output def test_explain_json(self): runner = CliRunner() result = runner.invoke(main, ["explain", "hello", "--json"]) assert result.exit_code == 0 assert "{" in result.output class TestGenerateCommand: def test_generate_literal(self): runner = CliRunner() result = runner.invoke(main, ["generate", "hello"]) assert result.exit_code == 0 assert "hello" in result.output def test_generate_with_count(self): runner = CliRunner() result = runner.invoke(main, ["generate", "a", "--count", "3"]) assert result.exit_code == 0 def test_generate_json(self): runner = CliRunner() result = runner.invoke(main, ["generate", "hello", "--json"]) assert result.exit_code == 0 assert "{" in result.output class TestFromEnglishCommand: def test_from_english_basic(self): runner = CliRunner() result = runner.invoke(main, ["from-english", "the letter a"]) assert result.exit_code == 0 def test_from_english_with_flavor(self): runner = CliRunner() result = runner.invoke(main, ["from-english", "a digit", "--flavor", "python"]) assert result.exit_code == 0 class TestFlavorsCommand: def test_flavors_list(self): runner = CliRunner() result = runner.invoke(main, ["flavors"]) assert result.exit_code == 0 assert "pcre" in result.output assert "javascript" in result.output class TestDetectCommand: def test_detect_pattern(self): runner = CliRunner() result = runner.invoke(main, ["detect", r"\d+"]) assert result.exit_code == 0 assert "flavor" in result.output.lower()