use super::*;
use crate::reads::test_support::{blocker, catalog, task};
use crate::task::On;
fn nested(parent_blockers: Vec<crate::task::Blocker>) -> Catalog {
let mut kid = task("kid", 1);
kid.parent = Some("bl-epic".into());
let mut epic = task("epic", 0);
epic.blockers = parent_blockers;
catalog(&[("bl-kid", kid), ("bl-epic", epic)])
}
#[test]
fn parentless_has_no_target() {
let cat = catalog(&[("bl-kid", task("kid", 1))]);
let t = &cat.get("bl-kid").unwrap().task;
assert_eq!(of(&cat, "bl-kid", t), None);
assert_eq!(row_marker(&cat, "bl-kid", t), "");
}
#[test]
fn dead_parent_gates_nothing() {
let mut kid = task("kid", 1);
kid.parent = Some("bl-gone".into());
let cat = catalog(&[("bl-kid", kid)]);
let t = &cat.get("bl-kid").unwrap().task;
assert_eq!(of(&cat, "bl-kid", t), None);
}
#[test]
fn containment_alone_is_flat() {
let cat = nested(vec![blocker("bl-other", On::Close)]);
let t = &cat.get("bl-kid").unwrap().task;
assert_eq!(of(&cat, "bl-kid", t), None);
assert_eq!(row_marker(&cat, "bl-kid", t), "");
}
#[test]
fn claim_gate_is_not_nesting() {
let cat = nested(vec![blocker("bl-kid", On::Claim)]);
let t = &cat.get("bl-kid").unwrap().task;
assert_eq!(of(&cat, "bl-kid", t), None);
}
#[test]
fn close_gated_child_renders_its_target() {
let cat = nested(vec![blocker("bl-kid", On::Close)]);
let t = &cat.get("bl-kid").unwrap().task;
assert_eq!(of(&cat, "bl-kid", t), Some("bl-epic"));
assert_eq!(row_marker(&cat, "bl-kid", t), " ->bl-epic");
}