From 96a776ae9da4fe041b624f16718e503dc16d3118 Mon Sep 17 00:00:00 2001 From: Billy Chan Date: Wed, 22 Dec 2021 16:14:17 +0800 Subject: [PATCH] test(Schema): add test cases for `Schema::create_enum_from_entity` & `Schema::create_enum_from_active_enum` --- tests/active_enum_tests.rs | 28 ++++++++++++++++++++++++++++ tests/common/features/schema.rs | 18 +++++++++++++----- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/tests/active_enum_tests.rs b/tests/active_enum_tests.rs index 4904cb40..bfb3c5db 100644 --- a/tests/active_enum_tests.rs +++ b/tests/active_enum_tests.rs @@ -686,4 +686,32 @@ mod tests { .join(" ") ); } + + #[test] + fn create_enum_from() { + use sea_orm::{Schema, Statement}; + + let db_postgres = DbBackend::Postgres; + let schema = Schema::new(db_postgres); + + assert_eq!( + schema + .create_enum_from_entity(active_enum::Entity) + .iter() + .map(|stmt| db_postgres.build(stmt)) + .collect::>(), + vec![Statement::from_string( + db_postgres, + r#"CREATE TYPE "tea" AS ENUM ('EverydayTea', 'BreakfastTea')"#.to_owned() + ),] + ); + + assert_eq!( + db_postgres.build(&schema.create_enum_from_active_enum::()), + Statement::from_string( + db_postgres, + r#"CREATE TYPE "tea" AS ENUM ('EverydayTea', 'BreakfastTea')"#.to_owned() + ) + ); + } } diff --git a/tests/common/features/schema.rs b/tests/common/features/schema.rs index 91712c91..c38feb04 100644 --- a/tests/common/features/schema.rs +++ b/tests/common/features/schema.rs @@ -4,7 +4,7 @@ use super::*; use crate::common::setup::{create_enum, create_table, create_table_without_asserts}; use sea_orm::{ error::*, sea_query, ConnectionTrait, DatabaseConnection, DbBackend, DbConn, EntityName, - ExecResult, + ExecResult, Schema, }; use sea_query::{extension::postgres::Type, Alias, ColumnDef, ForeignKeyCreateStatement}; @@ -19,10 +19,18 @@ pub async fn create_tables(db: &DatabaseConnection) -> Result<(), DbErr> { let create_enum_stmts = match db_backend { DbBackend::MySql | DbBackend::Sqlite => Vec::new(), - DbBackend::Postgres => vec![Type::create() - .as_enum(Alias::new("tea")) - .values(vec![Alias::new("EverydayTea"), Alias::new("BreakfastTea")]) - .to_owned()], + DbBackend::Postgres => { + let schema = Schema::new(db_backend); + let enum_create_stmt = Type::create() + .as_enum(Alias::new("tea")) + .values(vec![Alias::new("EverydayTea"), Alias::new("BreakfastTea")]) + .to_owned(); + assert_eq!( + db_backend.build(&enum_create_stmt), + db_backend.build(&schema.create_enum_from_active_enum::()) + ); + vec![enum_create_stmt] + } }; create_enum(db, &create_enum_stmts, ActiveEnum).await?;