feat(engineering): enforce V1-0 write invariants
This commit is contained in:
@@ -16,6 +16,36 @@ os.environ["ATOCORE_DATA_DIR"] = _default_test_dir
|
||||
os.environ["ATOCORE_DEBUG"] = "true"
|
||||
|
||||
|
||||
# V1-0: every entity created in a test is "hand authored" by the test
|
||||
# author — fixture data, not extracted content. Rather than rewrite 100+
|
||||
# existing test call sites, wrap create_entity so that tests which don't
|
||||
# provide source_refs get hand_authored=True automatically. Tests that
|
||||
# explicitly pass source_refs or hand_authored are unaffected. This keeps
|
||||
# the F-8 invariant enforced in production (the API, the wiki form, and
|
||||
# graduation scripts all go through the unwrapped function) while leaving
|
||||
# the existing test corpus intact.
|
||||
def _patch_create_entity_for_tests():
|
||||
from atocore.engineering import service as _svc
|
||||
|
||||
_original = _svc.create_entity
|
||||
|
||||
def _create_entity_test(*args, **kwargs):
|
||||
# Only auto-flag when hand_authored isn't explicitly specified.
|
||||
# Tests that want to exercise the F-8 raise path pass
|
||||
# hand_authored=False explicitly and should hit the error.
|
||||
if (
|
||||
not kwargs.get("source_refs")
|
||||
and "hand_authored" not in kwargs
|
||||
):
|
||||
kwargs["hand_authored"] = True
|
||||
return _original(*args, **kwargs)
|
||||
|
||||
_svc.create_entity = _create_entity_test
|
||||
|
||||
|
||||
_patch_create_entity_for_tests()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def tmp_data_dir(tmp_path):
|
||||
"""Provide a temporary data directory for tests."""
|
||||
|
||||
Reference in New Issue
Block a user