use ormer::Model;
#[derive(Model)]
#[table = "users"]
struct TestUser {
#[primary]
id: i32,
name: String,
age: i32,
email: Option<String>,
}
#[cfg(test)]
mod syntax_validation {
use super::*;
#[allow(unused_imports)]
use ormer::query::builder::ColumnBuilder;
#[test]
fn test_model_constants() {
assert_eq!(TestUser::TABLE_NAME, "users");
assert_eq!(TestUser::COLUMNS, &["id", "name", "age", "email"]);
}
#[test]
fn test_query_builder_creation() {
let query = TestUser::query();
let sql = query.to_sql();
assert_eq!(sql, "SELECT id, name, age, email FROM users");
}
#[test]
fn test_query_with_filter() {
use ormer::FilterExpr;
#[allow(unused_imports)]
use ormer::query::builder::FilterValue;
use ormer::query::filter::Value as FilterValueInner;
let _filter = FilterExpr::Comparison {
column: "age".to_string(),
operator: ">".to_string(),
value: FilterValueInner::Integer(18),
};
let sql = TestUser::query().to_sql();
assert!(sql.contains("SELECT"));
assert!(sql.contains("FROM users"));
}
#[test]
fn test_complex_query() {
#[allow(unused_imports)]
use ormer::{OrderBy, OrderDirection};
let query = TestUser::query().range(20..30);
let sql = query.to_sql();
assert!(sql.contains("LIMIT 10"));
assert!(sql.contains("OFFSET 20"));
}
#[test]
fn test_sql_generation_placeholders() {
let query = TestUser::query().range(..10);
let sql = query.to_sql();
assert!(sql.starts_with("SELECT"));
assert!(sql.contains("FROM users"));
}
}