Setup done in TestContext
This commit is contained in:
parent
ba77fb80aa
commit
c7ff5d8d05
@ -1,8 +1,9 @@
|
|||||||
pub mod schema;
|
pub mod setup;
|
||||||
use sea_orm::{Database, DatabaseConnection};
|
use sea_orm::{DatabaseConnection, Statement};
|
||||||
pub mod bakery_chain;
|
pub mod bakery_chain;
|
||||||
pub use bakery_chain::*;
|
pub use bakery_chain::*;
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
macro_rules! function {
|
macro_rules! function {
|
||||||
() => {{
|
() => {{
|
||||||
fn f() {}
|
fn f() {}
|
||||||
@ -17,34 +18,28 @@ macro_rules! function {
|
|||||||
pub struct TestContext {
|
pub struct TestContext {
|
||||||
base_url: String,
|
base_url: String,
|
||||||
db_name: String,
|
db_name: String,
|
||||||
pub db_conn: DatabaseConnection,
|
pub db: DatabaseConnection,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TestContext {
|
impl TestContext {
|
||||||
pub async fn new(base_url: &str, db_name: &str) -> Self {
|
pub async fn new(base_url: &str, db_name: &str) -> Self {
|
||||||
let db_conn = Database::connect("sqlite::memory:").await.unwrap();
|
let db: DatabaseConnection = setup::setup().await;
|
||||||
Self::setup_schema(&db_conn).await;
|
|
||||||
|
// let stmt: Statement = Statement::from("BEGIN".to_string());
|
||||||
|
// let _ = db.execute(stmt).await;
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
base_url: base_url.to_string(),
|
base_url: base_url.to_string(),
|
||||||
db_name: db_name.to_string(),
|
db_name: db_name.to_string(),
|
||||||
db_conn,
|
db,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn setup_schema(db: &DatabaseConnection) {
|
|
||||||
assert!(schema::create_bakery_table(db).await.is_ok());
|
|
||||||
assert!(schema::create_baker_table(db).await.is_ok());
|
|
||||||
assert!(schema::create_customer_table(db).await.is_ok());
|
|
||||||
assert!(schema::create_order_table(db).await.is_ok());
|
|
||||||
assert!(schema::create_lineitem_table(db).await.is_ok());
|
|
||||||
assert!(schema::create_cake_table(db).await.is_ok());
|
|
||||||
assert!(schema::create_cakes_bakers_table(db).await.is_ok());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Drop for TestContext {
|
impl Drop for TestContext {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
println!("dropping context");
|
// println!("dropping context");
|
||||||
|
// let stmt: Statement = Statement::from("ROLLBACK".to_string());
|
||||||
|
// let _ = self.db.execute(stmt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
15
tests/common/setup/mod.rs
Normal file
15
tests/common/setup/mod.rs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
use sea_orm::{Database, DatabaseConnection};
|
||||||
|
pub mod schema;
|
||||||
|
pub use schema::*;
|
||||||
|
|
||||||
|
pub async fn setup() -> DatabaseConnection {
|
||||||
|
let db = Database::connect("sqlite::memory:").await.unwrap();
|
||||||
|
assert!(schema::create_bakery_table(&db).await.is_ok());
|
||||||
|
assert!(schema::create_baker_table(&db).await.is_ok());
|
||||||
|
assert!(schema::create_customer_table(&db).await.is_ok());
|
||||||
|
assert!(schema::create_order_table(&db).await.is_ok());
|
||||||
|
assert!(schema::create_lineitem_table(&db).await.is_ok());
|
||||||
|
assert!(schema::create_cake_table(&db).await.is_ok());
|
||||||
|
assert!(schema::create_cakes_bakers_table(&db).await.is_ok());
|
||||||
|
db
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
use sea_orm::{error::*, sea_query, DbConn, ExecResult};
|
use sea_orm::{error::*, sea_query, DbConn, ExecResult};
|
||||||
use sea_query::{ColumnDef, ForeignKey, ForeignKeyAction, Index, TableCreateStatement};
|
use sea_query::{ColumnDef, ForeignKey, ForeignKeyAction, Index, TableCreateStatement};
|
||||||
|
|
||||||
pub use super::bakery_chain::*;
|
pub use super::super::bakery_chain::*;
|
||||||
|
|
||||||
async fn create_table(db: &DbConn, stmt: &TableCreateStatement) -> Result<ExecResult, DbErr> {
|
async fn create_table(db: &DbConn, stmt: &TableCreateStatement) -> Result<ExecResult, DbErr> {
|
||||||
let builder = db.get_schema_builder_backend();
|
let builder = db.get_schema_builder_backend();
|
@ -1,10 +1,10 @@
|
|||||||
use sea_orm::{entity::*, InsertResult};
|
use sea_orm::{entity::*, InsertResult};
|
||||||
|
|
||||||
pub mod bakery_chain;
|
// pub mod bakery_chain;
|
||||||
pub use bakery_chain::*;
|
// pub use bakery_chain::*;
|
||||||
|
|
||||||
pub mod common;
|
pub mod common;
|
||||||
pub use common::TestContext;
|
pub use common::{setup::*, TestContext};
|
||||||
|
|
||||||
#[async_std::test]
|
#[async_std::test]
|
||||||
// cargo test --test realtional_tests -- --nocapture
|
// cargo test --test realtional_tests -- --nocapture
|
||||||
@ -13,7 +13,7 @@ async fn main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn test_left_join() {
|
pub async fn test_left_join() {
|
||||||
let ctx = TestContext::new("test", "test").await;
|
let ctx = TestContext::new("test", function!()).await;
|
||||||
|
|
||||||
let seaside_bakery = bakery::ActiveModel {
|
let seaside_bakery = bakery::ActiveModel {
|
||||||
name: Set("SeaSide Bakery".to_owned()),
|
name: Set("SeaSide Bakery".to_owned()),
|
||||||
@ -21,12 +21,12 @@ pub async fn test_left_join() {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
let res: InsertResult = Bakery::insert(seaside_bakery)
|
let res: InsertResult = Bakery::insert(seaside_bakery)
|
||||||
.exec(&ctx.db_conn)
|
.exec(&ctx.db)
|
||||||
.await
|
.await
|
||||||
.expect("could not insert bakery");
|
.expect("could not insert bakery");
|
||||||
|
|
||||||
let bakery: Option<bakery::Model> = Bakery::find_by_id(res.last_insert_id)
|
let bakery: Option<bakery::Model> = Bakery::find_by_id(res.last_insert_id)
|
||||||
.one(&ctx.db_conn)
|
.one(&ctx.db)
|
||||||
.await
|
.await
|
||||||
.expect("could not find bakery");
|
.expect("could not find bakery");
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user