mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-11-03 19:43:52 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			259 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			259 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
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);
 | 
						|
}
 |