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:30 +00:00
parent 7e7689f0b4
commit 6086d86fb1

View File

@@ -0,0 +1,170 @@
"""Tests for storage layer."""
import os
import tempfile
from src.models import Prompt
from src.storage import ConfigManager, PromptStorage
class TestPromptStorage:
"""Test cases for PromptStorage."""
def setup_method(self):
"""Set up test fixtures."""
self.temp_dir = tempfile.mkdtemp()
self.storage = PromptStorage(self.temp_dir)
def teardown_method(self):
"""Clean up test fixtures."""
import shutil
shutil.rmtree(self.temp_dir, ignore_errors=True)
def test_save_and_get_prompt(self):
"""Test saving and retrieving a prompt."""
prompt = Prompt(
name="test-prompt",
template="Hello {{ name }}"
)
self.storage.save_prompt(prompt)
retrieved = self.storage.get_prompt("test-prompt")
assert retrieved is not None
assert retrieved.name == "test-prompt"
assert retrieved.template == "Hello {{ name }}"
def test_list_prompts(self):
"""Test listing prompts."""
prompt1 = Prompt(name="prompt-1", template="Template 1")
prompt2 = Prompt(name="prompt-2", template="Template 2")
self.storage.save_prompt(prompt1)
self.storage.save_prompt(prompt2)
prompts = self.storage.list_prompts()
assert len(prompts) == 2
assert "prompt-1" in prompts
assert "prompt-2" in prompts
def test_delete_prompt(self):
"""Test deleting a prompt."""
prompt = Prompt(name="test-prompt", template="Template")
self.storage.save_prompt(prompt)
result = self.storage.delete_prompt("test-prompt")
assert result is True
retrieved = self.storage.get_prompt("test-prompt")
assert retrieved is None
def test_prompt_exists(self):
"""Test checking if prompt exists."""
prompt = Prompt(name="test-prompt", template="Template")
self.storage.save_prompt(prompt)
assert self.storage.prompt_exists("test-prompt") is True
assert self.storage.prompt_exists("non-existent") is False
def test_add_tag_to_prompt(self):
"""Test adding tag to prompt."""
prompt = Prompt(name="test-prompt", template="Template")
self.storage.save_prompt(prompt)
self.storage.add_tag_to_prompt("test-prompt", "test-tag")
tag = self.storage.get_tag("test-tag")
assert tag is not None
assert "test-prompt" in tag.prompts
def test_remove_tag_from_prompt(self):
"""Test removing tag from prompt."""
prompt = Prompt(name="test-prompt", template="Template", tags=["test-tag"])
self.storage.save_prompt(prompt)
self.storage.add_tag_to_prompt("test-prompt", "test-tag")
result = self.storage.remove_tag_from_prompt("test-prompt", "test-tag")
assert result is True
tag = self.storage.get_tag("test-tag")
assert tag is None or "test-prompt" not in tag.prompts
def test_search_prompts_by_name(self):
"""Test searching prompts by name."""
prompt1 = Prompt(name="search-test", template="Template 1")
prompt2 = Prompt(name="other-prompt", template="Template 2")
self.storage.save_prompt(prompt1)
self.storage.save_prompt(prompt2)
results = self.storage.search_prompts(name="search")
assert len(results) == 1
assert results[0].name == "search-test"
def test_search_prompts_by_content(self):
"""Test searching prompts by content."""
prompt1 = Prompt(name="prompt-1", template="Hello world")
prompt2 = Prompt(name="prompt-2", template="Goodbye world")
self.storage.save_prompt(prompt1)
self.storage.save_prompt(prompt2)
results = self.storage.search_prompts(content="Hello")
assert len(results) == 1
assert results[0].name == "prompt-1"
def test_get_prompts_by_tag(self):
"""Test getting prompts by tag."""
prompt1 = Prompt(name="prompt-1", template="Template 1", tags=["docs"])
prompt2 = Prompt(name="prompt-2", template="Template 2", tags=["other"])
self.storage.save_prompt(prompt1)
self.storage.save_prompt(prompt2)
self.storage.add_tag_to_prompt("prompt-1", "docs")
results = self.storage.get_prompts_by_tag("docs")
assert len(results) == 1
assert results[0].name == "prompt-1"
class TestConfigManager:
"""Test cases for ConfigManager."""
def setup_method(self):
"""Set up test fixtures."""
self.temp_file = tempfile.mktemp(suffix=".yaml")
self.manager = ConfigManager(self.temp_file)
def teardown_method(self):
"""Clean up test fixtures."""
if os.path.exists(self.temp_file):
os.unlink(self.temp_file)
def test_load_default_config(self):
"""Test loading default configuration."""
config = self.manager.load()
assert config.ollama_url == "http://localhost:11434"
assert config.default_model == "llama3.2"
def test_save_and_load_config(self):
"""Test saving and loading configuration."""
from src.models import Config
config = Config()
config.ollama_url = "http://custom:9000"
config.default_model = "custom-model"
self.manager.save(config)
loaded = self.manager.load()
assert loaded.ollama_url == "http://custom:9000"
assert loaded.default_model == "custom-model"
def test_set_config_value(self):
"""Test setting a configuration value."""
self.manager.set("default_model", "new-model")
config = self.manager.load()
assert config.default_model == "new-model"
def test_get_config_value(self):
"""Test getting a configuration value."""
value = self.manager.get("default_model")
assert value == "llama3.2"