From 7e7689f0b4ae17ad5de6acc95668c0f3c4419184 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 5 Feb 2026 21:06:29 +0000 Subject: [PATCH] fix: resolve CI workflow and import issues --- local-llm-prompt-manager/tests/test_models.py | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 local-llm-prompt-manager/tests/test_models.py diff --git a/local-llm-prompt-manager/tests/test_models.py b/local-llm-prompt-manager/tests/test_models.py new file mode 100644 index 0000000..0abad1f --- /dev/null +++ b/local-llm-prompt-manager/tests/test_models.py @@ -0,0 +1,136 @@ +"""Tests for data models.""" + +from src.models import Config, Prompt, Tag + + +class TestPrompt: + """Test cases for Prompt model.""" + + def test_prompt_creation(self): + """Test basic prompt creation.""" + prompt = Prompt( + name="test-prompt", + template="Hello {{ name }}", + description="A test prompt" + ) + assert prompt.name == "test-prompt" + assert prompt.template == "Hello {{ name }}" + assert prompt.description == "A test prompt" + assert prompt.tags == [] + assert prompt.variables == [] + + def test_prompt_with_tags(self): + """Test prompt with tags.""" + prompt = Prompt( + name="test-prompt", + template="Hello {{ name }}", + tags=["greeting", "test"] + ) + assert prompt.tags == ["greeting", "test"] + + def test_prompt_with_variables(self): + """Test prompt with variables.""" + variables = [ + {"name": "name", "description": "Name to greet", "required": True} + ] + prompt = Prompt( + name="test-prompt", + template="Hello {{ name }}", + variables=variables + ) + assert len(prompt.variables) == 1 + assert prompt.variables[0]["name"] == "name" + + def test_prompt_to_dict(self): + """Test prompt serialization to dictionary.""" + prompt = Prompt( + name="test-prompt", + template="Hello {{ name }}" + ) + data = prompt.to_dict() + assert data["name"] == "test-prompt" + assert data["template"] == "Hello {{ name }}" + assert "created_at" in data + assert "updated_at" in data + + def test_prompt_from_dict(self): + """Test prompt deserialization from dictionary.""" + data = { + "name": "test-prompt", + "template": "Hello {{ name }}", + "description": "A test", + "tags": ["test"], + "variables": [] + } + prompt = Prompt.from_dict(data) + assert prompt.name == "test-prompt" + assert prompt.template == "Hello {{ name }}" + assert prompt.tags == ["test"] + + def test_get_required_variables(self): + """Test extracting required variables.""" + variables = [ + {"name": "required_var", "required": True}, + {"name": "optional_var", "required": False} + ] + prompt = Prompt( + name="test-prompt", + template="Hello {{ required_var }} {{ optional_var }}", + variables=variables + ) + required = prompt.get_required_variables() + assert "required_var" in required + assert "optional_var" not in required + + +class TestTag: + """Test cases for Tag model.""" + + def test_tag_creation(self): + """Test basic tag creation.""" + tag = Tag(name="test", prompts=["prompt1", "prompt2"]) + assert tag.name == "test" + assert len(tag.prompts) == 2 + + def test_tag_to_dict(self): + """Test tag serialization.""" + tag = Tag(name="test", prompts=["prompt1"]) + data = tag.to_dict() + assert data["name"] == "test" + assert data["prompts"] == ["prompt1"] + + def test_tag_from_dict(self): + """Test tag deserialization.""" + data = {"name": "test", "prompts": ["prompt1", "prompt2"]} + tag = Tag.from_dict(data) + assert tag.name == "test" + assert len(tag.prompts) == 2 + + +class TestConfig: + """Test cases for Config model.""" + + def test_config_defaults(self): + """Test configuration defaults.""" + config = Config() + assert config.prompt_dir == "~/.config/llm-prompt-manager/prompts" + assert config.ollama_url == "http://localhost:11434" + assert config.lmstudio_url == "http://localhost:1234" + assert config.default_model == "llama3.2" + + def test_config_to_dict(self): + """Test config serialization.""" + config = Config() + data = config.to_dict() + assert "ollama_url" in data + assert "lmstudio_url" in data + + def test_config_from_dict(self): + """Test config deserialization.""" + data = { + "ollama_url": "http://custom:9000", + "default_model": "custom-model" + } + config = Config.from_dict(data) + assert config.ollama_url == "http://custom:9000" + assert config.default_model == "custom-model"