cratestack-sqlx 0.3.7

Rust-native schema-first framework for typed HTTP APIs, generated clients, and backend services.
Documentation
#![cfg(test)]

use crate::render::render_filter_expr_sql;

#[test]
fn coalesce_lte_renders_coalesce_function_with_one_bind() {
    let filter =
        cratestack_sql::coalesce(["next_attempt_at", "scheduled_at", "created_at"]).lte(42_i64);
    let mut bind_index = 1usize;
    let mut sql = String::new();
    render_filter_expr_sql(&filter, &mut sql, &mut bind_index);
    assert_eq!(
        sql,
        "COALESCE(next_attempt_at, scheduled_at, created_at) <= $1",
    );
    assert_eq!(bind_index, 2);
}

#[test]
fn coalesce_is_null_renders_no_bind() {
    let filter = cratestack_sql::coalesce(["a", "b"]).is_null();
    let mut bind_index = 1usize;
    let mut sql = String::new();
    render_filter_expr_sql(&filter, &mut sql, &mut bind_index);
    assert_eq!(sql, "COALESCE(a, b) IS NULL");
    assert_eq!(bind_index, 1, "IS NULL must not consume a bind slot");
}