AppFlowy/backend/tests/api/workspace.rs

259 lines
8.8 KiB
Rust
Raw Normal View History

2021-08-24 13:38:53 +00:00
use crate::helper::{spawn_app, TestApp};
2021-08-25 09:34:20 +00:00
use flowy_workspace::entities::{
app::{App, ColorStyle, CreateAppParams, DeleteAppParams, QueryAppParams, UpdateAppParams},
2021-08-25 13:33:29 +00:00
view::{CreateViewParams, DeleteViewParams, QueryViewParams, UpdateViewParams, View, ViewType},
2021-08-25 09:34:20 +00:00
workspace::{
CreateWorkspaceParams,
DeleteWorkspaceParams,
QueryWorkspaceParams,
UpdateWorkspaceParams,
Workspace,
},
};
2021-08-24 13:38:53 +00:00
#[actix_rt::test]
async fn workspace_create() {
let app = spawn_app().await;
2021-08-25 09:34:20 +00:00
let (workspace, _) = create_test_workspace(&app).await;
log::info!("{:?}", workspace);
}
2021-08-24 13:38:53 +00:00
2021-08-25 09:34:20 +00:00
#[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);
2021-08-24 13:38:53 +00:00
}
2021-08-26 02:19:50 +00:00
#[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;
2021-08-26 02:19:50 +00:00
let read_params = QueryWorkspaceParams::new().workspace_id(&workspace.id);
let workspaces = application.read_workspaces(read_params, &token).await;
2021-08-27 15:53:53 +00:00
let workspace = workspaces.items.first().unwrap();
2021-08-26 02:19:50 +00:00
assert_eq!(workspace.apps.len(), 3);
}
2021-08-24 13:38:53 +00:00
#[actix_rt::test]
2021-08-25 09:34:20 +00:00
async fn workspace_update() {
2021-08-24 13:38:53 +00:00
let app = spawn_app().await;
let (workspace_1, token) = create_test_workspace(&app).await;
2021-08-25 09:34:20 +00:00
let update_params = UpdateWorkspaceParams {
id: workspace_1.id.clone(),
name: Some("workspace 2".to_string()),
desc: Some("rename workspace description".to_string()),
2021-08-24 13:38:53 +00:00
};
app.update_workspace(update_params, &token).await;
2021-08-24 13:38:53 +00:00
let read_params = QueryWorkspaceParams::new().workspace_id(&workspace_1.id);
let workspace_2 = app.read_workspaces(read_params, &token).await;
2021-08-24 13:38:53 +00:00
log::info!("{:?}", workspace_2);
}
2021-08-25 09:34:20 +00:00
#[actix_rt::test]
async fn workspace_delete() {
let app = spawn_app().await;
let (workspace, token) = create_test_workspace(&app).await;
2021-08-25 09:34:20 +00:00
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;
2021-08-27 15:53:53 +00:00
assert_eq!(repeated_workspace.len(), 0);
2021-08-25 09:34:20 +00:00
}
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)
2021-08-25 09:34:20 +00:00
}
#[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;
2021-08-25 09:34:20 +00:00
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;
2021-08-26 09:58:59 +00:00
let read_params = QueryAppParams::new(&app.id);
log::info!(
"{:?}",
application.read_app(read_params, &token).await.unwrap()
);
2021-08-25 09:34:20 +00:00
}
2021-08-26 02:19:50 +00:00
#[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;
2021-08-26 02:19:50 +00:00
let _ = create_test_view(&application, &app.id, &token).await;
let _ = create_test_view(&application, &app.id, &token).await;
2021-08-26 02:19:50 +00:00
2021-08-26 09:58:59 +00:00
let read_params = QueryAppParams::new(&app.id).read_belongings();
let app = application.read_app(read_params, &token).await.unwrap();
2021-08-26 02:19:50 +00:00
assert_eq!(app.belongings.len(), 2);
}
2021-08-26 09:58:59 +00:00
#[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;
2021-08-26 09:58:59 +00:00
let _ = create_test_view(&application, &app.id, &token).await;
let view = create_test_view(&application, &app.id, &token).await;
2021-08-26 09:58:59 +00:00
let update_params = UpdateViewParams::new(&view.id).trash();
application.update_view(update_params, &token).await;
2021-08-26 09:58:59 +00:00
let read_params = QueryAppParams::new(&app.id).read_belongings();
let app = application.read_app(read_params, &token).await.unwrap();
2021-08-26 09:58:59 +00:00
assert_eq!(app.belongings.len(), 1);
}
2021-08-25 09:34:20 +00:00
#[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;
2021-08-25 09:34:20 +00:00
2021-08-26 09:58:59 +00:00
let update_params = UpdateAppParams::new(&app.id).name("flowy");
application.update_app(update_params, &token).await;
2021-08-25 09:34:20 +00:00
2021-08-26 09:58:59 +00:00
let read_params = QueryAppParams::new(&app.id);
let app = application.read_app(read_params, &token).await.unwrap();
2021-08-25 09:34:20 +00:00
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;
2021-08-25 09:34:20 +00:00
let delete_params = DeleteAppParams {
app_id: app.id.clone(),
};
application.delete_app(delete_params, &token).await;
2021-08-25 09:34:20 +00:00
2021-08-26 09:58:59 +00:00
let read_params = QueryAppParams::new(&app.id);
assert_eq!(
application.read_app(read_params, &token).await.is_none(),
true
);
2021-08-25 09:34:20 +00:00
}
async fn create_test_app(app: &TestApp, workspace_id: &str, token: &str) -> App {
2021-08-25 09:34:20 +00:00
let params = CreateAppParams {
2021-08-26 02:19:50 +00:00
workspace_id: workspace_id.to_owned(),
2021-08-25 09:34:20 +00:00
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;
2021-08-25 09:34:20 +00:00
app
}
2021-08-25 13:33:29 +00:00
#[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;
2021-08-26 02:19:50 +00:00
let view = create_test_view(&application, &app.id, &token).await;
2021-08-25 13:33:29 +00:00
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;
2021-08-25 13:33:29 +00:00
// update
2021-08-26 09:58:59 +00:00
let update_params = UpdateViewParams::new(&view.id)
.trash()
.name("new view name");
application.update_view(update_params, &token).await;
2021-08-25 13:33:29 +00:00
// read
2021-08-26 09:58:59 +00:00
let read_params = QueryViewParams::new(&view.id).trash();
let view = application.read_view(read_params, &token).await;
2021-08-25 13:33:29 +00:00
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;
2021-08-25 13:33:29 +00:00
// delete
let delete_params = DeleteViewParams {
view_id: view.id.clone(),
};
application.delete_view(delete_params, &token).await;
2021-08-25 13:33:29 +00:00
// read
2021-08-26 09:58:59 +00:00
let read_params = QueryViewParams::new(&view.id).trash();
assert_eq!(
application.read_view(read_params, &token).await.is_none(),
true
);
2021-08-25 13:33:29 +00:00
}
async fn create_test_view(application: &TestApp, app_id: &str, token: &str) -> View {
2021-08-25 13:33:29 +00:00
let params = CreateViewParams {
2021-08-26 02:19:50 +00:00
belong_to_id: app_id.to_string(),
2021-08-25 13:33:29 +00:00
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;
2021-08-25 13:33:29 +00:00
app
}
2021-08-26 09:58:59 +00:00
#[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;
2021-08-26 09:58:59 +00:00
}
let read_params = QueryWorkspaceParams::new();
let workspaces = application
.read_workspaces(read_params, &response.token)
.await;
2021-08-26 09:58:59 +00:00
assert_eq!(workspaces.len(), 4);
}