aboutsummaryrefslogtreecommitdiffstats
path: root/crates/rocie-server/tests/recipe_parents/query.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/rocie-server/tests/recipe_parents/query.rs')
-rw-r--r--crates/rocie-server/tests/recipe_parents/query.rs138
1 files changed, 138 insertions, 0 deletions
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()],
+ );
+}