material: report exact missing condition fields (#1334)

Material-card validation now names the exact condition fields missing for each property (missing_condition_fields), alongside the existing unspecified_conditions.

Co-authored-by: 0xlillith <0xlillith@users.noreply.github.com>
This commit is contained in:
seluneand0xlillith authored and GitHub committed 2026-10-15 13:10:49 -04:00
1 parent fd422a3fc1
commit 8b7fa2602e
4 files changed
+85 -6

No files matched your search

@@ -57,6 +57,7 @@ mod tests {
let response = s.execute("material.properties.directional", &json!({"card":card,"direction":[1,2,3]})).unwrap();
assert_eq!(response["young_modulus_pa"], 12e9);
assert_eq!(response["validation"]["source_review_required"], json!(["test"]));
assert_eq!(response["validation"]["missing_condition_fields"], json!({"elasticity":["temperature_k","state"]}));
for direction in [json!([0, 0, 0]), json!([1, 2]), json!([1, 2, 3, 4]), json!([true, 0, 0]), json!(["1", 0, 0]), Value::Null] {
assert!(s.execute("material.properties.directional", &json!({"card":card,"direction":direction})).is_err());
}
@@ -76,6 +77,7 @@ mod tests {
assert_eq!(result["validation"]["isotropic_moduli"], json!({"shear_pa":4.8e9,"bulk_pa":8e9}));
assert_eq!(result["validation"]["source_review_required"], json!(["fixture"]));
assert_eq!(result["validation"]["rendering_properties_available"], false);
assert_eq!(result["validation"]["missing_condition_fields"], json!({"elasticity":["temperature_k","state"]}));
card["properties"][0]["data"]["model"]["poisson_ratio"] = json!(0.6);
assert!(s.execute("material.properties.validate", &json!({"card":card})).is_err());
}
@@ -91,6 +93,7 @@ mod tests {
let card = json!({"schema_version":1,"designation":"Synthetic empty card","family":"other","sources":[],"properties":[]});
let result = s.execute("material.properties.validate", &json!({"card":card})).unwrap();
assert_eq!(result["validation"]["analysis_solver_available"], false);
assert_eq!(result["validation"]["missing_condition_fields"], json!({}));
for p in [json!({}), json!({"card":card,"assign":true}), json!({"card":{"schema_version":9}})] {
assert!(s.execute("material.properties.validate", &p).is_err());
}