Deploy Poimen Memory K8s cluster with ArgoCD tracking (M2.2, M3.5-M3.7)
ci / markdown (push) Waiting to run

This commit is contained in:
Story Crater Bot
2026-08-22 23:13:42 -07:00
parent 9c723fe66f
commit d3be7f6fd4
105 changed files with 10973 additions and 113 deletions
+126
View File
@@ -0,0 +1,126 @@
use mem_core::QuerySet;
#[test]
fn a1_valid_loads() {
let qs = QuerySet::load("fixtures/query-valid.yaml").expect("Should load valid file");
assert_eq!(qs.project, "poimen");
assert_eq!(qs.queries.len(), 2);
let q1 = qs.query("architecture-decisions").expect("Should find first query");
assert_eq!(q1.question, "What architectural decisions were made?");
assert!(!q1.exit_gate);
let q2 = qs.query("infra-root-causes").expect("Should find second query");
assert_eq!(q2.question, "What infrastructure bugs were found?");
assert!(!q2.exit_gate);
assert!(qs.synthesis.is_some());
let syn = qs.synthesis.unwrap();
assert_eq!(syn.question, "What is the current state?");
assert!(syn.exit_gate);
assert_eq!(qs.defaults.memory_budget, 1024);
assert_eq!(qs.defaults.chunk_tokens, 5000);
assert!(!qs.defaults.exit_gate);
}
#[test]
fn a2_empty_question_rejected() {
let err = QuerySet::load("fixtures/query-empty-question.yaml")
.expect_err("Should reject empty question");
let err_msg = format!("{:?}", err);
assert!(
err_msg.contains("empty-question"),
"Error should name the query id: {}",
err_msg
);
assert!(
err_msg.contains("question"),
"Error should name the field: {}",
err_msg
);
}
#[test]
fn a3_duplicate_id_rejected() {
let err = QuerySet::load("fixtures/query-duplicate-id.yaml")
.expect_err("Should reject duplicate id");
let err_msg = format!("{:?}", err);
assert!(
err_msg.contains("duplicate"),
"Error should name the duplicate id: {}",
err_msg
);
}
#[test]
fn a4_bad_id_charset_rejected() {
let err = QuerySet::load("fixtures/query-bad-charset.yaml")
.expect_err("Should reject bad charset");
let err_msg = format!("{:?}", err);
assert!(
err_msg.contains("infra/root-causes"),
"Error should name the bad id: {}",
err_msg
);
assert!(
err_msg.contains("filename") || err_msg.contains("[a-z0-9-]"),
"Error should mention filename constraint: {}",
err_msg
);
}
#[test]
fn a5_defaults_and_overrides() {
let qs = QuerySet::load("fixtures/query-valid.yaml").expect("Should load");
let q1 = qs.query("architecture-decisions").expect("Should find query");
assert!(!q1.exit_gate, "Query without exit_gate should get default false");
let syn = qs.synthesis.expect("Should have synthesis");
assert!(syn.exit_gate, "Synthesis with exit_gate: true should be honored");
}
#[test]
fn a6_l1_exit_gate_defaults_false() {
let qs = QuerySet::load("fixtures/query-valid.yaml").expect("Should load");
// All L1 queries should have exit_gate: false (the default)
for query in &qs.queries {
assert!(!query.exit_gate, "L1 query '{}' should have exit_gate: false", query.id);
}
}
#[test]
fn a7_missing_question_field() {
// Create a fixture on the fly with missing question field
let yaml_content = r#"
project: test
roots: []
sources: []
queries:
- id: no-question
# question field is missing
"#;
use std::fs;
fs::write("fixtures/query-missing-question.yaml", yaml_content)
.expect("Should write fixture");
let err = QuerySet::load("fixtures/query-missing-question.yaml")
.expect_err("Should reject missing question");
let err_msg = format!("{:?}", err);
assert!(
err_msg.contains("no-question") || err_msg.contains("question"),
"Error should indicate missing/empty question: {}",
err_msg
);
// Cleanup
let _ = fs::remove_file("fixtures/query-missing-question.yaml");
}