helper.rs 5.7 KB

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