workspace.rs 8.7 KB

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