use super::*;
#[test]
fn portfolio_palace_exposes_stable_id() {
let dir = tempfile::tempdir().expect("tempdir");
let palace = PortfolioPalace::provision(dir.path());
assert_eq!(palace.id(), PORTFOLIO_PALACE_ID);
assert_eq!(palace.id(), "tm-manager-portfolio");
}
#[cfg(not(feature = "manager-memory"))]
#[test]
fn portfolio_palace_reports_unavailable_without_feature() {
let dir = tempfile::tempdir().expect("tempdir");
let palace = PortfolioPalace::provision(dir.path());
assert!(!palace.is_available());
let reason = palace
.unavailable_reason()
.expect("unavailable palace must name a reason");
assert!(
reason.contains("manager-memory"),
"reason should point at the missing feature: {reason}"
);
}
#[cfg(feature = "manager-memory")]
#[test]
fn portfolio_palace_provisions_and_is_idempotent() {
use trusty_common::memory_core::retrieval::seed_shared_embedder_with_mock;
seed_shared_embedder_with_mock();
let dir = tempfile::tempdir().expect("tempdir");
let first = PortfolioPalace::provision(dir.path());
assert!(first.is_available(), "first provision must be available");
let mem = first.memory().expect("live memory under feature");
assert_eq!(mem.persisted_palace_count().expect("count"), 1);
assert_eq!(mem.palace_id().as_str(), PORTFOLIO_PALACE_ID);
let second = PortfolioPalace::provision(dir.path());
assert!(second.is_available());
assert_eq!(
second
.memory()
.expect("live memory")
.persisted_palace_count()
.expect("count"),
1,
"provisioning twice must yield exactly ONE portfolio palace"
);
}
#[cfg(feature = "manager-memory")]
#[tokio::test]
async fn portfolio_memory_remember_then_recall_round_trips() {
use trusty_common::memory_core::retrieval::seed_shared_embedder_with_mock;
seed_shared_embedder_with_mock();
let dir = tempfile::tempdir().expect("tempdir");
let palace = PortfolioPalace::provision(dir.path());
let mem = palace.memory().expect("live memory under feature");
mem.remember(
"Portfolio digest 2026-07-14: widget shipped, gizmo stalled on review.",
vec!["digest".to_string()],
)
.await
.expect("remember");
let hits = mem
.recall("what shipped in the portfolio")
.await
.expect("recall");
assert!(
!hits.is_empty(),
"a remembered portfolio observation must be recallable"
);
}