from pathlib import Path
import json
R=Path(__file__).resolve().parent
cases=json.loads((R/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
assert len(cases)==8
required={'id','asset','permission','scope','reveal','request','evidence_bound','provenance'}
asset_required={'asset_id','asset_version_ref','asset_digest'}
permission_required={'rights_basis','owner_or_grantor','license_or_grant_id','license_version','evidence_ref'}
scope_required={'attribution_required','attribution_complete','derivative_allowed','commercial_allowed','territories','media','purposes'}
reveal_required={'embargo_until','allowed_audiences','contract_restriction'}
request_required={'purpose','commercial','derivative','territory','media','audience','decision_time'}
for case in cases:
    assert required.issubset(case)
    assert asset_required.issubset(case['asset'])
    assert permission_required.issubset(case['permission'])
    assert scope_required.issubset(case['scope'])
    assert reveal_required.issubset(case['reveal'])
    assert request_required.issubset(case['request'])
print('PASS 8/8 learner fixtures structurally valid')
