diff --git a/tests/bakery/bakery_erd.drawio b/tests/bakery/bakery_erd.drawio
deleted file mode 100644
index 7835e91b..00000000
--- a/tests/bakery/bakery_erd.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/tests/bakery_chain.rs b/tests/bakery_chain.rs
new file mode 100644
index 00000000..39a0f899
--- /dev/null
+++ b/tests/bakery_chain.rs
@@ -0,0 +1,74 @@
+use sea_orm::{sea_query, DbConn, ExecErr, ExecResult};
+use sea_query::{ColumnDef, ForeignKey, ForeignKeyAction, Iden, SqliteQueryBuilder};
+
+mod setup;
+
+#[derive(Iden)]
+enum Bakery {
+ Table,
+ Id,
+ Name,
+ ProfitMargin,
+}
+
+#[derive(Iden)]
+enum Baker {
+ Table,
+ Id,
+ Name,
+ BakeryId,
+}
+
+#[async_std::test]
+// cargo test --test bakery -- --nocapture
+async fn main() {
+ let db: DbConn = setup::setup().await;
+ setup_schema(&db).await;
+}
+
+async fn setup_schema(db: &DbConn) {
+ assert!(create_bakery(db).await.is_ok());
+ assert!(create_baker(db).await.is_ok());
+}
+
+async fn create_bakery(db: &DbConn) -> Result {
+ let stmt = sea_query::Table::create()
+ .table(Bakery::Table)
+ .if_not_exists()
+ .col(
+ ColumnDef::new(Bakery::Id)
+ .integer()
+ .not_null()
+ .auto_increment()
+ .primary_key(),
+ )
+ .col(ColumnDef::new(Bakery::Name).string())
+ .col(ColumnDef::new(Bakery::ProfitMargin).float())
+ .build(SqliteQueryBuilder);
+ db.execute(stmt.into()).await
+}
+
+async fn create_baker(db: &DbConn) -> Result {
+ let stmt = sea_query::Table::create()
+ .table(Baker::Table)
+ .if_not_exists()
+ .col(
+ ColumnDef::new(Baker::Id)
+ .integer()
+ .not_null()
+ .auto_increment()
+ .primary_key(),
+ )
+ .col(ColumnDef::new(Baker::Name).string())
+ // .foreign_key(
+ // ForeignKey::create()
+ // .name("FK_baker_bakery")
+ // .from(Baker::Table, Baker::BakeryId)
+ // .to(Bakery::Table, Bakery::Id)
+ // .on_delete(ForeignKeyAction::Cascade)
+ // .on_update(ForeignKeyAction::Cascade),
+ // )
+ .build(SqliteQueryBuilder);
+
+ db.execute(stmt.clone().into()).await
+}
diff --git a/tests/bakery_chain/bakery_chain_erd.drawio b/tests/bakery_chain/bakery_chain_erd.drawio
new file mode 100644
index 00000000..cca54bca
--- /dev/null
+++ b/tests/bakery_chain/bakery_chain_erd.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/tests/bakery/bakery_erd.jpg b/tests/bakery_chain/bakery_chain_erd.jpg
similarity index 100%
rename from tests/bakery/bakery_erd.jpg
rename to tests/bakery_chain/bakery_chain_erd.jpg