diff --git a/tests/bakery_chain_tests.rs b/tests/bakery_chain_tests.rs index c58be9eb..292acdfc 100644 --- a/tests/bakery_chain_tests.rs +++ b/tests/bakery_chain_tests.rs @@ -31,4 +31,6 @@ async fn create_entities(db: &DbConn) { crud::create_cake::test_create_cake(db).await; crud::create_lineitem::test_create_lineitem(db).await; crud::create_order::test_create_order(db).await; + + crud::updates::test_update_cake(db).await; } diff --git a/tests/crud/mod.rs b/tests/crud/mod.rs index 9fbf27e6..c69dee3a 100644 --- a/tests/crud/mod.rs +++ b/tests/crud/mod.rs @@ -5,6 +5,7 @@ pub use super::bakery_chain::*; pub mod create_cake; pub mod create_lineitem; pub mod create_order; +pub mod updates; pub async fn test_create_bakery(db: &DbConn) { let seaside_bakery = bakery::ActiveModel { diff --git a/tests/crud/updates.rs b/tests/crud/updates.rs new file mode 100644 index 00000000..615e89f2 --- /dev/null +++ b/tests/crud/updates.rs @@ -0,0 +1,55 @@ +pub use super::*; +use rust_decimal_macros::dec; + +pub async fn test_update_cake(db: &DbConn) { + let seaside_bakery = bakery::ActiveModel { + name: Set("SeaSide Bakery".to_owned()), + profit_margin: Set(10.4), + ..Default::default() + }; + let bakery_insert_res: InsertResult = Bakery::insert(seaside_bakery) + .exec(db) + .await + .expect("could not insert bakery"); + + let mud_cake = cake::ActiveModel { + name: Set("Mud Cake".to_owned()), + price: Set(dec!(10.25)), + gluten_free: Set(false), + bakery_id: Set(Some(bakery_insert_res.last_insert_id as i32)), + ..Default::default() + }; + + let cake_insert_res: InsertResult = Cake::insert(mud_cake) + .exec(db) + .await + .expect("could not insert cake"); + + let cake: Option = Cake::find_by_id(cake_insert_res.last_insert_id) + .one(db) + .await + .expect("could not find cake"); + + assert!(cake.is_some()); + let cake_model = cake.unwrap(); + assert_eq!(cake_model.name, "Mud Cake"); + assert_eq!(cake_model.price, dec!(10.25)); + assert_eq!(cake_model.gluten_free, false); + + let mut cake_am: cake::ActiveModel = cake_model.into(); + cake_am.name = Set("Extra chocolate mud cake".to_owned()); + cake_am.price = Set(dec!(20.00)); + + let _cake_update_res: cake::ActiveModel = Cake::update(cake_am) + .exec(db) + .await + .expect("could not update cake"); + + let cake: Option = Cake::find_by_id(cake_insert_res.last_insert_id) + .one(db) + .await + .expect("could not find cake"); + let cake_model = cake.unwrap(); + assert_eq!(cake_model.name, "Extra chocolate mud cake"); + assert_eq!(cake_model.price, dec!(20.00)); +}