cratestack-sqlx 0.3.6

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

use crate::{FieldRef, FilterExpr, render::render_filter_expr_sql};

#[test]
fn eq_or_null_preview_emits_two_branch_disjunction_with_one_bind() {
    let filter = FieldRef::<(), String>::new("market_code").eq_or_null("us");
    let mut bind_index = 1usize;
    let mut sql = String::new();
    render_filter_expr_sql(&FilterExpr::from(filter), &mut sql, &mut bind_index);
    assert_eq!(sql, "(market_code IS NULL OR market_code = $1)");
    assert_eq!(bind_index, 2, "exactly one bind consumed");
}

#[test]
fn match_optional_some_emits_eq_or_null_clause() {
    let filter = FieldRef::<(), String>::new("market_code")
        .match_optional(Some("eu"))
        .expect("Some should produce a filter");
    let mut bind_index = 1usize;
    let mut sql = String::new();
    render_filter_expr_sql(&FilterExpr::from(filter), &mut sql, &mut bind_index);
    assert!(sql.contains("market_code IS NULL OR market_code = $1"));
}

#[test]
fn match_optional_none_yields_no_filter() {
    let filter: Option<crate::Filter> =
        FieldRef::<(), String>::new("market_code").match_optional(Option::<&str>::None);
    assert!(filter.is_none(), "None input must yield None filter");
}