From 9b1e95fe8113720c52d74ab436eea2d6ddd9817c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wo=C5=BAniak?= Date: Fri, 10 Jun 2022 15:02:28 +0200 Subject: [PATCH] Test order addresses --- .../database_manager/src/order_addresses.rs | 68 ++++++++++++++++++- actors/database_manager/src/orders.rs | 5 ++ 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/actors/database_manager/src/order_addresses.rs b/actors/database_manager/src/order_addresses.rs index 5f6684b..d241503 100644 --- a/actors/database_manager/src/order_addresses.rs +++ b/actors/database_manager/src/order_addresses.rs @@ -36,7 +36,7 @@ SELECT order_addresses.street, order_addresses.city, order_addresses.country, - order_addresses.zip + order_addresses.zip, order_addresses.phone FROM order_addresses INNER JOIN orders ON orders.address_id = order_addresses.id @@ -46,7 +46,11 @@ WHERE orders.id = $1 .bind(msg.order_id) .fetch_one(pool) .await - .map_err(|_| Error::OrderAddress.into()) + .map_err(|e| { + tracing::error!("{e}"); + dbg!(e); + Error::OrderAddress.into() + }) } #[derive(actix::Message)] @@ -156,6 +160,44 @@ mod tests { use crate::*; + async fn test_account(t: &mut sqlx::Transaction<'_, sqlx::Postgres>) -> FullAccount { + use fake::faker::internet::en; + let login: String = en::Username().fake(); + let email: String = en::FreeEmail().fake(); + let hash: String = en::Password(10..22).fake(); + + create_account( + CreateAccount { + email: Email::new(email), + login: Login::new(login), + pass_hash: PassHash::new(hash), + role: Role::Admin, + }, + t, + ) + .await + .unwrap() + } + + async fn test_order( + t: &mut sqlx::Transaction<'_, sqlx::Postgres>, + address_id: OrderAddressId, + ) -> Order { + let buyer_id = test_account(t).await.id; + crate::create_order( + CreateOrder { + buyer_id, + items: vec![], + shopping_cart_id: None, + checkout_notes: None, + delivery_address_id: address_id, + }, + t, + ) + .await + .unwrap() + } + async fn test_order_address( t: &mut sqlx::Transaction<'_, sqlx::Postgres>, ) -> model::OrderAddress { @@ -230,11 +272,31 @@ mod tests { ); } + #[actix::test] async fn order_address() { testx::db_t_ref!(t); - test_order_address(&mut t).await; + { + let _address = test_order_address(&mut t).await; + let _order = test_order(&mut t, _address.id).await; + } + + let (original, order) = { + let address = test_order_address(&mut t).await; + let order = test_order(&mut t, address.id).await; + (address, order) + }; + + { + let _address = test_order_address(&mut t).await; + let _order = test_order(&mut t, _address.id).await; + } + + let loaded = super::order_address(super::OrderAddress { order_id: order.id }, &mut t) + .await + .unwrap(); testx::db_rollback!(t); + assert_eq!(original, loaded); } } diff --git a/actors/database_manager/src/orders.rs b/actors/database_manager/src/orders.rs index 1697f4c..17621bc 100644 --- a/actors/database_manager/src/orders.rs +++ b/actors/database_manager/src/orders.rs @@ -496,6 +496,11 @@ mod tests { quantity: Default::default(), quantity_unit: QuantityUnit::Gram, }, + create_order::OrderItem { + product_id: test_product(&mut t).await.id, + quantity: Default::default(), + quantity_unit: QuantityUnit::Gram, + }, ], shopping_cart_id: None, checkout_notes: None,