Deploy Poimen Memory K8s cluster with ArgoCD tracking (M2.2, M3.5-M3.7)
ci / markdown (push) Waiting to run
ci / markdown (push) Waiting to run
This commit is contained in:
@@ -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");
|
||||
}
|
||||
Reference in New Issue
Block a user