use super::fixture::Fixture;
use crate::git_tree::GitTree;
#[test]
fn from_repo_reads_the_litany_name_fact_off_the_branch() {
let fx = Fixture::new();
fx.build_agent("20260422T124000Z-nam0", "named work");
fx.name_agent("20260422T124000Z-nam0", "pale-otter");
fx.build_agent("20260422T124000Z-old0", "pre-0.0.4 root");
let tree = GitTree::from_repo(&fx.path).unwrap();
let named = tree
.agents
.iter()
.find(|a| a.agent_id == "20260422T124000Z-nam0")
.unwrap();
let legacy = tree
.agents
.iter()
.find(|a| a.agent_id == "20260422T124000Z-old0")
.unwrap();
assert_eq!(named.name.as_deref(), Some("pale-otter"));
assert!(
legacy.name.is_none(),
"a branch with no blob (pre-0.0.4) reads None, never an error"
);
}
#[test]
fn from_repo_reads_an_empty_name_blob_as_unnamed() {
let fx = Fixture::new();
fx.build_agent("20260422T124500Z-emt0", "unnamed");
fx.name_agent("20260422T124500Z-emt0", "");
let tree = GitTree::from_repo(&fx.path).unwrap();
assert!(tree.agents[0].name.is_none());
}
#[test]
fn from_repo_reads_a_descent_childs_name_by_the_same_query() {
let fx = Fixture::new();
fx.build_agent("20260422T125000Z-par0", "parent");
fx.build_child("20260422T125000Z-par0", "20260422T125000Z-par0-c1");
fx.name_agent("20260422T125000Z-par0-c1", "quiet-heron");
let tree = GitTree::from_repo(&fx.path).unwrap();
let child = tree
.agents
.iter()
.find(|a| a.agent_id == "20260422T125000Z-par0-c1")
.unwrap();
assert_eq!(child.name.as_deref(), Some("quiet-heron"));
}
#[test]
fn from_repo_agent_without_a_goal_on_disk_drops_preview() {
let fx = Fixture::new();
fx.build_agent("20260422T130000Z-xxxx", "seed");
std::fs::remove_file(fx.path.join("agents/20260422T130000Z-xxxx/goal.md")).unwrap();
let tree = GitTree::from_repo(&fx.path).unwrap();
assert_eq!(tree.agents.len(), 1);
assert!(tree.agents[0].preview.is_none());
assert!(tree.agents[0].stream.text.is_none());
}
#[test]
fn from_repo_previews_the_goal_not_the_assembled_contexts_pinned_frame() {
let fx = Fixture::new();
let id = "20260422T131500Z-frm0";
fx.build_agent(id, "seed");
fx.write_goal(
id,
"You are slate-newt.\n\nunbar the postern\n\nthe body runs on",
);
fx.write_assembled_request(id);
let tree = GitTree::from_repo(&fx.path).unwrap();
assert_eq!(
tree.agents[0].preview.as_deref(),
Some("unbar the postern"),
"the operator's headline, not the frame's opening tag"
);
}