helper.rs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. use flowy_collaboration::entities::document_info::BlockInfo;
  2. use flowy_folder::event_map::FolderEvent::*;
  3. use flowy_folder_data_model::entities::view::{RepeatedViewId, ViewId};
  4. use flowy_folder_data_model::entities::workspace::WorkspaceId;
  5. use flowy_folder_data_model::entities::{
  6. app::{App, AppId, CreateAppPayload, UpdateAppPayload},
  7. trash::{RepeatedTrash, TrashId, TrashType},
  8. view::{CreateViewPayload, UpdateViewPayload, View, ViewDataType},
  9. workspace::{CreateWorkspacePayload, RepeatedWorkspace, Workspace},
  10. };
  11. use flowy_test::{event_builder::*, FlowySDKTest};
  12. pub async fn create_workspace(sdk: &FlowySDKTest, name: &str, desc: &str) -> Workspace {
  13. let request = CreateWorkspacePayload {
  14. name: name.to_owned(),
  15. desc: desc.to_owned(),
  16. };
  17. let workspace = FolderEventBuilder::new(sdk.clone())
  18. .event(CreateWorkspace)
  19. .payload(request)
  20. .async_send()
  21. .await
  22. .parse::<Workspace>();
  23. workspace
  24. }
  25. pub async fn read_workspace(sdk: &FlowySDKTest, workspace_id: Option<String>) -> Vec<Workspace> {
  26. let request = WorkspaceId { value: workspace_id };
  27. let repeated_workspace = FolderEventBuilder::new(sdk.clone())
  28. .event(ReadWorkspaces)
  29. .payload(request.clone())
  30. .async_send()
  31. .await
  32. .parse::<RepeatedWorkspace>();
  33. let workspaces;
  34. if let Some(workspace_id) = &request.value {
  35. workspaces = repeated_workspace
  36. .into_inner()
  37. .into_iter()
  38. .filter(|workspace| &workspace.id == workspace_id)
  39. .collect::<Vec<Workspace>>();
  40. debug_assert_eq!(workspaces.len(), 1);
  41. } else {
  42. workspaces = repeated_workspace.items;
  43. }
  44. workspaces
  45. }
  46. pub async fn create_app(sdk: &FlowySDKTest, workspace_id: &str, name: &str, desc: &str) -> App {
  47. let create_app_request = CreateAppPayload {
  48. workspace_id: workspace_id.to_owned(),
  49. name: name.to_string(),
  50. desc: desc.to_string(),
  51. color_style: Default::default(),
  52. };
  53. let app = FolderEventBuilder::new(sdk.clone())
  54. .event(CreateApp)
  55. .payload(create_app_request)
  56. .async_send()
  57. .await
  58. .parse::<App>();
  59. app
  60. }
  61. pub async fn read_app(sdk: &FlowySDKTest, app_id: &str) -> App {
  62. let request = AppId {
  63. value: app_id.to_owned(),
  64. };
  65. let app = FolderEventBuilder::new(sdk.clone())
  66. .event(ReadApp)
  67. .payload(request)
  68. .async_send()
  69. .await
  70. .parse::<App>();
  71. app
  72. }
  73. pub async fn update_app(sdk: &FlowySDKTest, app_id: &str, name: Option<String>, desc: Option<String>) {
  74. let request = UpdateAppPayload {
  75. app_id: app_id.to_string(),
  76. name,
  77. desc,
  78. color_style: None,
  79. is_trash: None,
  80. };
  81. FolderEventBuilder::new(sdk.clone())
  82. .event(UpdateApp)
  83. .payload(request)
  84. .async_send()
  85. .await;
  86. }
  87. pub async fn delete_app(sdk: &FlowySDKTest, app_id: &str) {
  88. let request = AppId {
  89. value: app_id.to_string(),
  90. };
  91. FolderEventBuilder::new(sdk.clone())
  92. .event(DeleteApp)
  93. .payload(request)
  94. .async_send()
  95. .await;
  96. }
  97. pub async fn create_view(sdk: &FlowySDKTest, app_id: &str, name: &str, desc: &str, view_type: ViewDataType) -> View {
  98. let request = CreateViewPayload {
  99. belong_to_id: app_id.to_string(),
  100. name: name.to_string(),
  101. desc: desc.to_string(),
  102. thumbnail: None,
  103. data_type: view_type,
  104. ext_data: "".to_string(),
  105. };
  106. let view = FolderEventBuilder::new(sdk.clone())
  107. .event(CreateView)
  108. .payload(request)
  109. .async_send()
  110. .await
  111. .parse::<View>();
  112. view
  113. }
  114. pub async fn read_view(sdk: &FlowySDKTest, view_id: &str) -> View {
  115. let view_id: ViewId = view_id.into();
  116. FolderEventBuilder::new(sdk.clone())
  117. .event(ReadView)
  118. .payload(view_id)
  119. .async_send()
  120. .await
  121. .parse::<View>()
  122. }
  123. pub async fn update_view(sdk: &FlowySDKTest, view_id: &str, name: Option<String>, desc: Option<String>) {
  124. let request = UpdateViewPayload {
  125. view_id: view_id.to_string(),
  126. name,
  127. desc,
  128. thumbnail: None,
  129. };
  130. FolderEventBuilder::new(sdk.clone())
  131. .event(UpdateView)
  132. .payload(request)
  133. .async_send()
  134. .await;
  135. }
  136. pub async fn delete_view(sdk: &FlowySDKTest, view_ids: Vec<String>) {
  137. let request = RepeatedViewId { items: view_ids };
  138. FolderEventBuilder::new(sdk.clone())
  139. .event(DeleteView)
  140. .payload(request)
  141. .async_send()
  142. .await;
  143. }
  144. pub async fn open_document(sdk: &FlowySDKTest, view_id: &str) -> BlockInfo {
  145. let view_id: ViewId = view_id.into();
  146. FolderEventBuilder::new(sdk.clone())
  147. .event(OpenView)
  148. .payload(view_id)
  149. .async_send()
  150. .await
  151. .parse::<BlockInfo>()
  152. }
  153. pub async fn read_trash(sdk: &FlowySDKTest) -> RepeatedTrash {
  154. FolderEventBuilder::new(sdk.clone())
  155. .event(ReadTrash)
  156. .async_send()
  157. .await
  158. .parse::<RepeatedTrash>()
  159. }
  160. pub async fn restore_app_from_trash(sdk: &FlowySDKTest, app_id: &str) {
  161. let id = TrashId {
  162. id: app_id.to_owned(),
  163. ty: TrashType::TrashApp,
  164. };
  165. FolderEventBuilder::new(sdk.clone())
  166. .event(PutbackTrash)
  167. .payload(id)
  168. .async_send()
  169. .await;
  170. }
  171. pub async fn restore_view_from_trash(sdk: &FlowySDKTest, view_id: &str) {
  172. let id = TrashId {
  173. id: view_id.to_owned(),
  174. ty: TrashType::TrashView,
  175. };
  176. FolderEventBuilder::new(sdk.clone())
  177. .event(PutbackTrash)
  178. .payload(id)
  179. .async_send()
  180. .await;
  181. }
  182. pub async fn delete_all_trash(sdk: &FlowySDKTest) {
  183. FolderEventBuilder::new(sdk.clone())
  184. .event(DeleteAllTrash)
  185. .async_send()
  186. .await;
  187. }