diff --git a/tests/units/test_basic.py b/tests/units/test_basic.py index 60a02cf1..39fca2c3 100644 --- a/tests/units/test_basic.py +++ b/tests/units/test_basic.py @@ -10,6 +10,7 @@ import pytest +from ansible_creator.arg_parser import Parser from ansible_creator.cli import Cli from ansible_creator.config import Config from ansible_creator.output import Output @@ -486,3 +487,40 @@ def test_config_post_init( ) config.__post_init__() assert config.project == "playbook" + + +def test_valid_pattern_name() -> None: + """Test the _valid_pattern_name function. + + Raises: + AssertionError: If the assertion fails. + """ + parser = Parser() + + # Test valid pattern names + valid_names = [ + "my_pattern", + "weather_forecast", + "test123", + "pattern_name_123", + "a" * 63, # Maximum length + "abc", # Minimum length + ] + for name in valid_names: + result = parser._valid_pattern_name(name) + assert result == name + assert len(parser.pending_logs) == 0 + + # Test invalid pattern names - starts with underscore + parser.pending_logs.clear() + result = parser._valid_pattern_name("_invalid") + assert result == "_invalid" + assert len(parser.pending_logs) == 1 + assert "cannot begin with an underscore" in parser.pending_logs[0].message + + # Test invalid pattern names - too short + parser.pending_logs.clear() + result = parser._valid_pattern_name("ab") + assert result == "ab" + assert len(parser.pending_logs) == 1 + assert "longer than 2 characters" in parser.pending_logs[0].message