#![cfg(any(feature = "sqlite", feature = "postgresql", feature = "mysql"))]
use ormer::Model;
pub mod _test_common;
define_test_user_simple!(TestUser, "syntax_validation_users_1");
#[cfg(test)]
mod syntax_validation {
use super::*;
async fn test_model_constants_impl(config: &_test_common::DbConfig) {
let _config = config; assert_eq!(TestUser::TABLE_NAME, "syntax_validation_users_1");
assert_eq!(TestUser::COLUMNS, &["id", "name", "age"]);
}
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 FROM syntax_validation_users_1");
}
async fn test_query_with_filter_impl(config: &_test_common::DbConfig) {
use ormer::FilterExpr;
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 syntax_validation_users_1"));
}
async fn test_complex_query_impl(config: &_test_common::DbConfig) {
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 syntax_validation_users_1"));
}
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);
}