Files
ModelForge/backend/tests/test_project_registry.py

44 lines
1.5 KiB
Python

from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from modelforge_api.persistence.models import (
Base,
Capability,
CapabilityContract,
Project,
ProjectBinding,
)
from modelforge_api.services.manifest_registry import ManifestRegistry
from modelforge_api.services.project_registry import sync_project_registry
def test_project_registry_materializes_only_real_contracts_and_is_idempotent() -> None:
engine = create_engine("sqlite+pysqlite:///:memory:")
Base.metadata.create_all(engine)
with Session(engine) as session:
capability = Capability(key="rag.embedding", description="test")
session.add(capability)
session.flush()
session.add(
CapabilityContract(
capability_id=capability.id,
version=1,
input_schema={},
output_schema={},
contract={},
upgrade_class="requires_reindex",
)
)
session.commit()
first = sync_project_registry(session, ManifestRegistry())
second = sync_project_registry(session, ManifestRegistry())
assert first.projects_created == 3
assert first.bindings_created == 1
assert first.unavailable_contracts
assert second.projects_created == 0
assert second.bindings_created == 0
assert session.query(Project).count() == 3
assert session.query(ProjectBinding).count() == 1