| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 | 
							- use crate::script::{invalid_workspace_name_test_case, FolderScript::*, FolderTest};
 
- use flowy_folder::entities::view::ViewDataFormatPB;
 
- use flowy_folder::entities::workspace::CreateWorkspacePayloadPB;
 
- use flowy_revision_persistence::RevisionState;
 
- use flowy_test::{event_builder::*, FlowySDKTest};
 
- #[tokio::test]
 
- async fn workspace_read_all() {
 
-     let mut test = FolderTest::new().await;
 
-     test.run_scripts(vec![ReadAllWorkspaces]).await;
 
-     assert!(!test.all_workspace.is_empty());
 
- }
 
- #[tokio::test]
 
- async fn workspace_create() {
 
-     let mut test = FolderTest::new().await;
 
-     let name = "My new workspace".to_owned();
 
-     let desc = "Daily routines".to_owned();
 
-     test.run_scripts(vec![CreateWorkspace {
 
-         name: name.clone(),
 
-         desc: desc.clone(),
 
-     }])
 
-     .await;
 
-     let workspace = test.workspace.clone();
 
-     assert_eq!(workspace.name, name);
 
-     assert_eq!(workspace.desc, desc);
 
-     test.run_scripts(vec![
 
-         ReadWorkspace(Some(workspace.id.clone())),
 
-         AssertWorkspace(workspace),
 
-     ])
 
-     .await;
 
- }
 
- #[tokio::test]
 
- async fn workspace_read() {
 
-     let mut test = FolderTest::new().await;
 
-     let workspace = test.workspace.clone();
 
-     test.run_scripts(vec![
 
-         ReadWorkspace(Some(workspace.id.clone())),
 
-         AssertWorkspace(workspace),
 
-     ])
 
-     .await;
 
- }
 
- #[tokio::test]
 
- async fn workspace_create_with_apps() {
 
-     let mut test = FolderTest::new().await;
 
-     test.run_scripts(vec![CreateApp {
 
-         name: "App".to_string(),
 
-         desc: "App description".to_string(),
 
-     }])
 
-     .await;
 
-     let app = test.app.clone();
 
-     test.run_scripts(vec![ReadApp(app.id)]).await;
 
- }
 
- #[tokio::test]
 
- async fn workspace_create_with_invalid_name() {
 
-     for (name, code) in invalid_workspace_name_test_case() {
 
-         let sdk = FlowySDKTest::default();
 
-         let request = CreateWorkspacePayloadPB {
 
-             name,
 
-             desc: "".to_owned(),
 
-         };
 
-         assert_eq!(
 
-             FolderEventBuilder::new(sdk)
 
-                 .event(flowy_folder::event_map::FolderEvent::CreateWorkspace)
 
-                 .payload(request)
 
-                 .async_send()
 
-                 .await
 
-                 .error()
 
-                 .code,
 
-             code.value()
 
-         )
 
-     }
 
- }
 
- #[tokio::test]
 
- #[should_panic]
 
- async fn app_delete() {
 
-     let mut test = FolderTest::new().await;
 
-     let app = test.app.clone();
 
-     test.run_scripts(vec![DeleteApp, ReadApp(app.id)]).await;
 
- }
 
- #[tokio::test]
 
- async fn app_delete_then_restore() {
 
-     let mut test = FolderTest::new().await;
 
-     let app = test.app.clone();
 
-     test.run_scripts(vec![
 
-         DeleteApp,
 
-         RestoreAppFromTrash,
 
-         ReadApp(app.id.clone()),
 
-         AssertApp(app),
 
-     ])
 
-     .await;
 
- }
 
- #[tokio::test]
 
- async fn app_read() {
 
-     let mut test = FolderTest::new().await;
 
-     let app = test.app.clone();
 
-     test.run_scripts(vec![ReadApp(app.id.clone()), AssertApp(app)]).await;
 
- }
 
- #[tokio::test]
 
