script.rs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. AssertApp { id: String, expected: Option<AppRevision> },
  8. AssertAppContent { id: String, name: String },
  9. AssertNumberOfApps { expected: usize },
  10. }
  11. pub struct FolderNodePadTest {
  12. folder_pad: FolderNodePad,
  13. }
  14. impl FolderNodePadTest {
  15. pub fn new() -> FolderNodePadTest {
  16. let mut folder_pad = FolderNodePad::default();
  17. let workspace = WorkspaceRevision {
  18. id: "1".to_string(),
  19. name: "workspace name".to_string(),
  20. desc: "".to_string(),
  21. apps: vec![],
  22. modified_time: 0,
  23. create_time: 0,
  24. };
  25. let _ = folder_pad.add_workspace(workspace).unwrap();
  26. Self { folder_pad }
  27. }
  28. pub fn run_scripts(&mut self, scripts: Vec<FolderNodePadScript>) {
  29. for script in scripts {
  30. self.run_script(script);
  31. }
  32. }
  33. pub fn run_script(&mut self, script: FolderNodePadScript) {
  34. match script {
  35. FolderNodePadScript::CreateApp { id, name } => {
  36. let revision = AppRevision {
  37. id,
  38. workspace_id: "1".to_string(),
  39. name,
  40. desc: "".to_string(),
  41. belongings: vec![],
  42. version: 0,
  43. modified_time: 0,
  44. create_time: 0,
  45. };
  46. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  47. let workspace_node = Arc::make_mut(workspace_node);
  48. let _ = workspace_node.add_app(revision).unwrap();
  49. }
  50. FolderNodePadScript::DeleteApp { id } => {
  51. let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();
  52. let workspace_node = Arc::make_mut(workspace_node);
  53. workspace_node.remove_app(&id);
  54. }
  55. FolderNodePadScript::AssertApp { id, expected } => {
  56. let workspace_node = self.folder_pad.get_workspace("1").unwrap();
  57. let app = workspace_node.get_app(&id);
  58. match expected {
  59. None => assert!(app.is_none()),
  60. Some(expected_app) => {
  61. let app_node = app.unwrap();
  62. assert_eq!(expected_app.name, app_node.get_name().unwrap());
  63. assert_eq!(expected_app.id, app_node.id);
  64. }
  65. }
  66. }
  67. FolderNodePadScript::AssertAppContent { id, name } => {
  68. let workspace_node = self.folder_pad.get_workspace("1").unwrap();
  69. let app = workspace_node.get_app(&id).unwrap();
  70. assert_eq!(app.get_name().unwrap(), name)
  71. }
  72. FolderNodePadScript::AssertNumberOfApps { expected } => {
  73. let workspace_node = self.folder_pad.get_workspace("1").unwrap();
  74. assert_eq!(workspace_node.get_all_apps().len(), expected);
  75. }
  76. }
  77. }
  78. }