fix: resolve CI workflow and import issues
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-05 21:06:29 +00:00
parent 01585e142a
commit 7e7689f0b4

View File

@@ -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"