| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  | use collab_folder::ViewLayout;
 | 
					
						
							| 
									
										
										
										
											2023-06-05 16:09:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-26 18:00:56 +08:00
										 |  |  | use event_integration_test::event_builder::EventBuilder;
 | 
					
						
							|  |  |  | use event_integration_test::EventIntegrationTest;
 | 
					
						
							| 
									
										
										
										
											2023-12-31 07:29:40 +08:00
										 |  |  | use flowy_folder::entities::icon::{UpdateViewIconPayloadPB, ViewIconPB};
 | 
					
						
							|  |  |  | use flowy_folder::entities::*;
 | 
					
						
							|  |  |  | use flowy_folder::event_map::FolderEvent::*;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | pub enum FolderScript {
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |   #[allow(dead_code)]
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   CreateWorkspace {
 | 
					
						
							|  |  |  |     name: String,
 | 
					
						
							|  |  |  |     desc: String,
 | 
					
						
							|  |  |  |   },
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |   #[allow(dead_code)]
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   AssertWorkspace(WorkspacePB),
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |   #[allow(dead_code)]
 | 
					
						
							|  |  |  |   ReadWorkspace(String),
 | 
					
						
							| 
									
										
										
										
											2023-06-05 13:10:14 +08:00
										 |  |  |   CreateParentView {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     name: String,
 | 
					
						
							|  |  |  |     desc: String,
 | 
					
						
							|  |  |  |   },
 | 
					
						
							| 
									
										
										
										
											2023-06-05 13:10:14 +08:00
										 |  |  |   AssertParentView(ViewPB),
 | 
					
						
							|  |  |  |   ReloadParentView(String),
 | 
					
						
							|  |  |  |   UpdateParentView {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     name: Option<String>,
 | 
					
						
							|  |  |  |     desc: Option<String>,
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |     is_favorite: Option<bool>,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   },
 | 
					
						
							| 
									
										
										
										
											2023-06-05 13:10:14 +08:00
										 |  |  |   DeleteParentView,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // View
 | 
					
						
							|  |  |  |   CreateView {
 | 
					
						
							|  |  |  |     name: String,
 | 
					
						
							|  |  |  |     desc: String,
 | 
					
						
							|  |  |  |     layout: ViewLayout,
 | 
					
						
							|  |  |  |   },
 | 
					
						
							|  |  |  |   AssertView(ViewPB),
 | 
					
						
							|  |  |  |   ReadView(String),
 | 
					
						
							|  |  |  |   UpdateView {
 | 
					
						
							|  |  |  |     name: Option<String>,
 | 
					
						
							|  |  |  |     desc: Option<String>,
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |     is_favorite: Option<bool>,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   },
 | 
					
						
							| 
									
										
										
										
											2023-08-04 19:27:14 +08:00
										 |  |  |   UpdateViewIcon {
 | 
					
						
							|  |  |  |     icon: Option<ViewIconPB>,
 | 
					
						
							|  |  |  |   },
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   DeleteView,
 | 
					
						
							|  |  |  |   DeleteViews(Vec<String>),
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  |   MoveView {
 | 
					
						
							|  |  |  |     view_id: String,
 | 
					
						
							|  |  |  |     new_parent_id: String,
 | 
					
						
							|  |  |  |     prev_view_id: Option<String>,
 | 
					
						
							|  |  |  |   },
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // Trash
 | 
					
						
							|  |  |  |   RestoreAppFromTrash,
 | 
					
						
							|  |  |  |   RestoreViewFromTrash,
 | 
					
						
							|  |  |  |   ReadTrash,
 | 
					
						
							|  |  |  |   DeleteAllTrash,
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |   ToggleFavorite,
 | 
					
						
							|  |  |  |   ReadFavorites,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pub struct FolderTest {
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  |   pub sdk: EventIntegrationTest,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   pub workspace: WorkspacePB,
 | 
					
						
							|  |  |  |   pub parent_view: ViewPB,
 | 
					
						
							|  |  |  |   pub child_view: ViewPB,
 | 
					
						
							|  |  |  |   pub trash: Vec<TrashPB>,
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |   pub favorites: Vec<ViewPB>,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | impl FolderTest {
 | 
					
						
							|  |  |  |   pub async fn new() -> Self {
 | 
					
						
							| 
									
										
										
										
											2023-10-30 12:35:06 +08:00
										 |  |  |     let sdk = EventIntegrationTest::new().await;
 | 
					
						
							| 
									
										
										
										
											2023-10-24 23:13:51 +08:00
										 |  |  |     let _ = sdk.init_anon_user().await;
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |     let workspace = sdk.folder_manager.get_current_workspace().await.unwrap();
 | 
					
						
							|  |  |  |     let parent_view = create_view(
 | 
					
						
							|  |  |  |       &sdk,
 | 
					
						
							|  |  |  |       &workspace.id,
 | 
					
						
							| 
									
										
										
										
											2024-04-12 10:21:41 +02:00
										 |  |  |       "first level view",
 | 
					
						
							|  |  |  |       "",
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |       ViewLayout::Document,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     let view = create_view(
 | 
					
						
							|  |  |  |       &sdk,
 | 
					
						
							|  |  |  |       &parent_view.id,
 | 
					
						
							| 
									
										
										
										
											2024-04-12 10:21:41 +02:00
										 |  |  |       "second level view",
 | 
					
						
							|  |  |  |       "",
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |       ViewLayout::Document,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  |     Self {
 | 
					
						
							|  |  |  |       sdk,
 | 
					
						
							|  |  |  |       workspace,
 | 
					
						
							|  |  |  |       parent_view,
 | 
					
						
							|  |  |  |       child_view: view,
 | 
					
						
							|  |  |  |       trash: vec![],
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |       favorites: vec![],
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     }
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pub async fn run_scripts(&mut self, scripts: Vec<FolderScript>) {
 | 
					
						
							|  |  |  |     for script in scripts {
 | 
					
						
							|  |  |  |       self.run_script(script).await;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pub async fn run_script(&mut self, script: FolderScript) {
 | 
					
						
							|  |  |  |     let sdk = &self.sdk;
 | 
					
						
							|  |  |  |     match script {
 | 
					
						
							|  |  |  |       FolderScript::CreateWorkspace { name, desc } => {
 | 
					
						
							|  |  |  |         let workspace = create_workspace(sdk, &name, &desc).await;
 | 
					
						
							|  |  |  |         self.workspace = workspace;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::AssertWorkspace(workspace) => {
 | 
					
						
							|  |  |  |         assert_eq!(self.workspace, workspace, "Workspace not equal");
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::ReadWorkspace(workspace_id) => {
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |         let workspace = read_workspace(sdk, workspace_id).await;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |         self.workspace = workspace;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-06-05 13:10:14 +08:00
										 |  |  |       FolderScript::CreateParentView { name, desc } => {
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |         let app = create_view(sdk, &self.workspace.id, &name, &desc, ViewLayout::Document).await;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |         self.parent_view = app;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2024-06-12 23:17:57 +08:00
										 |  |  |       FolderScript::AssertParentView(view) => {
 | 
					
						
							|  |  |  |         assert_eq!(self.parent_view.id, view.id, "view id not equal");
 | 
					
						
							|  |  |  |         assert_eq!(self.parent_view.name, view.name, "view name not equal");
 | 
					
						
							|  |  |  |         assert_eq!(
 | 
					
						
							|  |  |  |           self.parent_view.is_favorite, view.is_favorite,
 | 
					
						
							|  |  |  |           "view name not equal"
 | 
					
						
							|  |  |  |         );
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-06-05 13:10:14 +08:00
										 |  |  |       FolderScript::ReloadParentView(parent_view_id) => {
 | 
					
						
							|  |  |  |         let parent_view = read_view(sdk, &parent_view_id).await;
 | 
					
						
							|  |  |  |         self.parent_view = parent_view;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |       FolderScript::UpdateParentView {
 | 
					
						
							|  |  |  |         name,
 | 
					
						
							|  |  |  |         desc,
 | 
					
						
							|  |  |  |         is_favorite,
 | 
					
						
							|  |  |  |       } => {
 | 
					
						
							|  |  |  |         update_view(sdk, &self.parent_view.id, name, desc, is_favorite).await;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-06-05 13:10:14 +08:00
										 |  |  |       FolderScript::DeleteParentView => {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |         delete_view(sdk, vec![self.parent_view.id.clone()]).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::CreateView { name, desc, layout } => {
 | 
					
						
							|  |  |  |         let view = create_view(sdk, &self.parent_view.id, &name, &desc, layout).await;
 | 
					
						
							|  |  |  |         self.child_view = view;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  |       FolderScript::MoveView {
 | 
					
						
							|  |  |  |         view_id,
 | 
					
						
							|  |  |  |         new_parent_id,
 | 
					
						
							|  |  |  |         prev_view_id,
 | 
					
						
							|  |  |  |       } => {
 | 
					
						
							|  |  |  |         move_view(sdk, view_id, new_parent_id, prev_view_id).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |       FolderScript::AssertView(view) => {
 | 
					
						
							|  |  |  |         assert_eq!(self.child_view, view, "View not equal");
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::ReadView(view_id) => {
 | 
					
						
							| 
									
										
										
										
											2024-05-30 09:56:44 +08:00
										 |  |  |         let mut view = read_view(sdk, &view_id).await;
 | 
					
						
							|  |  |  |         // Ignore the last edited time
 | 
					
						
							|  |  |  |         view.last_edited = 0;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |         self.child_view = view;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |       FolderScript::UpdateView {
 | 
					
						
							|  |  |  |         name,
 | 
					
						
							|  |  |  |         desc,
 | 
					
						
							|  |  |  |         is_favorite,
 | 
					
						
							|  |  |  |       } => {
 | 
					
						
							|  |  |  |         update_view(sdk, &self.child_view.id, name, desc, is_favorite).await;
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-08-04 19:27:14 +08:00
										 |  |  |       FolderScript::UpdateViewIcon { icon } => {
 | 
					
						
							|  |  |  |         update_view_icon(sdk, &self.child_view.id, icon).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |       FolderScript::DeleteView => {
 | 
					
						
							|  |  |  |         delete_view(sdk, vec![self.child_view.id.clone()]).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::DeleteViews(view_ids) => {
 | 
					
						
							|  |  |  |         delete_view(sdk, view_ids).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::RestoreAppFromTrash => {
 | 
					
						
							|  |  |  |         restore_app_from_trash(sdk, &self.parent_view.id).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::RestoreViewFromTrash => {
 | 
					
						
							|  |  |  |         restore_view_from_trash(sdk, &self.child_view.id).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::ReadTrash => {
 | 
					
						
							|  |  |  |         let trash = read_trash(sdk).await;
 | 
					
						
							|  |  |  |         self.trash = trash.items;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::DeleteAllTrash => {
 | 
					
						
							|  |  |  |         delete_all_trash(sdk).await;
 | 
					
						
							|  |  |  |         self.trash = vec![];
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |       FolderScript::ToggleFavorite => {
 | 
					
						
							|  |  |  |         toggle_favorites(sdk, vec![self.child_view.id.clone()]).await;
 | 
					
						
							|  |  |  |       },
 | 
					
						
							|  |  |  |       FolderScript::ReadFavorites => {
 | 
					
						
							|  |  |  |         let favorites = read_favorites(sdk).await;
 | 
					
						
							| 
									
										
										
										
											2024-05-27 08:51:49 +08:00
										 |  |  |         self.favorites = favorites.items.iter().map(|x| x.item.clone()).collect();
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     }
 | 
					
						
							|  |  |  |   }
 | 
					
						
							| 
									
										
										
										
											2024-08-18 05:16:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   //   pub async fn duplicate_view(&self, view_id: &str) {
 | 
					
						
							|  |  |  |   //     let payload = DuplicateViewPayloadPB {
 | 
					
						
							|  |  |  |   //       view_id: view_id.to_string(),
 | 
					
						
							|  |  |  |   //       open_after_duplicate: false,
 | 
					
						
							|  |  |  |   //       include_children: false,
 | 
					
						
							|  |  |  |   //       parent_view_id: None,
 | 
					
						
							|  |  |  |   //       suffix: None,
 | 
					
						
							|  |  |  |   //       sync_after_create: false,
 | 
					
						
							|  |  |  |   //     };
 | 
					
						
							|  |  |  |   //     EventBuilder::new(self.sdk.clone())
 | 
					
						
							|  |  |  |   //       .event(DuplicateView)
 | 
					
						
							|  |  |  |   //       .payload(payload)
 | 
					
						
							|  |  |  |   //       .async_send()
 | 
					
						
							|  |  |  |   //       .await;
 | 
					
						
							|  |  |  |   //   }
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn create_workspace(sdk: &EventIntegrationTest, name: &str, desc: &str) -> WorkspacePB {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   let request = CreateWorkspacePayloadPB {
 | 
					
						
							|  |  |  |     name: name.to_owned(),
 | 
					
						
							|  |  |  |     desc: desc.to_owned(),
 | 
					
						
							|  |  |  |   };
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2024-03-13 15:07:52 +08:00
										 |  |  |     .event(CreateFolderWorkspace)
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .payload(request)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await
 | 
					
						
							|  |  |  |     .parse::<WorkspacePB>()
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  | pub async fn read_workspace(sdk: &EventIntegrationTest, workspace_id: String) -> WorkspacePB {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   let request = WorkspaceIdPB {
 | 
					
						
							|  |  |  |     value: workspace_id,
 | 
					
						
							|  |  |  |   };
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |     .event(ReadCurrentWorkspace)
 | 
					
						
							|  |  |  |     .payload(request.clone())
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |     .parse::<WorkspacePB>()
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pub async fn create_view(
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  |   sdk: &EventIntegrationTest,
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |   parent_view_id: &str,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   name: &str,
 | 
					
						
							| 
									
										
										
										
											2024-11-01 15:57:58 +08:00
										 |  |  |   _desc: &str,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   layout: ViewLayout,
 | 
					
						
							|  |  |  | ) -> ViewPB {
 | 
					
						
							|  |  |  |   let request = CreateViewPayloadPB {
 | 
					
						
							| 
									
										
										
										
											2023-11-01 11:45:35 +08:00
										 |  |  |     parent_view_id: parent_view_id.to_string(),
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     name: name.to_string(),
 | 
					
						
							|  |  |  |     thumbnail: None,
 | 
					
						
							|  |  |  |     layout: layout.into(),
 | 
					
						
							|  |  |  |     initial_data: vec![],
 | 
					
						
							| 
									
										
										
										
											2023-06-03 13:40:12 +08:00
										 |  |  |     meta: Default::default(),
 | 
					
						
							|  |  |  |     set_as_current: true,
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |     index: None,
 | 
					
						
							| 
									
										
										
										
											2024-03-21 11:02:03 +07:00
										 |  |  |     section: None,
 | 
					
						
							| 
									
										
										
										
											2024-06-25 10:03:02 +08:00
										 |  |  |     view_id: None,
 | 
					
						
							| 
									
										
										
										
											2024-07-01 14:43:57 +08:00
										 |  |  |     extra: None,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   };
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .event(CreateView)
 | 
					
						
							|  |  |  |     .payload(request)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await
 | 
					
						
							|  |  |  |     .parse::<ViewPB>()
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn read_view(sdk: &EventIntegrationTest, view_id: &str) -> ViewPB {
 | 
					
						
							| 
									
										
										
										
											2023-06-05 13:10:14 +08:00
										 |  |  |   let view_id = ViewIdPB::from(view_id);
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-12-24 07:44:08 +08:00
										 |  |  |     .event(GetView)
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .payload(view_id)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await
 | 
					
						
							|  |  |  |     .parse::<ViewPB>()
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  | pub async fn move_view(
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  |   sdk: &EventIntegrationTest,
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  |   view_id: String,
 | 
					
						
							|  |  |  |   parent_id: String,
 | 
					
						
							|  |  |  |   prev_view_id: Option<String>,
 | 
					
						
							|  |  |  | ) {
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |   let payload = MoveNestedViewPayloadPB {
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  |     view_id,
 | 
					
						
							|  |  |  |     new_parent_id: parent_id,
 | 
					
						
							|  |  |  |     prev_view_id,
 | 
					
						
							| 
									
										
										
										
											2024-03-21 11:02:03 +07:00
										 |  |  |     from_section: None,
 | 
					
						
							|  |  |  |     to_section: None,
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  |   };
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |   let error = EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  |     .event(MoveNestedView)
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |     .payload(payload)
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  |     .async_send()
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |     .await
 | 
					
						
							|  |  |  |     .error();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   assert!(error.is_none());
 | 
					
						
							| 
									
										
										
										
											2023-07-26 16:49:50 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | pub async fn update_view(
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  |   sdk: &EventIntegrationTest,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   view_id: &str,
 | 
					
						
							|  |  |  |   name: Option<String>,
 | 
					
						
							|  |  |  |   desc: Option<String>,
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |   is_favorite: Option<bool>,
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | ) {
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |   println!("Toggling update view {:?}", is_favorite);
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   let request = UpdateViewPayloadPB {
 | 
					
						
							|  |  |  |     view_id: view_id.to_string(),
 | 
					
						
							|  |  |  |     name,
 | 
					
						
							|  |  |  |     desc,
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |     is_favorite,
 | 
					
						
							| 
									
										
										
										
											2023-06-14 22:16:33 +08:00
										 |  |  |     ..Default::default()
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   };
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .event(UpdateView)
 | 
					
						
							|  |  |  |     .payload(request)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn update_view_icon(sdk: &EventIntegrationTest, view_id: &str, icon: Option<ViewIconPB>) {
 | 
					
						
							| 
									
										
										
										
											2023-08-04 19:27:14 +08:00
										 |  |  |   let request = UpdateViewIconPayloadPB {
 | 
					
						
							|  |  |  |     view_id: view_id.to_string(),
 | 
					
						
							|  |  |  |     icon,
 | 
					
						
							|  |  |  |   };
 | 
					
						
							|  |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							|  |  |  |     .event(UpdateViewIcon)
 | 
					
						
							|  |  |  |     .payload(request)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn delete_view(sdk: &EventIntegrationTest, view_ids: Vec<String>) {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   let request = RepeatedViewIdPB { items: view_ids };
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .event(DeleteView)
 | 
					
						
							|  |  |  |     .payload(request)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn read_trash(sdk: &EventIntegrationTest) -> RepeatedTrashPB {
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-12-24 07:44:08 +08:00
										 |  |  |     .event(ListTrashItems)
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await
 | 
					
						
							|  |  |  |     .parse::<RepeatedTrashPB>()
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn restore_app_from_trash(sdk: &EventIntegrationTest, app_id: &str) {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   let id = TrashIdPB {
 | 
					
						
							|  |  |  |     id: app_id.to_owned(),
 | 
					
						
							|  |  |  |   };
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-12-24 07:44:08 +08:00
										 |  |  |     .event(RestoreTrashItem)
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .payload(id)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn restore_view_from_trash(sdk: &EventIntegrationTest, view_id: &str) {
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |   let id = TrashIdPB {
 | 
					
						
							|  |  |  |     id: view_id.to_owned(),
 | 
					
						
							|  |  |  |   };
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-12-24 07:44:08 +08:00
										 |  |  |     .event(RestoreTrashItem)
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .payload(id)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn delete_all_trash(sdk: &EventIntegrationTest) {
 | 
					
						
							| 
									
										
										
										
											2023-05-23 23:55:21 +08:00
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							| 
									
										
										
										
											2023-12-24 07:44:08 +08:00
										 |  |  |     .event(PermanentlyDeleteAllTrashItem)
 | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 20:11:06 +08:00
										 |  |  | pub async fn toggle_favorites(sdk: &EventIntegrationTest, view_id: Vec<String>) {
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |   let request = RepeatedViewIdPB { items: view_id };
 | 
					
						
							|  |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							|  |  |  |     .event(ToggleFavorite)
 | 
					
						
							|  |  |  |     .payload(request)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-27 08:51:49 +08:00
										 |  |  | pub async fn read_favorites(sdk: &EventIntegrationTest) -> RepeatedFavoriteViewPB {
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  |   EventBuilder::new(sdk.clone())
 | 
					
						
							|  |  |  |     .event(ReadFavorites)
 | 
					
						
							|  |  |  |     .async_send()
 | 
					
						
							|  |  |  |     .await
 | 
					
						
							| 
									
										
										
										
											2024-05-27 08:51:49 +08:00
										 |  |  |     .parse::<RepeatedFavoriteViewPB>()
 | 
					
						
							| 
									
										
										
										
											2023-08-02 18:50:51 +05:30
										 |  |  | }
 |