helper.rs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. pub use flowy_test::builder::AnnieTestBuilder;
  2. use flowy_workspace::{
  3. entities::{app::*, view::*, workspace::*},
  4. event::WorkspaceEvent::*,
  5. };
  6. pub(crate) fn invalid_workspace_name_test_case() -> Vec<String> {
  7. vec!["", "1234".repeat(100).as_str()]
  8. .iter()
  9. .map(|s| s.to_string())
  10. .collect::<Vec<_>>()
  11. }
  12. pub fn create_workspace(name: &str, desc: &str) -> (String, Workspace) {
  13. let builder = AnnieTestBuilder::new();
  14. let user_id = builder.user_detail.as_ref().unwrap().id.clone();
  15. let request = CreateWorkspaceRequest {
  16. name: name.to_owned(),
  17. desc: desc.to_owned(),
  18. };
  19. let workspace = builder.event(CreateWorkspace).request(request).sync_send().parse::<Workspace>();
  20. (user_id, workspace)
  21. }
  22. pub fn read_workspaces(request: QueryWorkspaceRequest) -> Option<Workspace> {
  23. let mut repeated_workspace = AnnieTestBuilder::new()
  24. .event(ReadWorkspaces)
  25. .request(request)
  26. .sync_send()
  27. .parse::<RepeatedWorkspace>();
  28. debug_assert_eq!(repeated_workspace.len(), 1);
  29. repeated_workspace.drain(..1).collect::<Vec<Workspace>>().pop()
  30. }
  31. pub fn create_app(name: &str, desc: &str, workspace_id: &str) -> App {
  32. let create_app_request = CreateAppRequest {
  33. workspace_id: workspace_id.to_owned(),
  34. name: name.to_string(),
  35. desc: desc.to_string(),
  36. color_style: Default::default(),
  37. };
  38. let app = AnnieTestBuilder::new()
  39. .event(CreateApp)
  40. .request(create_app_request)
  41. .sync_send()
  42. .parse::<App>();
  43. app
  44. }
  45. pub fn delete_app(app_id: &str) {
  46. let delete_app_request = DeleteAppRequest {
  47. app_id: app_id.to_string(),
  48. };
  49. AnnieTestBuilder::new().event(DeleteApp).request(delete_app_request).sync_send();
  50. }
  51. pub fn update_app(request: UpdateAppRequest) { AnnieTestBuilder::new().event(UpdateApp).request(request).sync_send(); }
  52. pub fn read_app(request: QueryAppRequest) -> App {
  53. let app = AnnieTestBuilder::new().event(ReadApp).request(request).sync_send().parse::<App>();
  54. app
  55. }
  56. pub fn create_view_with_request(request: CreateViewRequest) -> View {
  57. let view = AnnieTestBuilder::new()
  58. .event(CreateView)
  59. .request(request)
  60. .sync_send()
  61. .parse::<View>();
  62. view
  63. }
  64. pub fn create_view() -> View {
  65. let workspace = create_workspace("Workspace", "").1;
  66. let app = create_app("App A", "AppFlowy Github Project", &workspace.id);
  67. let request = CreateViewRequest {
  68. belong_to_id: app.id.clone(),
  69. name: "View A".to_string(),
  70. desc: "".to_string(),
  71. thumbnail: None,
  72. view_type: ViewType::Doc,
  73. };
  74. create_view_with_request(request)
  75. }
  76. pub fn update_view(request: UpdateViewRequest) { AnnieTestBuilder::new().event(UpdateView).request(request).sync_send(); }
  77. pub fn read_view(request: QueryViewRequest) -> View { AnnieTestBuilder::new().event(ReadView).request(request).sync_send().parse::<View>() }