use persistant_core::{Config, Lookup, Matrix};
#[test]
fn the_recorded_sqlite_rows_are_all_on_and_read_by_the_gate() {
let m = Matrix::parse(include_str!("../../../matrix/sqlx-sqlite.tsv"))
.expect("the checked-in matrix parses");
assert_eq!(
m.rows().len(),
53,
"eighteen kv/lock leaves on each of sqlite and sqlite-full, and seventeen relational leaves (eleven contract, six migration) are certified"
);
for r in m.rows() {
assert_eq!(
r.enabled,
!matches!(
r.subject.as_str(),
"rel.row_lock"
| "rel.isolation.repeatable_read"
| "rel.isolation.serializable"
| "kv.bounded_call"
),
"{}: {}",
r.subject,
r.note
);
if r.subject.as_str().starts_with("rel.") {
assert_eq!(r.backend, "sqlite");
} else {
assert!(
["kv-on-relational:sqlite", "kv-on-relational:sqlite-full"]
.contains(&r.backend.as_str()),
"{}",
r.backend
);
}
assert_eq!(r.config.get("dialect"), Some("sqlite"));
assert!(r.metadata.get("test").is_some());
}
let first = &m.rows()[0];
let actual = Config::new().with("dialect", "sqlite");
assert_eq!(
m.lookup(&first.subject, &first.backend, &first.version, &actual),
Lookup::On
);
assert_eq!(
m.lookup(&first.subject, &first.backend, "0.0-not-certified", &actual),
Lookup::NoRow
);
}