use ormer::Model;
mod _test_common;
#[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;
async fn test_model_constants_impl(config: &_test_common::DbConfig) {
let _config = config; assert_eq!(TestUser::TABLE_NAME, "users");
assert_eq!(TestUser::COLUMNS, &["id", "name", "age", "email"]);
}
async fn test_query_builder_creation_impl(config: &_test_common::DbConfig) {
let query = TestUser::query();
let sql = query.to_sql_with_params(config.0);
assert_eq!(sql.0, "SELECT id, name, age, email FROM users");
}
async fn test_query_with_filter_impl(config: &_test_common::DbConfig) {
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_with_params(config.0);
assert!(sql.0.contains("SELECT"));
assert!(sql.0.contains("FROM users"));
}
async fn test_complex_query_impl(config: &_test_common::DbConfig) {
#[allow(unused_imports)]
use ormer::{OrderBy, OrderDirection};
let query = TestUser::query().range(20..30);
let sql = query.to_sql_with_params(config.0);
assert!(sql.0.contains("LIMIT 10"));
assert!(sql.0.contains("OFFSET 20"));
}
async fn test_sql_generation_placeholders_impl(config: &_test_common::DbConfig) {
let query = TestUser::query().range(..10);
let sql = query.to_sql_with_params(config.0);
assert!(sql.0.starts_with("SELECT"));
assert!(sql.0.contains("FROM users"));
}
test_on_all_dbs!(test_model_constants_impl);
test_on_all_dbs!(test_query_builder_creation_impl);
test_on_all_dbs!(test_query_with_filter_impl);
test_on_all_dbs!(test_complex_query_impl);
test_on_all_dbs!(test_sql_generation_placeholders_impl);
}