- async fn app_update() {
 
-     let mut test = FolderTest::new().await;
 
-     let app = test.app.clone();
 
-     let new_name = "😁 hell world".to_owned();
 
-     assert_ne!(app.name, new_name);
 
-     test.run_scripts(vec![
 
-         UpdateApp {
 
-             name: Some(new_name.clone()),
 
-             desc: None,
 
-         },
 
-         ReadApp(app.id),
 
-     ])
 
-     .await;
 
-     assert_eq!(test.app.name, new_name);
 
- }
 
- #[tokio::test]
 
- async fn app_create_with_view() {
 
-     let mut test = FolderTest::new().await;
 
-     let mut app = test.app.clone();
 
-     test.run_scripts(vec![
 
-         CreateView {
 
-             name: "View A".to_owned(),
 
-             desc: "View A description".to_owned(),
 
-             data_type: ViewDataFormatPB::DeltaFormat,
 
-         },
 
-         CreateView {
 
-             name: "Grid".to_owned(),
 
-             desc: "Grid description".to_owned(),
 
-             data_type: ViewDataFormatPB::DatabaseFormat,
 
-         },
 
-         ReadApp(app.id),
 
-     ])
 
-     .await;
 
-     app = test.app.clone();
 
-     assert_eq!(app.belongings.len(), 3);
 
-     assert_eq!(app.belongings[1].name, "View A");
 
-     assert_eq!(app.belongings[2].name, "Grid")
 
- }
 
- #[tokio::test]
 
- async fn view_update() {
 
-     let mut test = FolderTest::new().await;
 
-     let view = test.view.clone();
 
-     let new_name = "😁 123".to_owned();
 
-     assert_ne!(view.name, new_name);
 
-     test.run_scripts(vec![
 
-         UpdateView {
 
-             name: Some(new_name.clone()),
 
-             desc: None,
 
-         },
 
-         ReadView(view.id),
 
-     ])
 
-     .await;
 
-     assert_eq!(test.view.name, new_name);
 
- }
 
- #[tokio::test]
 
- #[should_panic]
 
- async fn view_delete() {
 
-     let mut test = FolderTest::new().await;
 
-     let view = test.view.clone();
 
-     test.run_scripts(vec![DeleteView, ReadView(view.id)]).await;
 
- }
 
- #[tokio::test]
 
- async fn view_delete_then_restore() {
 
-     let mut test = FolderTest::new().await;
 
-     let view = test.view.clone();
 
-     test.run_scripts(vec![
 
-         DeleteView,
 
-         RestoreViewFromTrash,
 
-         ReadView(view.id.clone()),
 
-         AssertView(view),
 
-     ])
 
-     .await;
 
- }
 
- #[tokio::test]
 
- async fn view_delete_all() {
 
-     let mut test = FolderTest::new().await;
 
-     let app = test.app.clone();
 
-     test.run_scripts(vec![
 
-         CreateView {
 
-             name: "View A".to_owned(),
 
-             desc: "View A description".to_owned(),
 
-             data_type: ViewDataFormatPB::DeltaFormat,
 
-         },
 
-         CreateView {
 
-             name: "Grid".to_owned(),
 
-             desc: "Grid description".to_owned(),
 
-             data_type: ViewDataFormatPB::DatabaseFormat,
 
-         },
 
-         ReadApp(app.id.clone()),
 
-     ])
 
-     .await;
 
-     assert_eq!(test.app.belongings.len(), 3);
 
-     let view_ids = test
 
-         .app
 
-         .belongings
 
-         .iter()
 
-         .map(|view| view.id.clone())
 
-         .collect::<Vec<String>>();
 
-     test.run_scripts(vec![DeleteViews(view_ids), ReadApp(app.id), ReadTrash])
 
-         .await;
 
-     assert_eq!(test.app.belongings.len(), 0);
 
-     assert_eq!(test.trash.len(), 3);
 
- }
 
- #[tokio::test]
 
