0.3.16-pre.3.fix.1

This commit is contained in:
2026-09-21 10:33:06 +02:00
parent 05cdb4e2ab
commit 540b1bc305
36 changed files with 1852 additions and 62 deletions

View File

@@ -0,0 +1,54 @@
// file: crates/ksp-store-postgres-lib/unit_tests/schema_v003.rs
// version: 2
#[test]
fn pre_003_v003_resource_inventory_is_exact_and_ordered() {
let resources = crate::V003_RESOURCES;
assert_eq!(resources.len(), 25);
let ids = resources.iter().map(|resource| return resource.id).collect::<std::vec::Vec<_>>();
assert_eq!(ids.iter().filter(|id| return id.starts_with("tables/")).count(), 4);
assert_eq!(ids.iter().filter(|id| return id.starts_with("constraints/")).count(), 18);
assert_eq!(ids.iter().filter(|id| return id.starts_with("indexes/")).count(), 3);
assert!(ids[..4].iter().all(|id| return id.starts_with("tables/")));
assert!(ids[4..22].iter().all(|id| return id.starts_with("constraints/")));
assert!(ids[22..].iter().all(|id| return id.starts_with("indexes/")));
let mut unique = std::collections::BTreeSet::<&str>::new();
for id in ids {
assert!(unique.insert(id), "duplicate V003 resource id: {id}");
}
return;
}
#[test]
fn pre_003_v003_schema_is_additive_payload_bounded_and_hash_non_unique() {
let sql = crate::V003_RESOURCES.iter().map(|resource| return resource.sql).collect::<std::vec::Vec<_>>().concat();
for required in [
"CREATE TABLE IF NOT EXISTS ksp_raw_transaction_variants",
"CREATE TABLE IF NOT EXISTS ksp_raw_transaction_canonical_selectors",
"CREATE TABLE IF NOT EXISTS ksp_raw_transaction_observation_variants",
"CREATE TABLE IF NOT EXISTS ksp_raw_transaction_conflicts",
"PRIMARY KEY (transaction_signature, variant_id)",
"FOREIGN KEY (transaction_signature) REFERENCES ksp_raw_transactions(signature)",
"FOREIGN KEY (observation_key) REFERENCES ksp_raw_transaction_observations(observation_key)",
"octet_length(payload) <= 16777216",
"origin_kind = 'native' OR origin_kind = 'synthetic'",
"latest_relation = 'conflict' OR latest_relation = 'incomparable'",
"latest_reason_code = 'content_hash_collision'",
"latest_reason_code = 'unsupported_canonical_difference'",
] {
assert!(sql.contains(required), "missing V003 schema invariant: {required}");
}
for forbidden in ["UNIQUE (content_hash", "UNIQUE(content_hash", "BIGSERIAL", "INSERT INTO", "UPDATE ksp_raw_transactions"] {
assert!(!sql.contains(forbidden), "forbidden V003 migration behavior: {forbidden}");
}
return;
}
#[test]
fn pre_003_v003_observation_mapping_does_not_fabricate_legacy_rows() {
let sql = crate::V003_RESOURCES.iter().map(|resource| return resource.sql).collect::<std::vec::Vec<_>>().concat();
assert!(sql.contains("ksp_raw_transaction_observation_variants"));
assert!(!sql.contains("SELECT observation_key FROM ksp_raw_transaction_observations"));
assert!(!sql.contains("INSERT INTO ksp_raw_transaction_observation_variants"));
return;
}