from pathlib import Path
import json
R=Path(__file__).resolve().parent
cases=json.loads((R/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
req={'id','page_id','page_version_id','parent_version_id','supersedes','publishable_state_changed','new_version_created','immutable_version','snapshot_digest','block_payload_refs','block_order','navigation_projection_id','navigation_nodes','navigation_history_preserved','release_id','release_projection_id','release_pointer_version','release_pointer_target_exists','previous_release_reconstructable','historical_snapshot_unchanged','mutable_workspace_ref','provenance'}
assert len(cases)==8
for c in cases:
    assert req.issubset(c)
    assert c['page_id'] and c['page_version_id'] and isinstance(c['block_payload_refs'],list) and isinstance(c['block_order'],list)
    assert len(c['block_payload_refs'])==3
print('PASS 8/8 learner fixture structural checks')
