| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import pytest
- from ontorefactor_governance.db import Database
- from ontorefactor_governance.service import (
- GovernanceError,
- export_jsonld,
- impact,
- list_elements,
- require_project,
- seed_challenge_cup_demo,
- seed_tenant_isolation,
- )
- @pytest.fixture
- def db():
- value = Database("sqlite:///:memory:")
- yield value
- value.close()
- def test_reference_slice_is_valid_and_idempotent(db):
- first = seed_tenant_isolation(db, "tenant-a")
- second = seed_tenant_isolation(db, "tenant-a")
- assert first["validation"]["valid"] is True
- assert second["validation"]["valid"] is True
- assert second["overview"]["totals"] == {
- "elements": 48,
- "assertions": 56,
- "pending_reviews": 0,
- "evidence": 2,
- "rules": 5,
- "open_issues": 0,
- "agent_runs": 0,
- }
- assert second["overview"]["layers"] == {"M3": 8, "M2": 24, "M1": 13, "M0": 3}
- def test_tenant_scope_is_enforced(db):
- result = seed_tenant_isolation(db, "tenant-a")
- with pytest.raises(GovernanceError) as error:
- require_project(db, "tenant-b", result["project"]["id"])
- assert error.value.status == 404
- def test_impact_and_jsonld_export(db):
- result = seed_tenant_isolation(db, "tenant-a")
- project_id = result["project"]["id"]
- elements = list_elements(db, "tenant-a", project_id)["items"]
- tenant = next(item for item in elements if item["name"] == "Tenant")
- affected = impact(db, "tenant-a", tenant["id"], 3)
- exported = export_jsonld(db, "tenant-a", project_id)
- assert affected["center"]["name"] == "Tenant"
- assert any(node["name"] == "DcpTenantTable" for node in affected["nodes"])
- assert exported["@id"] == result["project"]["namespace"]
- assert len(exported["@graph"]) == 104
- def test_challenge_cup_demo_is_idempotent_and_starts_empty(db):
- first = seed_challenge_cup_demo(db, "demo")
- second = seed_challenge_cup_demo(db, "demo")
- assert first["validation"]["valid"] is True
- assert first["project"]["id"] == second["project"]["id"]
- assert second["overview"]["demo"]["decision_code"] == "NOT_BUILT"
- assert second["overview"]["demo"]["asset_id"] == ""
- assert second["overview"]["totals"]["elements"] == 0
- assert second["overview"]["totals"]["assertions"] == 0
- assert second["overview"]["totals"]["evidence"] == 0
- assert second["overview"]["totals"]["rules"] == 0
|