use super::WriterCore;
use crate::store::index::IndexEntry;
use crate::store::StoreError;
#[test]
fn enforce_expected_sequence_pins_cas_against_the_genesis_clock() {
let no_latest: Option<&IndexEntry> = None;
WriterCore::enforce_expected_sequence(no_latest, None, "entity:cas")
.expect("PROPERTY: a None expectation disables the CAS check");
WriterCore::enforce_expected_sequence(no_latest, Some(0), "entity:cas")
.expect("PROPERTY: expected 0 matches the genesis clock 0");
let err = WriterCore::enforce_expected_sequence(no_latest, Some(7), "entity:cas")
.expect_err("PROPERTY: a non-matching CAS expectation must fail");
assert!(
matches!(
err,
StoreError::SequenceMismatch { expected: 7, actual: 0, ref entity }
if entity == "entity:cas"
),
"PROPERTY: CAS mismatch must surface SequenceMismatch \
{{ expected: 7, actual: 0, entity: \"entity:cas\" }}, got {err:?}"
);
}