folder_test.rs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. use crate::script::{FolderScript::*, FolderTest};
  2. use collab_folder::core::ViewLayout;
  3. #[tokio::test]
  4. async fn read_all_workspace_test() {
  5. let mut test = FolderTest::new().await;
  6. test.run_scripts(vec![ReadAllWorkspaces]).await;
  7. assert!(!test.all_workspace.is_empty());
  8. }
  9. #[tokio::test]
  10. async fn create_workspace_test() {
  11. let mut test = FolderTest::new().await;
  12. let name = "My new workspace".to_owned();
  13. let desc = "Daily routines".to_owned();
  14. test
  15. .run_scripts(vec![CreateWorkspace {
  16. name: name.clone(),
  17. desc: desc.clone(),
  18. }])
  19. .await;
  20. let workspace = test.workspace.clone();
  21. assert_eq!(workspace.name, name);
  22. test
  23. .run_scripts(vec![
  24. ReadWorkspace(Some(workspace.id.clone())),
  25. AssertWorkspace(workspace),
  26. ])
  27. .await;
  28. }
  29. #[tokio::test]
  30. async fn get_workspace_test() {
  31. let mut test = FolderTest::new().await;
  32. let workspace = test.workspace.clone();
  33. test
  34. .run_scripts(vec![
  35. ReadWorkspace(Some(workspace.id.clone())),
  36. AssertWorkspace(workspace),
  37. ])
  38. .await;
  39. }
  40. #[tokio::test]
  41. async fn create_parent_view_test() {
  42. let mut test = FolderTest::new().await;
  43. test
  44. .run_scripts(vec![CreateParentView {
  45. name: "App".to_string(),
  46. desc: "App description".to_string(),
  47. }])
  48. .await;
  49. let app = test.parent_view.clone();
  50. test.run_scripts(vec![ReloadParentView(app.id)]).await;
  51. }
  52. #[tokio::test]
  53. #[should_panic]
  54. async fn delete_parent_view_test() {
  55. let mut test = FolderTest::new().await;
  56. let parent_view = test.parent_view.clone();
  57. test
  58. .run_scripts(vec![DeleteParentView, ReloadParentView(parent_view.id)])
  59. .await;
  60. }
  61. #[tokio::test]
  62. async fn delete_parent_view_then_restore() {
  63. let mut test = FolderTest::new().await;
  64. test
  65. .run_scripts(vec![ReloadParentView(test.parent_view.id.clone())])
  66. .await;
  67. let parent_view = test.parent_view.clone();
  68. test
  69. .run_scripts(vec![
  70. DeleteParentView,
  71. RestoreAppFromTrash,
  72. ReloadParentView(parent_view.id.clone()),
  73. AssertParentView(parent_view),
  74. ])
  75. .await;
  76. }
  77. #[tokio::test]
  78. async fn update_parent_view_test() {
  79. let mut test = FolderTest::new().await;
  80. let parent_view = test.parent_view.clone();
  81. let new_name = "😁 hell world".to_owned();
  82. assert_ne!(parent_view.name, new_name);
  83. test
  84. .run_scripts(vec![
  85. UpdateParentView {
  86. name: Some(new_name.clone()),
  87. desc: None,
  88. },
  89. ReloadParentView(parent_view.id),
  90. ])
  91. .await;
  92. assert_eq!(test.parent_view.name, new_name);
  93. }
  94. #[tokio::test]
  95. async fn app_create_with_view() {
  96. let mut test = FolderTest::new().await;
  97. let mut app = test.parent_view.clone();
  98. test
  99. .run_scripts(vec![
  100. CreateView {
  101. name: "View A".to_owned(),
  102. desc: "View A description".to_owned(),
  103. layout: ViewLayout::Document,
  104. },
  105. CreateView {
  106. name: "Grid".to_owned(),
  107. desc: "Grid description".to_owned(),
  108. layout: ViewLayout::Grid,
  109. },
  110. ReloadParentView(app.id),
  111. ])
  112. .await;
  113. app = test.parent_view.clone();
  114. assert_eq!(app.child_views.len(), 3);
  115. assert_eq!(app.child_views[1].name, "View A");
  116. assert_eq!(app.child_views[2].name, "Grid")
  117. }
  118. #[tokio::test]
  119. async fn view_update() {
  120. let mut test = FolderTest::new().await;
  121. let view = test.child_view.clone();
  122. let new_name = "😁 123".to_owned();
  123. assert_ne!(view.name, new_name);
  124. test
  125. .run_scripts(vec![
  126. UpdateView {
  127. name: Some(new_name.clone()),
  128. desc: None,
  129. },
  130. ReadView(view.id),
  131. ])
  132. .await;
  133. assert_eq!(test.child_view.name, new_name);
  134. }
  135. #[tokio::test]
  136. #[should_panic]
  137. async fn view_delete() {
  138. let mut test = FolderTest::new().await;
  139. let view = test.child_view.clone();
  140. test.run_scripts(vec![DeleteView, ReadView(view.id)]).await;
  141. }
  142. #[tokio::test]
  143. async fn view_delete_then_restore() {
  144. let mut test = FolderTest::new().await;
  145. let view = test.child_view.clone();
  146. test
  147. .run_scripts(vec![
  148. DeleteView,
  149. RestoreViewFromTrash,
  150. ReadView(view.id.clone()),
  151. AssertView(view),
  152. ])
  153. .await;
  154. }
  155. #[tokio::test]
  156. async fn view_delete_all() {
  157. let mut test = FolderTest::new().await;
  158. let parent_view = test.parent_view.clone();
  159. test
  160. .run_scripts(vec![
  161. CreateView {
  162. name: "View A".to_owned(),
  163. desc: "View A description".to_owned(),
  164. layout: ViewLayout::Document,
  165. },
  166. CreateView {
  167. name: "Grid".to_owned(),
  168. desc: "Grid description".to_owned(),
  169. layout: ViewLayout::Grid,
  170. },
  171. ReloadParentView(parent_view.id.clone()),
  172. ])
  173. .await;
  174. assert_eq!(
  175. test.parent_view.child_views.len(),
  176. 3,
  177. "num of belongings should be 3"
  178. );
  179. let view_ids = test
  180. .parent_view
  181. .child_views
  182. .iter()
  183. .map(|view| view.id.clone())
  184. .collect::<Vec<String>>();
  185. test
  186. .run_scripts(vec![
  187. DeleteViews(view_ids),
  188. ReloadParentView(parent_view.id),
  189. ReadTrash,
  190. ])
  191. .await;
  192. assert_eq!(test.parent_view.child_views.len(), 0);
  193. assert_eq!(test.trash.len(), 3);
  194. }
  195. #[tokio::test]
  196. async fn view_delete_all_permanent() {
  197. let mut test = FolderTest::new().await;
  198. let parent_view = test.parent_view.clone();
  199. test
  200. .run_scripts(vec![
  201. CreateView {
  202. name: "View A".to_owned(),
  203. desc: "View A description".to_owned(),
  204. layout: ViewLayout::Document,
  205. },
  206. ReloadParentView(parent_view.id.clone()),
  207. ])
  208. .await;
  209. let view_ids = test
  210. .parent_view
  211. .child_views
  212. .iter()
  213. .map(|view| view.id.clone())
  214. .collect::<Vec<String>>();
  215. test
  216. .run_scripts(vec![
  217. DeleteViews(view_ids),
  218. ReloadParentView(parent_view.id),
  219. DeleteAllTrash,
  220. ReadTrash,
  221. ])
  222. .await;
  223. assert_eq!(test.parent_view.child_views.len(), 0);
  224. assert_eq!(test.trash.len(), 0);
  225. }