generated from coulomb/repo-seed
metadata schema validation
This commit is contained in:
@@ -9,7 +9,10 @@ from kontextual_engine.core import (
|
||||
DerivedArtifactLineage,
|
||||
KnowledgeAsset,
|
||||
LifecycleState,
|
||||
MetadataFieldDefinition,
|
||||
MetadataRecord,
|
||||
MetadataSchema,
|
||||
MetadataValueType,
|
||||
OperationContext,
|
||||
PolicyDecision,
|
||||
PolicyEffect,
|
||||
@@ -176,3 +179,34 @@ def test_metadata_records_distinguish_inferred_and_confirmed_values() -> None:
|
||||
assert inferred.to_dict()["confidence"] == 0.74
|
||||
assert inferred.to_dict()["confirmed"] is False
|
||||
assert confirmed.to_dict()["confirmed"] is True
|
||||
|
||||
|
||||
def test_metadata_schema_reports_structured_validation_issues() -> None:
|
||||
schema = MetadataSchema(
|
||||
schema_id="schema-document-v1",
|
||||
name="Document Metadata",
|
||||
asset_types=("document",),
|
||||
allow_unknown=False,
|
||||
fields=(
|
||||
MetadataFieldDefinition("owner", MetadataValueType.STRING, required=True, require_confirmed=True),
|
||||
MetadataFieldDefinition("confidence", MetadataValueType.NUMBER, min_value=0, max_value=1),
|
||||
MetadataFieldDefinition("tags", MetadataValueType.LIST, allow_multiple=False),
|
||||
),
|
||||
)
|
||||
records = [
|
||||
MetadataRecord("owner", "Platform Knowledge", confirmed=False),
|
||||
MetadataRecord("confidence", 1.4),
|
||||
MetadataRecord("unknown", "surprise"),
|
||||
]
|
||||
|
||||
issues = schema.validate(records)
|
||||
codes = {issue.code for issue in issues}
|
||||
|
||||
assert codes == {
|
||||
"metadata.confirmation_required",
|
||||
"metadata.value_too_large",
|
||||
"metadata.unknown_field",
|
||||
}
|
||||
assert schema.applies_to(Classification(asset_type="document")) is True
|
||||
assert schema.applies_to(Classification(asset_type="dataset")) is False
|
||||
assert MetadataSchema.from_dict(schema.to_dict()).fields[0].value_type == MetadataValueType.STRING
|
||||
|
||||
Reference in New Issue
Block a user