94 lines
2.4 KiB
Python
94 lines
2.4 KiB
Python
"""Test cases for template version management."""
|
|
import pytest
|
|
|
|
from app.llm.templates import PromptTemplate
|
|
from app.llm.version import TemplateVersion, TemplateVersionManager
|
|
|
|
|
|
def test_template_version_creation():
|
|
"""Test creating and managing template versions."""
|
|
template = PromptTemplate(
|
|
id="test",
|
|
name="Test Template",
|
|
description="A test template",
|
|
template="Test {var}",
|
|
variables=["var"]
|
|
)
|
|
|
|
version = TemplateVersion.create(
|
|
template=template,
|
|
version="1.0.0",
|
|
metadata={"author": "test"}
|
|
)
|
|
|
|
assert version.id == "test"
|
|
assert version.version == "1.0.0"
|
|
assert not version.is_active
|
|
assert version.metadata["author"] == "test"
|
|
|
|
|
|
def test_version_manager():
|
|
"""Test version manager operations."""
|
|
manager = TemplateVersionManager()
|
|
|
|
template = PromptTemplate(
|
|
id="test",
|
|
name="Test Template",
|
|
description="A test template",
|
|
template="Test {var}",
|
|
variables=["var"]
|
|
)
|
|
|
|
# Add version
|
|
v1 = manager.add_version(template, "1.0.0")
|
|
assert not v1.is_active
|
|
|
|
# Add and activate version
|
|
v2 = manager.add_version(template, "2.0.0", activate=True)
|
|
assert v2.is_active
|
|
assert not v1.is_active
|
|
|
|
# Get version
|
|
assert manager.get_version("test", "1.0.0") == v1
|
|
assert manager.get_version("test", "2.0.0") == v2
|
|
|
|
# List versions
|
|
versions = manager.list_versions("test")
|
|
assert len(versions) == 2
|
|
|
|
# Get active version
|
|
active = manager.get_active_version("test")
|
|
assert active == v2
|
|
|
|
# Export and import
|
|
exported = manager.export_versions("test")
|
|
|
|
new_manager = TemplateVersionManager()
|
|
new_manager.import_versions(exported)
|
|
|
|
imported = new_manager.get_version("test", "2.0.0")
|
|
assert imported.version == "2.0.0"
|
|
assert imported.is_active
|
|
|
|
|
|
def test_version_validation():
|
|
"""Test version validation checks."""
|
|
manager = TemplateVersionManager()
|
|
|
|
template = PromptTemplate(
|
|
id="test",
|
|
name="Test Template",
|
|
description="A test template",
|
|
template="Test {var}",
|
|
variables=["var"]
|
|
)
|
|
|
|
# Test duplicate version
|
|
manager.add_version(template, "1.0.0")
|
|
with pytest.raises(ValueError):
|
|
manager.add_version(template, "1.0.0")
|
|
|
|
# Test invalid version
|
|
with pytest.raises(ValueError):
|
|
manager.activate_version("test", "invalid")
|