workspace.rs 8.1 KB

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