use serde_json::json;
use super::{Form, rendered, said};
use crate::test_support::corpus;
mod shapes;
mod tail;
#[test]
fn every_answer_in_the_corpus_renders_as_something_other_than_its_frame() {
let mut seen = 0;
for path in corpus::files("answers") {
for frame in corpus::fixture(&path).frames {
let said = rendered(&frame);
assert!(
!said.trim().is_empty(),
"{}: rendered to nothing",
path.display()
);
assert!(
!said.trim_start().starts_with('{'),
"{}: rendered as its own frame — {said}",
path.display()
);
assert!(
!said.contains("cannot read that answer"),
"{}: {said}",
path.display()
);
seen += 1;
}
}
assert!(seen > 30, "the corpus walk found {seen} answers");
}
#[test]
fn a_refusal_is_the_engines_words_and_an_unreadable_frame_names_the_escape() {
assert_eq!(
rendered(&json!({"ok": false, "error": "unknown workspace \"hoem\""})),
"refused: unknown workspace \"hoem\""
);
let said = rendered(&json!({"ok": true, "kind": "a-kind-from-2027"}));
assert!(said.contains("a-kind-from-2027"), "{said}");
assert!(said.contains("--json"), "{said}");
}
#[test]
fn the_json_form_is_the_frames_exactly_as_they_crossed() {
let frames = vec![
json!({"ok": true, "kind": "nudged"}),
json!({"ok": true, "kind": "flagged"}),
];
assert_eq!(
said(&frames, Form::Json),
"{\"kind\":\"nudged\",\"ok\":true}\n{\"kind\":\"flagged\",\"ok\":true}"
);
assert_eq!(
said(&frames, Form::Rendered),
"nudged — the advance is running\nflagged — it is on the queue now"
);
assert_eq!(Form::default(), Form::Rendered);
}
#[test]
fn an_empty_roster_names_the_act_that_founds_the_first_wall() {
let said = rendered(&json!({"ok": true, "kind": "workspaces", "rows": []}));
assert!(said.contains("lernie start home"), "{said}");
let queue = rendered(&json!({"ok": true, "kind": "attention", "rows": []}));
assert!(queue.contains("nothing is waiting on you"), "{queue}");
}
#[test]
fn a_transcript_prints_what_was_said_and_not_the_raw_bytes_beside_it() {
let frame = json!({"ok": true, "kind": "transcript", "rows": [
{"name": "001-user.md", "raw": "---\nfrom: user\n---\nship it",
"kind": "delivered", "sender": "user", "body": "ship it"}
]});
let said = rendered(&frame);
assert!(said.contains("001-user.md"), "{said}");
assert!(said.contains("from user"), "{said}");
assert!(said.contains("ship it"), "{said}");
assert!(!said.contains("---"), "the raw bytes are printed: {said}");
}
#[test]
fn an_in_flight_step_paints_as_itself_and_never_as_the_word_for_a_kill() {
let said = rendered(
&json!({"ok": true, "kind": "steps", "orphan": "none", "rows": [
{"seq": "007", "framing": "in_flight", "attempts": 1, "wound": "none",
"started_at": "t0", "commit": "abc",
"tokens": {"input": 11, "output": 22, "cache_read": 33, "cache_write": 44, "total": 99}}
]}),
);
assert!(said.contains("in_flight"), "{said}");
assert!(!said.contains("killed"), "{said}");
}
#[test]
fn a_proposals_listing_says_the_standing_the_engine_read_and_never_infers_one() {
let row = |id, fresh, lineages| {
json!({"id": id, "fresh": fresh, "lineages": lineages, "parent": "9f2c1ab4",
"diffstat": "1 file changed, 6 insertions(+)", "subject": "notes: what it taught"})
};
let said = rendered(
&json!({"ok": true, "kind": "proposals", "whole": "commit 71011c3d",
"rows": [row("r-1", true, json!(["default"])), row("r-2", false, json!([]))]}),
);
assert!(said.contains("r-1"), "{said}");
assert!(said.contains("fresh"), "{said}");
assert!(said.contains("default"), "{said}");
assert!(said.contains("stale"), "{said}");
assert!(
said.contains("no lineage still heads at its parent"),
"an empty lineage list is the stale case said out loud: {said}"
);
assert!(said.contains("commit 71011c3d"), "{said}");
assert!(
rendered(&json!({"ok": true, "kind": "proposals", "rows": []}))
.contains("nothing is staged for this wall"),
"nothing staged is an empty answer, not a refusal"
);
}