sz-orm-core 6.2.0

Core ORM engine: Model trait, ActiveRecord, QueryBuilder, Pool, Transaction, migration, and SQL dialect abstraction
Documentation
#![cfg(feature = "dialect-saphana")]

//! SapHanaDialect 测试(v3.7.0 M4)
//!
//! 覆盖 Dialect trait 方法 + 计算列 + CE 函数 SQL 生成。

use sz_orm_core::dialect::{ColumnDef, Dialect, SapHanaDialect};
use sz_orm_core::DbType;

#[test]
fn test_saphana_db_type() {
    let dialect = SapHanaDialect;
    assert_eq!(dialect.db_type(), DbType::SapHana);
}

#[test]
fn test_saphana_quote() {
    let dialect = SapHanaDialect;
    assert_eq!(dialect.quote("users"), "\"users\"");
    assert_eq!(dialect.quote("user\"id"), "\"user\"\"id\"");
}

#[test]
fn test_saphana_escape_string() {
    let dialect = SapHanaDialect;
    assert_eq!(dialect.escape_string("hello"), "hello");
    assert_eq!(dialect.escape_string("it's"), "it''s");
}

#[test]
fn test_saphana_pagination() {
    let dialect = SapHanaDialect;
    let sql = dialect.build_pagination("SELECT * FROM users", 2, 10);
    assert_eq!(sql, "SELECT * FROM users LIMIT 10 OFFSET 10");
}

#[test]
fn test_saphana_auto_increment() {
    let dialect = SapHanaDialect;
    assert_eq!(
        dialect.auto_increment_keyword(),
        "GENERATED BY DEFAULT AS IDENTITY"
    );
}

#[test]
fn test_saphana_supports_returning() {
    let dialect = SapHanaDialect;
    assert!(!dialect.supports_returning());
}

#[test]
fn test_saphana_create_column_table() {
    let dialect = SapHanaDialect;
    let cols = vec![ColumnDef {
        name: "id".to_string(),
        sql_type: "BIGINT".to_string(),
        nullable: false,
        default: None,
        auto_increment: true,
        primary_key: true,
    }];
    let sql = dialect.build_create_table("users", &cols);
    assert!(sql.contains("CREATE COLUMN TABLE"));
    assert!(sql.contains("GENERATED BY DEFAULT AS IDENTITY"));
}

#[test]
fn test_saphana_concat() {
    let dialect = SapHanaDialect;
    assert_eq!(dialect.concat(&["a", "b"]), "a || b");
    assert_eq!(dialect.concat(&[]), "''");
}

#[test]
fn test_saphana_json_type() {
    let dialect = SapHanaDialect;
    assert_eq!(dialect.json_type(), "NCLOB");
}