Test create product variant

This commit is contained in:
eraden 2022-11-16 22:12:07 +01:00
parent 3cf6cfb2e5
commit 59034ea1e0
3 changed files with 63 additions and 7 deletions

View File

@ -993,6 +993,7 @@ pub mod v2 {
RecordId, StockId, UniqueName, RecordId, StockId, UniqueName,
}; };
#[cfg_attr(feature = "dummy", derive(fake::Dummy))]
#[cfg_attr(feature = "db", derive(sqlx::Type))] #[cfg_attr(feature = "db", derive(sqlx::Type))]
#[cfg_attr(feature = "db", sqlx(transparent))] #[cfg_attr(feature = "db", sqlx(transparent))]
#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize, Deref, Display, From)] #[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize, Deref, Display, From)]
@ -1023,7 +1024,7 @@ pub mod v2 {
#[derive(Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] #[derive(Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct DetailedProductVariant { pub struct DetailedProductVariant {
pub id: ProductVariantId, pub id: ProductVariantId,
pub name: ProductName, pub name: ProductVariantName,
pub short_description: ProductShortDesc, pub short_description: ProductShortDesc,
pub long_description: ProductLongDesc, pub long_description: ProductLongDesc,
pub price: Price, pub price: Price,
@ -1058,7 +1059,7 @@ pub mod v2 {
pub struct ProductVariant { pub struct ProductVariant {
pub id: ProductVariantId, pub id: ProductVariantId,
pub product_id: ProductId, pub product_id: ProductId,
pub name: ProductName, pub name: ProductVariantName,
pub short_description: ProductShortDesc, pub short_description: ProductShortDesc,
pub long_description: ProductLongDesc, pub long_description: ProductLongDesc,
pub price: Price, pub price: Price,

View File

@ -15,7 +15,7 @@ pub async fn create_product(
) -> create_product::Output { ) -> create_product::Output {
let mut t = begin_t!(db, Error::InternalServerError); let mut t = begin_t!(db, Error::InternalServerError);
match inner_create_product(input, &mut t, Some(_config)).await { match inner_create_product(input, &mut t).await {
Ok(res) => { Ok(res) => {
if let Err(e) = t.commit().await { if let Err(e) = t.commit().await {
tracing::error!("{}", e); tracing::error!("{}", e);
@ -36,7 +36,6 @@ pub async fn create_product(
async fn inner_create_product( async fn inner_create_product(
input: create_product::Input, input: create_product::Input,
t: &mut PgT<'_>, t: &mut PgT<'_>,
_config: Option<SharedAppConfig>,
) -> create_product::Output { ) -> create_product::Output {
use create_product::*; use create_product::*;
@ -92,7 +91,7 @@ async fn inner_create_product(
deliver_days_flag: product.deliver_days_flag, deliver_days_flag: product.deliver_days_flag,
variants: vec![DetailedProductVariant { variants: vec![DetailedProductVariant {
id: variant.id, id: variant.id,
name: variant.name, name: ProductVariantName::new(variant.name.as_str()),
short_description: variant.short_description, short_description: variant.short_description,
long_description: variant.long_description, long_description: variant.long_description,
price: variant.price, price: variant.price,
@ -193,7 +192,6 @@ mod tests {
}, },
}, },
t, t,
None,
) )
.await .await
.unwrap() .unwrap()
@ -221,7 +219,6 @@ mod tests {
}, },
}, },
&mut t, &mut t,
None,
) )
.await; .await;

View File

@ -72,3 +72,61 @@ pub async fn delete_product_variant(
) -> delete_product_variant::Output { ) -> delete_product_variant::Output {
todo!() todo!()
} }
#[cfg(test)]
mod test {
use channels::stocks::create_product_variant;
use config::UpdateConfig;
use db_utils::PgT;
use model::v2::*;
use crate::actions::product_variant::inner_create_product_variant;
use crate::db::Database;
struct NoOpts;
impl UpdateConfig for NoOpts {}
async fn test_product(t: &mut PgT<'_>) -> Product {
crate::db::CreateProduct {
name: ProductName::new(format!("{}", uuid::Uuid::new_v4())),
category: None,
deliver_days_flag: Days(vec![]),
}
.run(t)
.await
.unwrap()
}
#[tokio::test]
async fn create_product_variant() {
testx::db_t_ref!(t);
let name = ProductVariantName::new(format!("{}", uuid::Uuid::new_v4()));
let short_description = ProductShortDesc::new(format!("{}", uuid::Uuid::new_v4()));
let long_description = ProductLongDesc::new(format!("{}", uuid::Uuid::new_v4()));
let price = Price::from_u32(234234);
let product = test_product(&mut t).await;
let res = inner_create_product_variant(
create_product_variant::Input {
product_id: product.id,
name: name.clone(),
short_description: short_description.clone(),
long_description: long_description.clone(),
price,
},
&mut t,
)
.await;
testx::db_rollback!(t);
let variant = res.unwrap().product_variant;
assert_eq!(variant.name, name);
assert_eq!(variant.short_description, short_description);
assert_eq!(variant.long_description, long_description);
assert_eq!(variant.price, price);
}
}