script.rs 4.0 KB

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