mod common;
use common::build_minimal_frontmatter;
use gradatum_core::identity::NoteId;
use gradatum_core::scope::{OverrideScope, VaultId};
use gradatum_vault::Vault;
use tempfile::TempDir;
#[tokio::test]
async fn effective_note_cache_miss_returns_not_found_phase1_stub() {
let dir = TempDir::new().unwrap();
let vault = Vault::create(dir.path(), VaultId::new("main"))
.await
.unwrap();
let id = NoteId::new();
let scope = OverrideScope::Vault(VaultId::new("main"));
let result = vault.get_effective_note(id, &scope).await;
assert!(
result.is_err(),
"get_effective_note Phase 1 doit retourner une erreur sur cache miss"
);
}
#[tokio::test]
async fn effective_note_scope_hash_is_stable() {
let dir = TempDir::new().unwrap();
let vault = Vault::create(dir.path(), VaultId::new("main"))
.await
.unwrap();
let id = NoteId::new();
let scope = OverrideScope::Vault(VaultId::new("main"));
let r1 = vault.get_effective_note(id, &scope).await;
let r2 = vault.get_effective_note(id, &scope).await;
assert!(r1.is_err());
assert!(r2.is_err());
}
#[tokio::test]
async fn effective_note_after_write_returns_note_t4() {
let dir = TempDir::new().unwrap();
let vault = Vault::create(dir.path(), VaultId::new("main"))
.await
.unwrap();
let fm = build_minimal_frontmatter();
let note = vault
.write_note(fm, "body effective note".into())
.await
.unwrap();
let note_id = note.id;
let scope = OverrideScope::Vault(VaultId::new("main"));
let result = vault.get_effective_note(note_id, &scope).await;
assert!(
result.is_ok(),
"T4 P2.0c : get_effective_note doit réussir pour une note indexée — cache miss path réel"
);
let effective = result.unwrap();
assert_eq!(
effective.body.markdown.trim(),
"body effective note",
"le corps de la EffectiveNote doit correspondre"
);
}