#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
AA-043-P2Q tests: new aa043:<source_system>:<sha256> RID scheme.
"""
import sys
sys.path.insert(0, "/opt/struktur/obsidian-graphiti-import/aa043")
from aa043_bridge import reconciliation_record_id as rid
HEX_A = "a" * 64
HEX_B = "b" * 64
def test_deterministic():
assert (rid("obsidian:x.md", HEX_A) ==
rid("obsidian:x.md", HEX_A))
print("PASS gleiche Eingaben -> gleiche RID")
def test_diff_source_identity():
assert rid("obsidian:a.md", HEX_A) != rid("obsidian:b.md", HEX_A)
print("PASS andere source_identity -> andere RID")
def test_diff_version_hash():
assert rid("obsidian:a.md", HEX_A) != rid("obsidian:a.md", HEX_B)
print("PASS anderer content_version_hash -> andere RID")
def test_diff_kui():
assert (rid("obsidian:a.md", HEX_A, "__source__") !=
rid("obsidian:a.md", HEX_A, "source_version:889"))
print("PASS andere knowledge_unit_identity -> andere RID")
def test_no_legacy_collision():
r = rid("obsidian:Solutions/SOL-005-content-briefing-modul.md", HEX_A)
assert not r.startswith("legacy-queue-"), r
assert r != "legacy-queue-34"
assert r.startswith("aa043:obsidian-general:")
print("PASS files.id=34 kollidiert nie mit legacy-queue-34:", r[:40] + "...")
def test_format():
r = rid("obsidian:x.md", HEX_A)
parts = r.split(":")
assert len(parts) == 3 and parts[0] == "aa043"
assert parts[1] == "obsidian-general"
assert len(parts[2]) == 64
int(parts[2], 16)
print("PASS Format aa043:<source_system>:<64-hex-sha256>")
if __name__ == "__main__":
test_deterministic()
test_diff_source_identity()
test_diff_version_hash()
test_diff_kui()
test_no_legacy_collision()
test_format()
print("All P2Q RID tests passed.")