use super::debug_evaluation_contracts::ExpectedTablesEvaluation;
pub(super) fn apply_missing_table_counters(
evaluation: &mut ExpectedTablesEvaluation,
required: bool,
key: String,
missing_column_count: usize,
) {
if required {
evaluation.missing_required_tables.push(key);
evaluation.required_missing_column_count = evaluation
.required_missing_column_count
.saturating_add(missing_column_count);
} else {
evaluation.missing_optional_tables.push(key);
evaluation.optional_missing_column_count = evaluation
.optional_missing_column_count
.saturating_add(missing_column_count);
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn missing_counters_increment_required_tracking() {
let mut evaluation = ExpectedTablesEvaluation::default();
apply_missing_table_counters(
&mut evaluation,
true,
"public.gateway_request_log".to_string(),
3,
);
assert_eq!(
evaluation.missing_required_tables,
vec!["public.gateway_request_log".to_string()]
);
assert!(evaluation.missing_optional_tables.is_empty());
assert_eq!(evaluation.required_missing_column_count, 3);
assert_eq!(evaluation.optional_missing_column_count, 0);
}
#[test]
fn missing_counters_increment_optional_tracking() {
let mut evaluation = ExpectedTablesEvaluation::default();
apply_missing_table_counters(
&mut evaluation,
false,
"public.route_request_log".to_string(),
2,
);
assert_eq!(
evaluation.missing_optional_tables,
vec!["public.route_request_log".to_string()]
);
assert!(evaluation.missing_required_tables.is_empty());
assert_eq!(evaluation.required_missing_column_count, 0);
assert_eq!(evaluation.optional_missing_column_count, 2);
}
}