script.rs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. use flowy_client_sync::client_folder::{AppNode, FolderNodePad, WorkspaceNode};
  2. use folder_model::AppRevision;
  3. use lib_ot::core::Path;
  4. pub enum FolderNodePadScript {
  5. CreateWorkspace {
  6. id: String,
  7. name: String,
  8. },
  9. DeleteWorkspace {
  10. id: String,
  11. },
  12. AssertPathOfWorkspace {
  13. id: String,
  14. expected_path: Path,
  15. },
  16. AssertNumberOfWorkspace {
  17. expected: usize,
  18. },
  19. CreateApp {
  20. id: String,
  21. name: String,
  22. },
  23. DeleteApp {
  24. id: String,
  25. },
  26. UpdateApp {
  27. id: String,
  28. name: String,
  29. },
  30. AssertApp {
  31. id: String,
  32. expected: Option<AppRevision>,
  33. },
  34. AssertAppContent {
  35. id: String,
  36. name: String,
  37. },
  38. // AssertNumberOfApps { expected: usize },
  39. }
  40. pub struct FolderNodePadTest {
  41. folder_pad: FolderNodePad,
  42. }
  43. impl FolderNodePadTest {
  44. pub fn new() -> FolderNodePadTest {
  45. let mut folder_pad = FolderNodePad::default();
  46. let workspace = WorkspaceNode::new(
  47. folder_pad.tree.clone(),
  48. "1".to_string(),
  49. "workspace name".to_string(),
  50. );
  51. folder_pad.workspaces.add_workspace(workspace).unwrap();
  52. Self { folder_pad }
  53. }
  54. pub fn run_scripts(&mut self, scripts: Vec<FolderNodePadScript>) {
  55. for script in scripts {
  56. self.run_script(script);
  57. }
  58. }
  59. pub fn run_script(&mut self, script: FolderNodePadScript) {
  60. match script {
  61. FolderNodePadScript::CreateWorkspace { id, name } => {
  62. let workspace = WorkspaceNode::new(self.folder_pad.tree.clone(), id, name);
  63. self.folder_pad.workspaces.add_workspace(workspace).unwrap();
  64. },
  65. FolderNodePadScript::DeleteWorkspace { id } => {
  66. self.folder_pad.workspaces.remove_workspace(id);
  67. },
  68. FolderNodePadScript::AssertPathOfWorkspace { id, expected_path } => {
  69. let workspace_node: &WorkspaceNode = self.folder_pad.workspaces.get_workspace(id).unwrap();
  70. let node_id = workspace_node.node_id.unwrap();
  71. let path = self.folder_pad.tree.read().path_from_node_id(node_id);
  72. assert_eq!(path, expected_path);
  73. },
  74. FolderNodePadScript::AssertNumberOfWorkspace { expected } => {
  75. assert_eq!(self.folder_pad.workspaces.len(), expected);
  76. },
  77. FolderNodePadScript::CreateApp { id, name } => {
  78. let app_node = AppNode::new(self.folder_pad.tree.clone(), id, name);
  79. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  80. workspace_node.add_app(app_node).unwrap();
  81. },
  82. FolderNodePadScript::DeleteApp { id } => {
  83. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  84. workspace_node.remove_app(&id);
  85. },
  86. FolderNodePadScript::UpdateApp { id, name } => {
  87. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  88. workspace_node.get_mut_app(&id).unwrap().set_name(name);
  89. },
  90. FolderNodePadScript::AssertApp { id, expected } => {
  91. let workspace_node = self.folder_pad.get_workspace("1").unwrap();
  92. let app = workspace_node.get_app(&id);
  93. match expected {
  94. None => assert!(app.is_none()),
  95. Some(expected_app) => {
  96. let app_node = app.unwrap();
  97. assert_eq!(expected_app.name, app_node.get_name().unwrap());
  98. assert_eq!(expected_app.id, app_node.get_id().unwrap());
  99. },
  100. }
  101. },
  102. FolderNodePadScript::AssertAppContent { id, name } => {
  103. let workspace_node = self.folder_pad.get_workspace("1").unwrap();
  104. let app = workspace_node.get_app(&id).unwrap();
  105. assert_eq!(app.get_name().unwrap(), name)
  106. }, // FolderNodePadScript::AssertNumberOfApps { expected } => {
  107. // let workspace_node = self.folder_pad.get_workspace("1").unwrap();
  108. // assert_eq!(workspace_node.apps.len(), expected);
  109. // }
  110. }
  111. }
  112. }