| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | use crate::helper::{spawn_app, TestApp};use flowy_workspace::entities::{    app::{App, ColorStyle, CreateAppParams, DeleteAppParams, QueryAppParams, UpdateAppParams},    view::{CreateViewParams, DeleteViewParams, QueryViewParams, UpdateViewParams, View, ViewType},    workspace::{        CreateWorkspaceParams,        DeleteWorkspaceParams,        QueryWorkspaceParams,        UpdateWorkspaceParams,        Workspace,    },};#[actix_rt::test]async fn workspace_create() {    let app = spawn_app().await;    let (workspace, _) = create_test_workspace(&app).await;    log::info!("{:?}", workspace);}#[actix_rt::test]async fn workspace_read() {    let app = spawn_app().await;    let (workspace_1, token) = create_test_workspace(&app).await;    let read_params = QueryWorkspaceParams::new().workspace_id(&workspace_1.id);    log::info!("{:?}", app.read_workspaces(read_params, &token).await);}#[actix_rt::test]async fn workspace_read_with_belongs() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let _ = create_test_app(&application, &workspace.id, &token).await;    let _ = create_test_app(&application, &workspace.id, &token).await;    let _ = create_test_app(&application, &workspace.id, &token).await;    let read_params = QueryWorkspaceParams::new().workspace_id(&workspace.id);    let workspaces = application.read_workspaces(read_params, &token).await;    let workspace = workspaces.items.first().unwrap();    assert_eq!(workspace.apps.len(), 3);}#[actix_rt::test]async fn workspace_update() {    let app = spawn_app().await;    let (workspace_1, token) = create_test_workspace(&app).await;    let update_params = UpdateWorkspaceParams {        id: workspace_1.id.clone(),        name: Some("workspace 2".to_string()),        desc: Some("rename workspace description".to_string()),    };    app.update_workspace(update_params, &token).await;    let read_params = QueryWorkspaceParams::new().workspace_id(&workspace_1.id);    let workspace_2 = app.read_workspaces(read_params, &token).await;    log::info!("{:?}", workspace_2);}#[actix_rt::test]async fn workspace_delete() {    let app = spawn_app().await;    let (workspace, token) = create_test_workspace(&app).await;    let delete_params = DeleteWorkspaceParams {        workspace_id: workspace.id.clone(),    };    let _ = app.delete_workspace(delete_params, &token).await;    let read_params = QueryWorkspaceParams::new().workspace_id(&workspace.id);    let repeated_workspace = app.read_workspaces(read_params, &token).await;    assert_eq!(repeated_workspace.len(), 0);}async fn create_test_workspace(app: &TestApp) -> (Workspace, String) {    let response = app.register_test_user().await;    let params = CreateWorkspaceParams {        name: "My first workspace".to_string(),        desc: "This is my first workspace".to_string(),    };    let workspace = app.create_workspace(params, &response.token).await;    (workspace, response.token)}#[actix_rt::test]async fn app_create() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    log::info!("{:?}", app);}#[actix_rt::test]async fn app_read() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let read_params = QueryAppParams::new(&app.id);    log::info!(        "{:?}",        application.read_app(read_params, &token).await.unwrap()    );}#[actix_rt::test]async fn app_read_with_belongs() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let _ = create_test_view(&application, &app.id, &token).await;    let _ = create_test_view(&application, &app.id, &token).await;    let read_params = QueryAppParams::new(&app.id).read_belongings();    let app = application.read_app(read_params, &token).await.unwrap();    assert_eq!(app.belongings.len(), 2);}#[actix_rt::test]async fn app_read_with_belongs_in_trash() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let _ = create_test_view(&application, &app.id, &token).await;    let view = create_test_view(&application, &app.id, &token).await;    let update_params = UpdateViewParams::new(&view.id).trash();    application.update_view(update_params, &token).await;    let read_params = QueryAppParams::new(&app.id).read_belongings();    let app = application.read_app(read_params, &token).await.unwrap();    assert_eq!(app.belongings.len(), 1);}#[actix_rt::test]async fn app_update() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let update_params = UpdateAppParams::new(&app.id).name("flowy");    application.update_app(update_params, &token).await;    let read_params = QueryAppParams::new(&app.id);    let app = application.read_app(read_params, &token).await.unwrap();    log::info!("{:?}", app);}#[actix_rt::test]async fn app_delete() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let delete_params = DeleteAppParams {        app_id: app.id.clone(),    };    application.delete_app(delete_params, &token).await;    let read_params = QueryAppParams::new(&app.id);    assert_eq!(        application.read_app(read_params, &token).await.is_none(),        true    );}async fn create_test_app(app: &TestApp, workspace_id: &str, token: &str) -> App {    let params = CreateAppParams {        workspace_id: workspace_id.to_owned(),        name: "My first app".to_string(),        desc: "This is my first app".to_string(),        color_style: ColorStyle::default(),    };    let app = app.create_app(params, token).await;    app}#[actix_rt::test]async fn view_create() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let view = create_test_view(&application, &app.id, &token).await;    log::info!("{:?}", view);}#[actix_rt::test]async fn view_update() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let view = create_test_view(&application, &app.id, &token).await;    // update    let update_params = UpdateViewParams::new(&view.id)        .trash()        .name("new view name");    application.update_view(update_params, &token).await;    // read    let read_params = QueryViewParams::new(&view.id).trash();    let view = application.read_view(read_params, &token).await;    log::info!("{:?}", view);}#[actix_rt::test]async fn view_delete() {    let application = spawn_app().await;    let (workspace, token) = create_test_workspace(&application).await;    let app = create_test_app(&application, &workspace.id, &token).await;    let view = create_test_view(&application, &app.id, &token).await;    // delete    let delete_params = DeleteViewParams {        view_id: view.id.clone(),    };    application.delete_view(delete_params, &token).await;    // read    let read_params = QueryViewParams::new(&view.id).trash();    assert_eq!(        application.read_view(read_params, &token).await.is_none(),        true    );}async fn create_test_view(application: &TestApp, app_id: &str, token: &str) -> View {    let params = CreateViewParams {        belong_to_id: app_id.to_string(),        name: "My first view".to_string(),        desc: "This is my first view".to_string(),        thumbnail: "http://1.png".to_string(),        view_type: ViewType::Doc,    };    let app = application.create_view(params, token).await;    app}#[actix_rt::test]async fn workspace_list_read() {    let application = spawn_app().await;    let response = application.register_test_user().await;    for i in 0..3 {        let params = CreateWorkspaceParams {            name: format!("{} workspace", i),            desc: format!("This is my {} workspace", i),        };        let _ = application.create_workspace(params, &response.token).await;    }    let read_params = QueryWorkspaceParams::new();    let workspaces = application        .read_workspaces(read_params, &response.token)        .await;    assert_eq!(workspaces.len(), 4);}
 |