From a4b598db5bce7b7d2f3cb0ed33dea9d5f65818aa Mon Sep 17 00:00:00 2001 From: Khor Shu Heng <32997938+khorshuheng@users.noreply.github.com> Date: Wed, 27 Nov 2024 13:00:58 +0800 Subject: [PATCH] fix: remove only parent page when move to trash (#1021) --- libs/client-api/src/http_view.rs | 2 +- src/biz/workspace/page_view.rs | 6 ++- tests/workspace/page_view.rs | 76 +++++++++++++++++++++++++++++++- 3 files changed, 81 insertions(+), 3 deletions(-) diff --git a/libs/client-api/src/http_view.rs b/libs/client-api/src/http_view.rs index 61177a8d..1bf56e7b 100644 --- a/libs/client-api/src/http_view.rs +++ b/libs/client-api/src/http_view.rs @@ -27,7 +27,7 @@ impl Client { pub async fn move_workspace_page_view_to_trash( &self, workspace_id: Uuid, - view_id: String, + view_id: &str, ) -> Result<(), AppResponseError> { let url = format!( "{}/api/workspace/{}/page-view/{}/move-to-trash", diff --git a/src/biz/workspace/page_view.rs b/src/biz/workspace/page_view.rs index 833fe951..32f22dc4 100644 --- a/src/biz/workspace/page_view.rs +++ b/src/biz/workspace/page_view.rs @@ -553,9 +553,13 @@ async fn move_view_to_trash(view_id: &str, folder: &mut Folder) -> Result>(); + assert!(views_in_trash_for_app.contains(&general_space.view_id)); + for view in general_space.children.iter() { + assert!(!views_in_trash_for_app.contains(&view.view_id)); + } + let views_in_trash_for_web = web_client + .api_client + .get_workspace_trash(&workspace_id) + .await + .unwrap() + .views + .iter() + .map(|v| v.view.view_id.clone()) + .collect::>(); + assert!(views_in_trash_for_web.contains(&general_space.view_id)); + + web_client + .api_client + .restore_workspace_page_view_from_trash( + Uuid::parse_str(&workspace_id).unwrap(), + &general_space.view_id, + ) + .await + .unwrap(); + let folder = get_latest_folder(&app_client, &workspace_id).await; + assert!(!folder + .get_my_trash_sections() + .iter() + .any(|v| v.id == general_space.view_id)); + let view_found = web_client + .api_client + .get_workspace_trash(&workspace_id) + .await + .unwrap() + .views + .iter() + .any(|v| v.view.view_id == general_space.view_id); + assert!(!view_found); +} + #[tokio::test] async fn update_page() { let registered_user = generate_unique_registered_user().await;