- async fn view_delete_all_permanent() {
 
-     let mut test = FolderTest::new().await;
 
-     let app = test.app.clone();
 
-     test.run_scripts(vec![
 
-         CreateView {
 
-             name: "View A".to_owned(),
 
-             desc: "View A description".to_owned(),
 
-             data_type: ViewDataFormatPB::DeltaFormat,
 
-         },
 
-         ReadApp(app.id.clone()),
 
-     ])
 
-     .await;
 
-     let view_ids = test
 
-         .app
 
-         .belongings
 
-         .iter()
 
-         .map(|view| view.id.clone())
 
-         .collect::<Vec<String>>();
 
-     test.run_scripts(vec![DeleteViews(view_ids), ReadApp(app.id), DeleteAllTrash, ReadTrash])
 
-         .await;
 
-     assert_eq!(test.app.belongings.len(), 0);
 
-     assert_eq!(test.trash.len(), 0);
 
- }
 
- #[tokio::test]
 
- async fn folder_sync_revision_state() {
 
-     let mut test = FolderTest::new().await;
 
-     test.run_scripts(vec![
 
-         AssertRevisionState {
 
-             rev_id: 1,
 
-             state: RevisionState::Sync,
 
-         },
 
-         AssertNextSyncRevId(Some(1)),
 
-         AssertRevisionState {
 
-             rev_id: 1,
 
-             state: RevisionState::Ack,
 
-         },
 
-     ])
 
-     .await;
 
- }
 
- #[tokio::test]
 
- async fn folder_sync_revision_seq() {
 
-     let mut test = FolderTest::new().await;
 
-     test.run_scripts(vec![
 
-         AssertRevisionState {
 
-             rev_id: 1,
 
-             state: RevisionState::Sync,
 
-         },
 
-         AssertRevisionState {
 
-             rev_id: 2,
 
-             state: RevisionState::Sync,
 
-         },
 
-         AssertNextSyncRevId(Some(1)),
 
-         AssertNextSyncRevId(Some(2)),
 
-         AssertRevisionState {
 
-             rev_id: 1,
 
-             state: RevisionState::Ack,
 
-         },
 
-         AssertRevisionState {
 
-             rev_id: 2,
 
-             state: RevisionState::Ack,
 
-         },
 
-     ])
 
-     .await;
 
- }
 
- // #[tokio::test]
 
- // async fn folder_sync_revision_with_new_app() {
 
- //     let mut test = FolderTest::new().await;
 
- //     let app_name = "AppFlowy contributors".to_owned();
 
- //     let app_desc = "Welcome to be a AppFlowy contributor".to_owned();
 
- //
 
- //     test.run_scripts(vec![
 
- //         AssertNextSyncRevId(Some(1)),
 
- //         AssertNextSyncRevId(Some(2)),
 
- //         CreateApp {
 
- //             name: app_name.clone(),
 
- //             desc: app_desc.clone(),
 
- //         },
 
- //         AssertCurrentRevId(3),
 
- //         AssertNextSyncRevId(Some(3)),
 
- //         AssertNextSyncRevId(None),
 
- //     ])
 
- //     .await;
 
- //
 
- //     let app = test.app.clone();
 
- //     assert_eq!(app.name, app_name);
 
- //     assert_eq!(app.desc, app_desc);
 
- //     test.run_scripts(vec![ReadApp(app.id.clone()), AssertApp(app)]).await;
 
- // }
 
- // #[tokio::test]
 
- // async fn folder_sync_revision_with_new_view() {
 
- //     let mut test = FolderTest::new().await;
 
- //     let view_name = "AppFlowy features".to_owned();
 
- //     let view_desc = "😁".to_owned();
 
- //
 
- //     test.run_scripts(vec![
 
- //         AssertNextSyncRevId(Some(1)),
 
- //         AssertNextSyncRevId(Some(2)),
 
- //         CreateView {
 
- //             name: view_name.clone(),
 
- //             desc: view_desc.clone(),
 
- //             data_type: ViewDataFormatPB::DeltaFormat,
 
- //         },
 
- //         AssertCurrentRevId(3),
 
- //         AssertNextSyncRevId(Some(3)),
 
- //         AssertNextSyncRevId(None),
 
- //     ])
 
- //     .await;
 
- //
 
- //     let view = test.view.clone();
 
- //     assert_eq!(view.name, view_name);
 
- //     test.run_scripts(vec![ReadView(view.id.clone()), AssertView(view)])
 
- //         .await;
 
- // }
 
 
  |