mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: save user metadata (#3754)
* feat: save user metadata * chore: update client api * refactor: separate test methods * chore: save updated at * chore: clippy * chore: fix test
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
use collab_folder::core::ViewLayout;
|
||||
|
||||
use event_integration::event_builder::EventBuilder;
|
||||
use event_integration::FlowyCoreTest;
|
||||
use event_integration::EventIntegrationTest;
|
||||
use flowy_folder2::entities::icon::{UpdateViewIconPayloadPB, ViewIconPB};
|
||||
use flowy_folder2::entities::*;
|
||||
use flowy_folder2::event_map::FolderEvent::*;
|
||||
@ -64,7 +64,7 @@ pub enum FolderScript {
|
||||
}
|
||||
|
||||
pub struct FolderTest {
|
||||
pub sdk: FlowyCoreTest,
|
||||
pub sdk: EventIntegrationTest,
|
||||
pub all_workspace: Vec<WorkspacePB>,
|
||||
pub workspace: WorkspacePB,
|
||||
pub parent_view: ViewPB,
|
||||
@ -75,7 +75,7 @@ pub struct FolderTest {
|
||||
|
||||
impl FolderTest {
|
||||
pub async fn new() -> Self {
|
||||
let sdk = FlowyCoreTest::new();
|
||||
let sdk = EventIntegrationTest::new();
|
||||
let _ = sdk.init_user().await;
|
||||
let workspace = create_workspace(&sdk, "FolderWorkspace", "Folder test workspace").await;
|
||||
let parent_view = create_app(&sdk, &workspace.id, "Folder App", "Folder test app").await;
|
||||
@ -201,7 +201,7 @@ impl FolderTest {
|
||||
}
|
||||
}
|
||||
}
|
||||
pub async fn create_workspace(sdk: &FlowyCoreTest, name: &str, desc: &str) -> WorkspacePB {
|
||||
pub async fn create_workspace(sdk: &EventIntegrationTest, name: &str, desc: &str) -> WorkspacePB {
|
||||
let request = CreateWorkspacePayloadPB {
|
||||
name: name.to_owned(),
|
||||
desc: desc.to_owned(),
|
||||
@ -215,7 +215,10 @@ pub async fn create_workspace(sdk: &FlowyCoreTest, name: &str, desc: &str) -> Wo
|
||||
.parse::<WorkspacePB>()
|
||||
}
|
||||
|
||||
pub async fn read_workspace(sdk: &FlowyCoreTest, workspace_id: Option<String>) -> Vec<WorkspacePB> {
|
||||
pub async fn read_workspace(
|
||||
sdk: &EventIntegrationTest,
|
||||
workspace_id: Option<String>,
|
||||
) -> Vec<WorkspacePB> {
|
||||
let request = WorkspaceIdPB {
|
||||
value: workspace_id,
|
||||
};
|
||||
@ -241,7 +244,12 @@ pub async fn read_workspace(sdk: &FlowyCoreTest, workspace_id: Option<String>) -
|
||||
workspaces
|
||||
}
|
||||
|
||||
pub async fn create_app(sdk: &FlowyCoreTest, workspace_id: &str, name: &str, desc: &str) -> ViewPB {
|
||||
pub async fn create_app(
|
||||
sdk: &EventIntegrationTest,
|
||||
workspace_id: &str,
|
||||
name: &str,
|
||||
desc: &str,
|
||||
) -> ViewPB {
|
||||
let create_view_request = CreateViewPayloadPB {
|
||||
parent_view_id: workspace_id.to_owned(),
|
||||
name: name.to_string(),
|
||||
@ -263,7 +271,7 @@ pub async fn create_app(sdk: &FlowyCoreTest, workspace_id: &str, name: &str, des
|
||||
}
|
||||
|
||||
pub async fn create_view(
|
||||
sdk: &FlowyCoreTest,
|
||||
sdk: &EventIntegrationTest,
|
||||
app_id: &str,
|
||||
name: &str,
|
||||
desc: &str,
|
||||
@ -288,7 +296,7 @@ pub async fn create_view(
|
||||
.parse::<ViewPB>()
|
||||
}
|
||||
|
||||
pub async fn read_view(sdk: &FlowyCoreTest, view_id: &str) -> ViewPB {
|
||||
pub async fn read_view(sdk: &EventIntegrationTest, view_id: &str) -> ViewPB {
|
||||
let view_id = ViewIdPB::from(view_id);
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(ReadView)
|
||||
@ -299,7 +307,7 @@ pub async fn read_view(sdk: &FlowyCoreTest, view_id: &str) -> ViewPB {
|
||||
}
|
||||
|
||||
pub async fn move_view(
|
||||
sdk: &FlowyCoreTest,
|
||||
sdk: &EventIntegrationTest,
|
||||
view_id: String,
|
||||
parent_id: String,
|
||||
prev_view_id: Option<String>,
|
||||
@ -319,7 +327,7 @@ pub async fn move_view(
|
||||
assert!(error.is_none());
|
||||
}
|
||||
pub async fn update_view(
|
||||
sdk: &FlowyCoreTest,
|
||||
sdk: &EventIntegrationTest,
|
||||
view_id: &str,
|
||||
name: Option<String>,
|
||||
desc: Option<String>,
|
||||
@ -340,7 +348,7 @@ pub async fn update_view(
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn update_view_icon(sdk: &FlowyCoreTest, view_id: &str, icon: Option<ViewIconPB>) {
|
||||
pub async fn update_view_icon(sdk: &EventIntegrationTest, view_id: &str, icon: Option<ViewIconPB>) {
|
||||
let request = UpdateViewIconPayloadPB {
|
||||
view_id: view_id.to_string(),
|
||||
icon,
|
||||
@ -352,7 +360,7 @@ pub async fn update_view_icon(sdk: &FlowyCoreTest, view_id: &str, icon: Option<V
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn delete_view(sdk: &FlowyCoreTest, view_ids: Vec<String>) {
|
||||
pub async fn delete_view(sdk: &EventIntegrationTest, view_ids: Vec<String>) {
|
||||
let request = RepeatedViewIdPB { items: view_ids };
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(DeleteView)
|
||||
@ -361,7 +369,7 @@ pub async fn delete_view(sdk: &FlowyCoreTest, view_ids: Vec<String>) {
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn read_trash(sdk: &FlowyCoreTest) -> RepeatedTrashPB {
|
||||
pub async fn read_trash(sdk: &EventIntegrationTest) -> RepeatedTrashPB {
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(ReadTrash)
|
||||
.async_send()
|
||||
@ -369,7 +377,7 @@ pub async fn read_trash(sdk: &FlowyCoreTest) -> RepeatedTrashPB {
|
||||
.parse::<RepeatedTrashPB>()
|
||||
}
|
||||
|
||||
pub async fn restore_app_from_trash(sdk: &FlowyCoreTest, app_id: &str) {
|
||||
pub async fn restore_app_from_trash(sdk: &EventIntegrationTest, app_id: &str) {
|
||||
let id = TrashIdPB {
|
||||
id: app_id.to_owned(),
|
||||
};
|
||||
@ -380,7 +388,7 @@ pub async fn restore_app_from_trash(sdk: &FlowyCoreTest, app_id: &str) {
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn restore_view_from_trash(sdk: &FlowyCoreTest, view_id: &str) {
|
||||
pub async fn restore_view_from_trash(sdk: &EventIntegrationTest, view_id: &str) {
|
||||
let id = TrashIdPB {
|
||||
id: view_id.to_owned(),
|
||||
};
|
||||
@ -391,14 +399,14 @@ pub async fn restore_view_from_trash(sdk: &FlowyCoreTest, view_id: &str) {
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn delete_all_trash(sdk: &FlowyCoreTest) {
|
||||
pub async fn delete_all_trash(sdk: &EventIntegrationTest) {
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(DeleteAllTrash)
|
||||
.async_send()
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn toggle_favorites(sdk: &FlowyCoreTest, view_id: Vec<String>) {
|
||||
pub async fn toggle_favorites(sdk: &EventIntegrationTest, view_id: Vec<String>) {
|
||||
let request = RepeatedViewIdPB { items: view_id };
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(ToggleFavorite)
|
||||
@ -407,7 +415,7 @@ pub async fn toggle_favorites(sdk: &FlowyCoreTest, view_id: Vec<String>) {
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn read_favorites(sdk: &FlowyCoreTest) -> RepeatedViewPB {
|
||||
pub async fn read_favorites(sdk: &EventIntegrationTest) -> RepeatedViewPB {
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(ReadFavorites)
|
||||
.async_send()
|
||||
|
@ -1,6 +1,6 @@
|
||||
use std::time::Duration;
|
||||
|
||||
use event_integration::FlowyCoreTest;
|
||||
use event_integration::EventIntegrationTest;
|
||||
use flowy_folder2::entities::{ChildViewUpdatePB, RepeatedViewPB, UpdateViewPayloadPB};
|
||||
use flowy_folder2::notification::FolderNotification;
|
||||
|
||||
@ -16,7 +16,7 @@ use crate::util::receive_with_timeout;
|
||||
/// 5. Await the notification for workspace view updates with a timeout of 30 seconds.
|
||||
/// 6. Ensure that the received views contain the newly created "test_view".
|
||||
async fn create_child_view_in_workspace_subscription_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let workspace = test.get_current_workspace().await.workspace;
|
||||
let mut rx = test
|
||||
.notification_sender
|
||||
@ -40,7 +40,7 @@ async fn create_child_view_in_workspace_subscription_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn create_child_view_in_view_subscription_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let mut workspace = test.get_current_workspace().await.workspace;
|
||||
let workspace_child_view = workspace.views.pop().unwrap();
|
||||
let mut rx = test.notification_sender.subscribe::<ChildViewUpdatePB>(
|
||||
@ -72,7 +72,7 @@ async fn create_child_view_in_view_subscription_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn delete_view_subscription_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let workspace = test.get_current_workspace().await.workspace;
|
||||
let mut rx = test
|
||||
.notification_sender
|
||||
@ -94,7 +94,7 @@ async fn delete_view_subscription_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn update_view_subscription_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let mut workspace = test.get_current_workspace().await.workspace;
|
||||
let mut rx = test
|
||||
.notification_sender
|
||||
|
@ -1,12 +1,12 @@
|
||||
use event_integration::event_builder::EventBuilder;
|
||||
use event_integration::FlowyCoreTest;
|
||||
use event_integration::EventIntegrationTest;
|
||||
use flowy_folder2::entities::icon::{UpdateViewIconPayloadPB, ViewIconPB, ViewIconTypePB};
|
||||
use flowy_folder2::entities::*;
|
||||
use flowy_user::errors::ErrorCode;
|
||||
|
||||
#[tokio::test]
|
||||
async fn create_workspace_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let request = CreateWorkspacePayloadPB {
|
||||
name: "my second workspace".to_owned(),
|
||||
desc: "".to_owned(),
|
||||
@ -22,7 +22,7 @@ async fn create_workspace_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn open_workspace_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let payload = CreateWorkspacePayloadPB {
|
||||
name: "my second workspace".to_owned(),
|
||||
desc: "".to_owned(),
|
||||
@ -52,7 +52,7 @@ async fn open_workspace_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn create_view_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let view = test
|
||||
.create_view(¤t_workspace.id, "My first view".to_string())
|
||||
@ -64,7 +64,7 @@ async fn create_view_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn update_view_event_with_name_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let view = test
|
||||
.create_view(¤t_workspace.id, "My first view".to_string())
|
||||
@ -85,7 +85,7 @@ async fn update_view_event_with_name_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn update_view_icon_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let view = test
|
||||
.create_view(¤t_workspace.id, "My first view".to_string())
|
||||
@ -109,7 +109,7 @@ async fn update_view_icon_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn delete_view_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let view = test
|
||||
.create_view(¤t_workspace.id, "My first view".to_string())
|
||||
@ -132,7 +132,7 @@ async fn delete_view_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn put_back_trash_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let view = test
|
||||
.create_view(¤t_workspace.id, "My first view".to_string())
|
||||
@ -175,7 +175,7 @@ async fn put_back_trash_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn delete_view_permanently_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let view = test
|
||||
.create_view(¤t_workspace.id, "My first view".to_string())
|
||||
@ -224,7 +224,7 @@ async fn delete_view_permanently_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn delete_all_trash_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
|
||||
for i in 0..3 {
|
||||
@ -268,7 +268,7 @@ async fn delete_all_trash_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn multiple_hierarchy_view_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
for i in 1..4 {
|
||||
let parent = test
|
||||
@ -344,7 +344,7 @@ async fn multiple_hierarchy_view_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn move_view_event_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
for i in 1..4 {
|
||||
let parent = test
|
||||
@ -382,7 +382,7 @@ async fn move_view_event_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn move_view_event_after_delete_view_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
for i in 1..6 {
|
||||
let _ = test
|
||||
@ -424,7 +424,7 @@ async fn move_view_event_after_delete_view_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn move_view_event_after_delete_view_test2() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let parent = test
|
||||
.create_view(¤t_workspace.id, "My view".to_string())
|
||||
@ -466,7 +466,7 @@ async fn move_view_event_after_delete_view_test2() {
|
||||
#[tokio::test]
|
||||
async fn create_parent_view_with_invalid_name() {
|
||||
for (name, code) in invalid_workspace_name_test_case() {
|
||||
let sdk = FlowyCoreTest::new();
|
||||
let sdk = EventIntegrationTest::new();
|
||||
let request = CreateWorkspacePayloadPB {
|
||||
name,
|
||||
desc: "".to_owned(),
|
||||
@ -494,7 +494,7 @@ fn invalid_workspace_name_test_case() -> Vec<(String, ErrorCode)> {
|
||||
|
||||
#[tokio::test]
|
||||
async fn move_view_across_parent_test() {
|
||||
let test = FlowyCoreTest::new_with_guest_user().await;
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let current_workspace = test.get_current_workspace().await.workspace;
|
||||
let parent_1 = test
|
||||
.create_view(¤t_workspace.id, "My view 1".to_string())
|
||||
@ -539,7 +539,7 @@ async fn move_view_across_parent_test() {
|
||||
}
|
||||
|
||||
async fn move_folder_nested_view(
|
||||
sdk: FlowyCoreTest,
|
||||
sdk: EventIntegrationTest,
|
||||
view_id: String,
|
||||
new_parent_id: String,
|
||||
prev_view_id: Option<String>,
|
||||
|
Reference in New Issue
Block a user