helper.rs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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, data_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,
  104. ext_data: "".to_string(),
  105. plugin_type: 0,
  106. };
  107. let view = FolderEventBuilder::new(sdk.clone())
  108. .event(CreateView)
  109. .payload(request)
  110. .async_send()
  111. .await
  112. .parse::<View>();
  113. view
  114. }
  115. pub async fn read_view(sdk: &FlowySDKTest, view_id: &str) -> View {
  116. let view_id: ViewId = view_id.into();
  117. FolderEventBuilder::new(sdk.clone())
  118. .event(ReadView)
  119. .payload(view_id)
  120. .async_send()
  121. .await
  122. .parse::<View>()
  123. }
  124. pub async fn update_view(sdk: &FlowySDKTest, view_id: &str, name: Option<String>, desc: Option<String>) {
  125. let request = UpdateViewPayload {
  126. view_id: view_id.to_string(),
  127. name,
  128. desc,
  129. thumbnail: None,
  130. };
  131. FolderEventBuilder::new(sdk.clone())
  132. .event(UpdateView)
  133. .payload(request)
  134. .async_send()
  135. .await;
  136. }
  137. pub async fn delete_view(sdk: &FlowySDKTest, view_ids: Vec<String>) {
  138. let request = RepeatedViewId { items: view_ids };
  139. FolderEventBuilder::new(sdk.clone())
  140. .event(DeleteView)
  141. .payload(request)
  142. .async_send()
  143. .await;
  144. }
  145. pub async fn open_document(sdk: &FlowySDKTest, view_id: &str) -> BlockInfo {
  146. let view_id: ViewId = view_id.into();
  147. FolderEventBuilder::new(sdk.clone())
  148. .event(SetLatestView)
  149. .payload(view_id)
  150. .async_send()
  151. .await
  152. .parse::<BlockInfo>()
  153. }
  154. pub async fn read_trash(sdk: &FlowySDKTest) -> RepeatedTrash {
  155. FolderEventBuilder::new(sdk.clone())
  156. .event(ReadTrash)
  157. .async_send()
  158. .await
  159. .parse::<RepeatedTrash>()
  160. }
  161. pub async fn restore_app_from_trash(sdk: &FlowySDKTest, app_id: &str) {
  162. let id = TrashId {
  163. id: app_id.to_owned(),
  164. ty: TrashType::TrashApp,
  165. };
  166. FolderEventBuilder::new(sdk.clone())
  167. .event(PutbackTrash)
  168. .payload(id)
  169. .async_send()
  170. .await;
  171. }
  172. pub async fn restore_view_from_trash(sdk: &FlowySDKTest, view_id: &str) {
  173. let id = TrashId {
  174. id: view_id.to_owned(),
  175. ty: TrashType::TrashView,
  176. };
  177. FolderEventBuilder::new(sdk.clone())
  178. .event(PutbackTrash)
  179. .payload(id)
  180. .async_send()
  181. .await;
  182. }
  183. pub async fn delete_all_trash(sdk: &FlowySDKTest) {
  184. FolderEventBuilder::new(sdk.clone())
  185. .event(DeleteAllTrash)
  186. .async_send()
  187. .await;
  188. }