use crate::condition::PostgresCondition;
use crate::define_sql_operation;
define_sql_operation!(
PostgresOperation,
PostgresCondition,
crate::postgres::types::AnyPostgresType
);
#[cfg(test)]
mod tests {
use super::*;
use crate::postgres::types::AnyPostgresType;
use vantage_table::column::core::Column;
#[test]
fn test_column_eq() {
let name = Column::<AnyPostgresType>::new("name");
let cond = name.eq(AnyPostgresType::from("Alice".to_string()));
assert_eq!(cond.into_expr().preview(), "name = 'Alice'");
}
#[test]
fn test_typed_column_gt() {
let price = Column::<i64>::new("price");
let cond = price.gt(150i64);
assert_eq!(cond.into_expr().preview(), "price > 150");
}
#[test]
fn test_chaining_gt_eq_false() {
let price = Column::<i64>::new("price");
let cond = price.gt(10i64).eq(false);
assert_eq!(cond.into_expr().preview(), "price > 10 = false");
}
#[test]
fn test_chaining_gt_eq_true() {
let price = Column::<i64>::new("price");
let cond = price.gt(10i64).eq(true);
assert_eq!(cond.into_expr().preview(), "price > 10 = true");
}
#[test]
fn test_typed_bool_column() {
let is_deleted = Column::<bool>::new("is_deleted");
let cond = is_deleted.eq(false);
assert_eq!(cond.into_expr().preview(), "is_deleted = false");
}
#[test]
fn test_cross_type_rejected() {
let price = Column::<i64>::new("price");
let _: PostgresCondition = price.gt(150i64);
}
}