diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-02-15 22:24:32 +0100 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-02-15 22:25:06 +0100 |
| commit | e5f90f4474cb96a78080395980283e4b2ce40214 (patch) | |
| tree | caac3300795eae8e4cb1ee3c1c4bf85cd5950402 /crates/rocie-server/tests/recipe_parents | |
| parent | chore(treewide): Update (diff) | |
| download | server-e5f90f4474cb96a78080395980283e4b2ce40214.zip | |
feat(treewide): Add recipes and user handling
Diffstat (limited to 'crates/rocie-server/tests/recipe_parents')
| -rw-r--r-- | crates/rocie-server/tests/recipe_parents/mod.rs | 2 | ||||
| -rw-r--r-- | crates/rocie-server/tests/recipe_parents/query.rs | 138 | ||||
| -rw-r--r-- | crates/rocie-server/tests/recipe_parents/register.rs | 69 |
3 files changed, 209 insertions, 0 deletions
diff --git a/crates/rocie-server/tests/recipe_parents/mod.rs b/crates/rocie-server/tests/recipe_parents/mod.rs new file mode 100644 index 0000000..d3799a7 --- /dev/null +++ b/crates/rocie-server/tests/recipe_parents/mod.rs @@ -0,0 +1,2 @@ +mod query; +mod register; diff --git a/crates/rocie-server/tests/recipe_parents/query.rs b/crates/rocie-server/tests/recipe_parents/query.rs new file mode 100644 index 0000000..bcbf00b --- /dev/null +++ b/crates/rocie-server/tests/recipe_parents/query.rs @@ -0,0 +1,138 @@ +use rocie_client::{ + apis::{ + api_get_auth_recipe_api::{ + recipes_by_recipe_parent_id_direct, recipes_by_recipe_parent_id_indirect, + }, + api_get_auth_recipe_parent_api::{recipe_parents_toplevel, recipe_parents_under}, + api_set_auth_recipe_api::add_recipe, + api_set_auth_recipe_parent_api::register_recipe_parent, + }, + models::{RecipeParentStub, RecipeStub}, +}; + +use crate::{ + testenv::init::function_name, + testenv::{TestEnv, log::request}, +}; + +#[tokio::test] +async fn test_recipe_parent_query() { + let env = TestEnv::new(function_name!()).await; + + let parent_asia = request!( + env, + register_recipe_parent(RecipeParentStub { + description: Some("Asia inspired recipes".to_owned()), + name: "asia".to_owned(), + parent: None, + }) + ); + request!( + env, + register_recipe_parent(RecipeParentStub { + description: Some("Traditionally chineese recipes".to_owned()), + name: "china".to_owned(), + parent: Some(parent_asia), + }) + ); + + request!( + env, + register_recipe_parent(RecipeParentStub { + description: Some("Europeen recipes".to_owned()), + name: "europe".to_owned(), + parent: None, + }) + ); + + assert_eq!( + request!(env, recipe_parents_toplevel()) + .into_iter() + .map(|parent| parent.name) + .collect::<Vec<_>>(), + vec!["asia".to_owned(), "europe".to_owned(),] + ); + + assert_eq!( + request!(env, recipe_parents_under(parent_asia)) + .into_iter() + .map(|parent| parent.name) + .collect::<Vec<_>>(), + vec!["china".to_owned()] + ); +} + +#[tokio::test] +async fn test_recipe_parent_query_recipe() { + let env = TestEnv::new(function_name!()).await; + + let parent_asia = request!( + env, + register_recipe_parent(RecipeParentStub { + description: None, + name: "asia".to_owned(), + parent: None, + }) + ); + let parent_china = request!( + env, + register_recipe_parent(RecipeParentStub { + description: None, + name: "china".to_owned(), + parent: Some(parent_asia), + }) + ); + + request!( + env, + add_recipe(RecipeStub { + name: "Orange Chicken".to_owned(), + parent: Some(parent_china), + content: "Do some chicken".to_owned() + }) + ); + + request!( + env, + add_recipe(RecipeStub { + name: "Beef and Broccoli Stir-Fry".to_owned(), + parent: Some(parent_asia), + content: "Do some beef and add stir-fryed broccoli".to_owned() + }) + ); + + assert_eq!( + request!(env, recipes_by_recipe_parent_id_indirect(parent_china)) + .into_iter() + .map(|recipe| recipe.name) + .collect::<Vec<_>>(), + vec!["Orange Chicken".to_owned()], + ); + + assert_eq!( + request!(env, recipes_by_recipe_parent_id_direct(parent_china)) + .into_iter() + .map(|recipe| recipe.name) + .collect::<Vec<_>>(), + vec!["Orange Chicken".to_owned()], + ); + + assert_eq!( + request!(env, recipes_by_recipe_parent_id_indirect(parent_asia)) + .into_iter() + .map(|recipe| recipe.name) + .collect::<Vec<_>>(), + vec![ + "Beef and Broccoli Stir-Fry".to_owned(), + "Orange Chicken".to_owned(), + ], + ); + + assert_eq!( + request!(env, recipes_by_recipe_parent_id_direct(parent_asia)) + .into_iter() + .map(|recipe| recipe.name) + .collect::<Vec<_>>(), + vec!["Beef and Broccoli Stir-Fry".to_owned()], + ); +} diff --git a/crates/rocie-server/tests/recipe_parents/register.rs b/crates/rocie-server/tests/recipe_parents/register.rs new file mode 100644 index 0000000..a113bd3 --- /dev/null +++ b/crates/rocie-server/tests/recipe_parents/register.rs @@ -0,0 +1,69 @@ +use rocie_client::{ + apis::{ + api_get_auth_recipe_api::recipe_by_id, api_set_auth_recipe_api::add_recipe, + api_set_auth_recipe_parent_api::register_recipe_parent, + }, + models::{RecipeParentStub, RecipeStub}, +}; + +use crate::testenv::{TestEnv, init::function_name, log::request}; + +#[tokio::test] +async fn test_recipe_parent_register_roundtrip() { + let env = TestEnv::new(function_name!()).await; + + let parent_dairy = request!( + env, + register_recipe_parent(RecipeParentStub { + description: Some("Dairy replacment recipes".to_owned()), + name: "Dairy replacements".to_owned(), + parent: None, + }) + ); + let parent_dairy_milk = request!( + env, + register_recipe_parent(RecipeParentStub { + description: Some("Milk replacment recipes".to_owned()), + name: "Milk replacements".to_owned(), + parent: Some(parent_dairy), + }) + ); + + let recipe_soy_milk = request!( + env, + add_recipe(RecipeStub { + name: "Soy drink".to_owned(), + parent: Some(parent_dairy_milk), + content: "Mix soy and drink".to_owned() + }) + ); + let recipe_oat_milk = request!( + env, + add_recipe(RecipeStub { + name: "Oat drink".to_owned(), + parent: Some(parent_dairy_milk), + content: "Mix oat and drink".to_owned() + }) + ); + + let recipe_vegan_cheese = request!( + env, + add_recipe(RecipeStub { + name: "Vegan cheese".to_owned(), + parent: Some(parent_dairy), + content: "Make cheese. Remove cheese".to_owned() + }) + ); + + for recipe in [recipe_soy_milk, recipe_oat_milk] { + let recipe = request!(env, recipe_by_id(recipe)); + + assert_eq!(recipe.parent, Some(parent_dairy_milk)); + } + + { + let recipe = request!(env, recipe_by_id(recipe_vegan_cheese)); + + assert_eq!(recipe.parent, Some(parent_dairy)); + } +} |
