use super::*;
use crate::core::startup_context::{DEFAULT_CEILING_TOKENS, DEFAULT_SESSION_SAMPLE};
fn settings(enabled: bool, ceiling: u64) -> ResolvedStartupContext {
ResolvedStartupContext {
enabled,
ceiling_tokens: ceiling,
sessions: DEFAULT_SESSION_SAMPLE,
}
}
#[test]
fn no_project_dir_reports_no_sample() {
let check = check_startup_context(None);
assert_eq!(check.status, CheckStatus::Unknown);
assert!(check.message.contains("no project directory"));
}
#[test]
fn an_unmeasured_project_is_unknown() {
let check = verdict(&settings(true, DEFAULT_CEILING_TOKENS), &[]);
assert_eq!(check.status, CheckStatus::Unknown);
assert!(check.message.contains("no turn-1 startup reading"));
assert!(check.message.contains("50000"));
}
#[test]
fn a_project_inside_its_budget_passes() {
let check = verdict(&settings(true, 50_000), &[30_000, 28_000, 31_000]);
assert_eq!(check.status, CheckStatus::Ok);
assert!(check.message.contains("median 30000"));
assert!(check.message.contains("latest 30000"));
assert!(check.message.contains("3 session(s)"));
}
#[test]
fn a_project_over_its_budget_warns_and_never_fails() {
let check = verdict(&settings(true, 50_000), &[98_000, 107_000, 101_000]);
assert_eq!(check.status, CheckStatus::Warn);
assert_ne!(check.status, CheckStatus::Fail);
assert!(check.message.contains("median 101000"));
assert!(check.message.contains("50000-token ceiling"));
}
#[test]
fn the_warning_points_at_the_breakdown() {
let check = verdict(&settings(true, 50_000), &[98_000]);
assert!(
check.message.contains(BREAKDOWN_DOC),
"the warning must name the breakdown doc: {}",
check.message
);
}
#[test]
fn a_disabled_config_reports_the_check_off() {
let check = verdict(&settings(false, 50_000), &[98_000]);
assert_eq!(check.status, CheckStatus::Ok);
assert!(check.message.contains("disabled"));
}