workspace.rs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. use crate::helper::{spawn_app, TestApp};
  2. use flowy_workspace::entities::{
  3. app::{App, ColorStyle, CreateAppParams, DeleteAppParams, QueryAppParams, UpdateAppParams},
  4. view::{CreateViewParams, DeleteViewParams, QueryViewParams, UpdateViewParams, View, ViewType},
  5. workspace::{
  6. CreateWorkspaceParams,
  7. DeleteWorkspaceParams,
  8. QueryWorkspaceParams,
  9. UpdateWorkspaceParams,
  10. Workspace,
  11. },
  12. };
  13. #[actix_rt::test]
  14. async fn workspace_create() {
  15. let app = spawn_app().await;
  16. let (workspace, _) = create_test_workspace(&app).await;
  17. log::info!("{:?}", workspace);
  18. }
  19. #[actix_rt::test]
  20. async fn workspace_read() {
  21. let app = spawn_app().await;
  22. let (workspace_1, _) = create_test_workspace(&app).await;
  23. let read_params = QueryWorkspaceParams::new(&workspace_1.id);
  24. log::info!("{:?}", app.read_workspace(read_params).await.unwrap());
  25. }
  26. #[actix_rt::test]
  27. async fn workspace_read_with_belongs() {
  28. let application = spawn_app().await;
  29. let (workspace, user_id) = create_test_workspace(&application).await;
  30. let _ = create_test_app(&application, &workspace.id, &user_id).await;
  31. let _ = create_test_app(&application, &workspace.id, &user_id).await;
  32. let _ = create_test_app(&application, &workspace.id, &user_id).await;
  33. let read_params = QueryWorkspaceParams::new(&workspace.id).read_apps();
  34. let workspace = application.read_workspace(read_params).await.unwrap();
  35. assert_eq!(workspace.apps.len(), 3);
  36. }
  37. #[actix_rt::test]
  38. async fn workspace_update() {
  39. let app = spawn_app().await;
  40. let (workspace_1, _) = create_test_workspace(&app).await;
  41. let update_params = UpdateWorkspaceParams {
  42. id: workspace_1.id.clone(),
  43. name: Some("workspace 2".to_string()),
  44. desc: Some("rename workspace description".to_string()),
  45. };
  46. app.update_workspace(update_params).await;
  47. let read_params = QueryWorkspaceParams {
  48. workspace_id: workspace_1.id.clone(),
  49. read_apps: false,
  50. };
  51. let workspace_2 = app.read_workspace(read_params).await.unwrap();
  52. log::info!("{:?}", workspace_2);
  53. }
  54. #[actix_rt::test]
  55. async fn workspace_delete() {
  56. let app = spawn_app().await;
  57. let (workspace, _) = create_test_workspace(&app).await;
  58. let delete_params = DeleteWorkspaceParams {
  59. workspace_id: workspace.id.clone(),
  60. };
  61. let _ = app.delete_workspace(delete_params).await;
  62. let read_params = QueryWorkspaceParams {
  63. workspace_id: workspace.id.clone(),
  64. read_apps: false,
  65. };
  66. assert_eq!(app.read_workspace(read_params).await.is_none(), true);
  67. }
  68. async fn create_test_workspace(app: &TestApp) -> (Workspace, String) {
  69. let response = app.register_test_user().await;
  70. let params = CreateWorkspaceParams {
  71. name: "My first workspace".to_string(),
  72. desc: "This is my first workspace".to_string(),
  73. user_id: response.uid.clone(),
  74. };
  75. let workspace = app.create_workspace(params).await;
  76. (workspace, response.uid)
  77. }
  78. #[actix_rt::test]
  79. async fn app_create() {
  80. let application = spawn_app().await;
  81. let (workspace, user_id) = create_test_workspace(&application).await;
  82. let app = create_test_app(&application, &workspace.id, &user_id).await;
  83. log::info!("{:?}", app);
  84. }
  85. #[actix_rt::test]
  86. async fn app_read() {
  87. let application = spawn_app().await;
  88. let (workspace, user_id) = create_test_workspace(&application).await;
  89. let app = create_test_app(&application, &workspace.id, &user_id).await;
  90. let read_params = QueryAppParams::new(&app.id);
  91. log::info!("{:?}", application.read_app(read_params).await.unwrap());
  92. }
  93. #[actix_rt::test]
  94. async fn app_read_with_belongs() {
  95. let application = spawn_app().await;
  96. let (workspace, user_id) = create_test_workspace(&application).await;
  97. let app = create_test_app(&application, &workspace.id, &user_id).await;
  98. let _ = create_test_view(&application, &app.id).await;
  99. let _ = create_test_view(&application, &app.id).await;
  100. let read_params = QueryAppParams::new(&app.id).read_belongings();
  101. let app = application.read_app(read_params).await.unwrap();
  102. assert_eq!(app.belongings.len(), 2);
  103. }
  104. #[actix_rt::test]
  105. async fn app_read_with_belongs_in_trash() {
  106. let application = spawn_app().await;
  107. let (workspace, user_id) = create_test_workspace(&application).await;
  108. let app = create_test_app(&application, &workspace.id, &user_id).await;
  109. let _ = create_test_view(&application, &app.id).await;
  110. let view = create_test_view(&application, &app.id).await;
  111. let update_params = UpdateViewParams::new(&view.id).trash();
  112. application.update_view(update_params).await;
  113. let read_params = QueryAppParams::new(&app.id).read_belongings();
  114. let app = application.read_app(read_params).await.unwrap();
  115. assert_eq!(app.belongings.len(), 1);
  116. }
  117. #[actix_rt::test]
  118. async fn app_update() {
  119. let application = spawn_app().await;
  120. let (workspace, user_id) = create_test_workspace(&application).await;
  121. let app = create_test_app(&application, &workspace.id, &user_id).await;
  122. let update_params = UpdateAppParams::new(&app.id).name("flowy");
  123. application.update_app(update_params).await;
  124. let read_params = QueryAppParams::new(&app.id);
  125. let app = application.read_app(read_params).await.unwrap();
  126. log::info!("{:?}", app);
  127. }
  128. #[actix_rt::test]
  129. async fn app_delete() {
  130. let application = spawn_app().await;
  131. let (workspace, user_id) = create_test_workspace(&application).await;
  132. let app = create_test_app(&application, &workspace.id, &user_id).await;
  133. let delete_params = DeleteAppParams {
  134. app_id: app.id.clone(),
  135. };
  136. application.delete_app(delete_params).await;
  137. let read_params = QueryAppParams::new(&app.id);
  138. assert_eq!(application.read_app(read_params).await.is_none(), true);
  139. }
  140. async fn create_test_app(app: &TestApp, workspace_id: &str, user_id: &str) -> App {
  141. let params = CreateAppParams {
  142. workspace_id: workspace_id.to_owned(),
  143. name: "My first app".to_string(),
  144. desc: "This is my first app".to_string(),
  145. color_style: ColorStyle::default(),
  146. user_id: user_id.to_string(),
  147. };
  148. let app = app.create_app(params).await;
  149. app
  150. }
  151. #[actix_rt::test]
  152. async fn view_create() {
  153. let application = spawn_app().await;
  154. let (workspace, user_id) = create_test_workspace(&application).await;
  155. let app = create_test_app(&application, &workspace.id, &user_id).await;
  156. let view = create_test_view(&application, &app.id).await;
  157. log::info!("{:?}", view);
  158. }
  159. #[actix_rt::test]
  160. async fn view_update() {
  161. let application = spawn_app().await;
  162. let (workspace, user_id) = create_test_workspace(&application).await;
  163. let app = create_test_app(&application, &workspace.id, &user_id).await;
  164. let view = create_test_view(&application, &app.id).await;
  165. // update
  166. let update_params = UpdateViewParams::new(&view.id)
  167. .trash()
  168. .name("new view name");
  169. application.update_view(update_params).await;
  170. // read
  171. let read_params = QueryViewParams::new(&view.id).trash();
  172. let view = application.read_view(read_params).await;
  173. log::info!("{:?}", view);
  174. }
  175. #[actix_rt::test]
  176. async fn view_delete() {
  177. let application = spawn_app().await;
  178. let (workspace, user_id) = create_test_workspace(&application).await;
  179. let app = create_test_app(&application, &workspace.id, &user_id).await;
  180. let view = create_test_view(&application, &app.id).await;
  181. // delete
  182. let delete_params = DeleteViewParams {
  183. view_id: view.id.clone(),
  184. };
  185. application.delete_view(delete_params).await;
  186. // read
  187. let read_params = QueryViewParams::new(&view.id).trash();
  188. assert_eq!(application.read_view(read_params).await.is_none(), true);
  189. }
  190. async fn create_test_view(application: &TestApp, app_id: &str) -> View {
  191. let params = CreateViewParams {
  192. belong_to_id: app_id.to_string(),
  193. name: "My first view".to_string(),
  194. desc: "This is my first view".to_string(),
  195. thumbnail: "http://1.png".to_string(),
  196. view_type: ViewType::Doc,
  197. };
  198. let app = application.create_view(params).await;
  199. app
  200. }
  201. #[actix_rt::test]
  202. async fn workspace_list_read() {
  203. let application = spawn_app().await;
  204. let response = application.register_test_user().await;
  205. for i in 0..3 {
  206. let params = CreateWorkspaceParams {
  207. name: format!("{} workspace", i),
  208. desc: format!("This is my {} workspace", i),
  209. user_id: response.uid.clone(),
  210. };
  211. let _ = application.create_workspace(params).await;
  212. }
  213. let workspaces = application.read_workspace_list(&response.uid).await;
  214. // 3 + 1 (created by default)
  215. assert_eq!(workspaces.len(), 4);
  216. log::info!("{:?}", workspaces);
  217. }