"""Tests for Local Code Assistant prompt templates.""" import pytest from local_code_assistant.prompts.templates import PromptTemplates, LanguageConfig class TestPromptTemplates: """Tests for prompt template generation.""" def test_code_generation_prompt(self): """Test code generation prompt creation.""" prompt = PromptTemplates.code_generation( language="python", user_prompt="Create a function to add numbers" ) assert "python" in prompt assert "Create a function to add numbers" in prompt assert "Generate" in prompt def test_code_explanation_prompt(self): """Test code explanation prompt creation.""" code = "def add(a, b): return a + b" prompt = PromptTemplates.code_explanation( language="python", code=code ) assert "python" in prompt assert code in prompt assert "Explain" in prompt def test_code_refactor_prompt(self): """Test refactoring prompt creation.""" code = "def add(a,b):return a+b" prompt = PromptTemplates.code_refactor( language="python", code=code, focus=["readability", "naming"] ) assert "python" in prompt assert code in prompt assert "readability" in prompt assert "naming" in prompt def test_safe_refactor_prompt(self): """Test safe refactoring prompt creation.""" code = "x = 1 + 2" prompt = PromptTemplates.code_refactor_safe( language="python", code=code ) assert "Safe refactoring" in prompt assert "no changing external APIs" in prompt def test_optimize_prompt(self): """Test optimization prompt creation.""" code = "for i in range(1000): print(i)" prompt = PromptTemplates.code_refactor_optimize( language="python", code=code ) assert "Optimize" in prompt assert "performance" in prompt def test_test_generation_prompt(self): """Test test generation prompt creation.""" code = "def add(a, b): return a + b" prompt = PromptTemplates.test_generation( language="python", code=code ) assert "pytest" in prompt or "testing framework" in prompt assert code in prompt def test_build_system_prompt(self): """Test system prompt building.""" prompt = PromptTemplates.build_system_prompt() assert "coding assistant" in prompt.lower() assert "Generate" in prompt assert "Explain" in prompt def test_build_system_prompt_with_context(self): """Test system prompt with extra context.""" prompt = PromptTemplates.build_system_prompt( extra_context="Focus on performance optimization." ) assert "performance optimization" in prompt class TestLanguageConfig: """Tests for language configuration.""" def test_get_supported_languages(self): """Test getting list of supported languages.""" languages = LanguageConfig.get_supported_languages() assert "python" in languages assert "javascript" in languages assert "typescript" in languages assert "go" in languages assert "rust" in languages def test_is_supported(self): """Test language support check.""" assert LanguageConfig.is_supported("python") is True assert LanguageConfig.is_supported("rust") is True assert LanguageConfig.is_supported("cobol") is False def test_get_extension(self): """Test file extension retrieval.""" assert LanguageConfig.get_extension("python") == ".py" assert LanguageConfig.get_extension("javascript") == ".js" assert LanguageConfig.get_extension("go") == ".go" def test_get_comment_style(self): """Test comment style retrieval.""" assert LanguageConfig.get_comment_style("python") == "#" assert LanguageConfig.get_comment_style("javascript") == "//" assert LanguageConfig.get_comment_style("rust") == "//" def test_get_config(self): """Test language configuration retrieval.""" config = LanguageConfig.get_config("python") assert config.extension == ".py" assert config.testing_framework == "pytest"