script.rs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. use flowy_sync::client_folder::FolderNodePad;
  2. use folder_rev_model::{AppRevision, WorkspaceRevision};
  3. use std::sync::Arc;
  4. pub enum FolderNodePadScript {
  5. CreateApp { id: String, name: String },
  6. DeleteApp { id: String },
  7. UpdateApp { id: String, name: String },
  8. AssertApp { id: String, expected: Option<AppRevision> },
  9. AssertAppContent { id: String, name: String },
  10. AssertNumberOfApps { expected: usize },
  11. }
  12. pub struct FolderNodePadTest {
  13. folder_pad: FolderNodePad,
  14. }
  15. impl FolderNodePadTest {
  16. pub fn new() -> FolderNodePadTest {
  17. let mut folder_pad = FolderNodePad::default();
  18. let workspace = WorkspaceRevision {
  19. id: "1".to_string(),
  20. name: "workspace name".to_string(),
  21. desc: "".to_string(),
  22. apps: vec![],
  23. modified_time: 0,
  24. create_time: 0,
  25. };
  26. let _ = folder_pad.add_workspace(workspace).unwrap();
  27. Self { folder_pad }
  28. }
  29. pub fn run_scripts(&mut self, scripts: Vec<FolderNodePadScript>) {
  30. for script in scripts {
  31. self.run_script(script);
  32. }
  33. }
  34. pub fn run_script(&mut self, script: FolderNodePadScript) {
  35. match script {
  36. FolderNodePadScript::CreateApp { id, name } => {
  37. let revision = AppRevision {
  38. id,
  39. workspace_id: "1".to_string(),
  40. name,
  41. desc: "".to_string(),
  42. belongings: vec![],
  43. version: 0,
  44. modified_time: 0,
  45. create_time: 0,
  46. };
  47. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  48. let workspace_node = Arc::make_mut(workspace_node);
  49. let _ = workspace_node.add_app(revision).unwrap();
  50. }
  51. FolderNodePadScript::DeleteApp { id } => {
  52. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  53. let workspace_node = Arc::make_mut(workspace_node);
  54. workspace_node.remove_app(&id);
  55. }
  56. FolderNodePadScript::UpdateApp { id, name } => {
  57. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  58. let workspace_node = Arc::make_mut(workspace_node);
  59. let app_node = Arc::make_mut(workspace_node.get_mut_app(&id).unwrap());
  60. app_node.set_name(name).unwrap();
  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.id);
  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. }
  79. FolderNodePadScript::AssertNumberOfApps { expected } => {
  80. let workspace_node = self.folder_pad.get_workspace("1").unwrap();
  81. assert_eq!(workspace_node.get_all_apps().len(), expected);
  82. }
  83. }
  84. }
  85. }