| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | use flowy_client_sync::client_folder::{AppNode, FolderNodePad, WorkspaceNode};use folder_model::AppRevision;use lib_ot::core::Path;pub enum FolderNodePadScript {  CreateWorkspace {    id: String,    name: String,  },  DeleteWorkspace {    id: String,  },  AssertPathOfWorkspace {    id: String,    expected_path: Path,  },  AssertNumberOfWorkspace {    expected: usize,  },  CreateApp {    id: String,    name: String,  },  DeleteApp {    id: String,  },  UpdateApp {    id: String,    name: String,  },  AssertApp {    id: String,    expected: Option<AppRevision>,  },  AssertAppContent {    id: String,    name: String,  },  // AssertNumberOfApps { expected: usize },}pub struct FolderNodePadTest {  folder_pad: FolderNodePad,}impl FolderNodePadTest {  pub fn new() -> FolderNodePadTest {    let mut folder_pad = FolderNodePad::default();    let workspace = WorkspaceNode::new(      folder_pad.tree.clone(),      "1".to_string(),      "workspace name".to_string(),    );    folder_pad.workspaces.add_workspace(workspace).unwrap();    Self { folder_pad }  }  pub fn run_scripts(&mut self, scripts: Vec<FolderNodePadScript>) {    for script in scripts {      self.run_script(script);    }  }  pub fn run_script(&mut self, script: FolderNodePadScript) {    match script {      FolderNodePadScript::CreateWorkspace { id, name } => {        let workspace = WorkspaceNode::new(self.folder_pad.tree.clone(), id, name);        self.folder_pad.workspaces.add_workspace(workspace).unwrap();      },      FolderNodePadScript::DeleteWorkspace { id } => {        self.folder_pad.workspaces.remove_workspace(id);      },      FolderNodePadScript::AssertPathOfWorkspace { id, expected_path } => {        let workspace_node: &WorkspaceNode = self.folder_pad.workspaces.get_workspace(id).unwrap();        let node_id = workspace_node.node_id.unwrap();        let path = self.folder_pad.tree.read().path_from_node_id(node_id);        assert_eq!(path, expected_path);      },      FolderNodePadScript::AssertNumberOfWorkspace { expected } => {        assert_eq!(self.folder_pad.workspaces.len(), expected);      },      FolderNodePadScript::CreateApp { id, name } => {        let app_node = AppNode::new(self.folder_pad.tree.clone(), id, name);        let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();        workspace_node.add_app(app_node).unwrap();      },      FolderNodePadScript::DeleteApp { id } => {        let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();        workspace_node.remove_app(&id);      },      FolderNodePadScript::UpdateApp { id, name } => {        let workspace_node = self.folder_pad.get_mut_workspace("1").unwrap();        workspace_node.get_mut_app(&id).unwrap().set_name(name);      },      FolderNodePadScript::AssertApp { id, expected } => {        let workspace_node = self.folder_pad.get_workspace("1").unwrap();        let app = workspace_node.get_app(&id);        match expected {          None => assert!(app.is_none()),          Some(expected_app) => {            let app_node = app.unwrap();            assert_eq!(expected_app.name, app_node.get_name().unwrap());            assert_eq!(expected_app.id, app_node.get_id().unwrap());          },        }      },      FolderNodePadScript::AssertAppContent { id, name } => {        let workspace_node = self.folder_pad.get_workspace("1").unwrap();        let app = workspace_node.get_app(&id).unwrap();        assert_eq!(app.get_name().unwrap(), name)      }, // FolderNodePadScript::AssertNumberOfApps { expected } => {         //     let workspace_node = self.folder_pad.get_workspace("1").unwrap();         //     assert_eq!(workspace_node.apps.len(), expected);         // }    }  }}
 |