AppFlowy-Cloud/tests/collab/member_crud.rs

156 lines
4.2 KiB
Rust

use crate::collab::util::test_encode_collab_v1;
use client_api_test::{generate_unique_registered_user_client, workspace_id_from_client};
use collab_entity::CollabType;
use database_entity::dto::{
AFAccessLevel, CreateCollabParams, InsertCollabMemberParams, QueryCollabMembers,
UpdateCollabMemberParams, WorkspaceCollabIdentify,
};
use uuid::Uuid;
#[tokio::test]
async fn update_collab_member_permission_test() {
let (c, _user) = generate_unique_registered_user_client().await;
let workspace_id = workspace_id_from_client(&c).await;
let object_id = Uuid::new_v4().to_string();
let encode_collab = test_encode_collab_v1(&object_id, "title", "hello world")
.encode_to_bytes()
.unwrap();
let uid = c.get_profile().await.unwrap().uid;
c.create_collab(CreateCollabParams {
object_id: object_id.clone(),
encoded_collab_v1: encode_collab.clone(),
collab_type: CollabType::Unknown,
workspace_id: workspace_id.clone(),
})
.await
.unwrap();
c.update_collab_member(UpdateCollabMemberParams {
uid,
workspace_id: workspace_id.clone(),
object_id: object_id.clone(),
access_level: AFAccessLevel::ReadOnly,
})
.await
.unwrap();
let member = c
.get_collab_member(WorkspaceCollabIdentify {
uid,
object_id,
workspace_id,
})
.await
.unwrap();
assert_eq!(member.permission.access_level, AFAccessLevel::ReadOnly);
}
#[tokio::test]
async fn add_collab_member_test() {
let (c_1, _user) = generate_unique_registered_user_client().await;
let workspace_id = workspace_id_from_client(&c_1).await;
let object_id = Uuid::new_v4().to_string();
let encode_collab = test_encode_collab_v1(&object_id, "title", "hello world");
c_1
.create_collab(CreateCollabParams {
object_id: object_id.clone(),
encoded_collab_v1: encode_collab.encode_to_bytes().unwrap(),
collab_type: CollabType::Unknown,
workspace_id: workspace_id.clone(),
})
.await
.unwrap();
// create new client
let (c_2, _user) = generate_unique_registered_user_client().await;
let uid_2 = c_2.get_profile().await.unwrap().uid;
// add new member
c_1
.add_collab_member(InsertCollabMemberParams {
uid: uid_2,
workspace_id: workspace_id.clone(),
object_id: object_id.clone(),
access_level: AFAccessLevel::ReadAndComment,
})
.await
.unwrap();
// check the member is added and its permission is correct
let member = c_1
.get_collab_member(WorkspaceCollabIdentify {
uid: uid_2,
object_id,
workspace_id,
})
.await
.unwrap();
assert_eq!(
member.permission.access_level,
AFAccessLevel::ReadAndComment
);
}
#[tokio::test]
async fn add_collab_member_then_remove_test() {
let (c_1, _user) = generate_unique_registered_user_client().await;
let workspace_id = workspace_id_from_client(&c_1).await;
let object_id = Uuid::new_v4().to_string();
let encode_collab = test_encode_collab_v1(&object_id, "title", "hello world");
c_1
.create_collab(CreateCollabParams {
object_id: object_id.clone(),
encoded_collab_v1: encode_collab.encode_to_bytes().unwrap(),
collab_type: CollabType::Unknown,
workspace_id: workspace_id.clone(),
})
.await
.unwrap();
// Create new client
let (c_2, _user) = generate_unique_registered_user_client().await;
let uid_2 = c_2.get_profile().await.unwrap().uid;
// Add new member
c_1
.add_collab_member(InsertCollabMemberParams {
uid: uid_2,
workspace_id: workspace_id.clone(),
object_id: object_id.clone(),
access_level: AFAccessLevel::ReadAndComment,
})
.await
.unwrap();
let members = c_1
.get_collab_members(QueryCollabMembers {
workspace_id: workspace_id.clone(),
object_id: object_id.clone(),
})
.await
.unwrap()
.0;
assert_eq!(members.len(), 1);
// Delete the member
c_1
.remove_collab_member(WorkspaceCollabIdentify {
uid: uid_2,
object_id: object_id.clone(),
workspace_id: workspace_id.clone(),
})
.await
.unwrap();
let members = c_1
.get_collab_members(QueryCollabMembers {
workspace_id,
object_id,
})
.await
.unwrap()
.0;
assert_eq!(members.len(), 0);
}