mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: enable dispatch event using single thread (#3828)
* refactor: lib dispatch * chore: type def * chore: type def * fix: local set spawn * chore: replace tokio spawn * chore: update log * chore: boxed event * chore: tauri lock
This commit is contained in:
@ -75,7 +75,7 @@ pub struct FolderTest {
|
||||
|
||||
impl FolderTest {
|
||||
pub async fn new() -> Self {
|
||||
let sdk = EventIntegrationTest::new();
|
||||
let sdk = EventIntegrationTest::new().await;
|
||||
let _ = sdk.init_anon_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;
|
||||
|
@ -18,19 +18,19 @@ use crate::util::receive_with_timeout;
|
||||
async fn create_child_view_in_workspace_subscription_test() {
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let workspace = test.get_current_workspace().await.workspace;
|
||||
let mut rx = test
|
||||
let rx = test
|
||||
.notification_sender
|
||||
.subscribe::<RepeatedViewPB>(&workspace.id, FolderNotification::DidUpdateWorkspaceViews);
|
||||
|
||||
let cloned_test = test.clone();
|
||||
let cloned_workspace_id = workspace.id.clone();
|
||||
tokio::spawn(async move {
|
||||
test.inner.dispatcher().spawn(async move {
|
||||
cloned_test
|
||||
.create_view(&cloned_workspace_id, "workspace child view".to_string())
|
||||
.await;
|
||||
});
|
||||
|
||||
let views = receive_with_timeout(&mut rx, Duration::from_secs(30))
|
||||
let views = receive_with_timeout(rx, Duration::from_secs(30))
|
||||
.await
|
||||
.unwrap()
|
||||
.items;
|
||||
@ -43,14 +43,14 @@ async fn create_child_view_in_view_subscription_test() {
|
||||
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>(
|
||||
let rx = test.notification_sender.subscribe::<ChildViewUpdatePB>(
|
||||
&workspace_child_view.id,
|
||||
FolderNotification::DidUpdateChildViews,
|
||||
);
|
||||
|
||||
let cloned_test = test.clone();
|
||||
let child_view_id = workspace_child_view.id.clone();
|
||||
tokio::spawn(async move {
|
||||
test.inner.dispatcher().spawn(async move {
|
||||
cloned_test
|
||||
.create_view(
|
||||
&child_view_id,
|
||||
@ -59,7 +59,7 @@ async fn create_child_view_in_view_subscription_test() {
|
||||
.await;
|
||||
});
|
||||
|
||||
let update = receive_with_timeout(&mut rx, Duration::from_secs(30))
|
||||
let update = receive_with_timeout(rx, Duration::from_secs(30))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@ -74,20 +74,29 @@ async fn create_child_view_in_view_subscription_test() {
|
||||
async fn delete_view_subscription_test() {
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let workspace = test.get_current_workspace().await.workspace;
|
||||
let mut rx = test
|
||||
let rx = test
|
||||
.notification_sender
|
||||
.subscribe::<ChildViewUpdatePB>(&workspace.id, FolderNotification::DidUpdateChildViews);
|
||||
|
||||
let cloned_test = test.clone();
|
||||
let delete_view_id = workspace.views.first().unwrap().id.clone();
|
||||
let cloned_delete_view_id = delete_view_id.clone();
|
||||
tokio::spawn(async move {
|
||||
cloned_test.delete_view(&cloned_delete_view_id).await;
|
||||
});
|
||||
|
||||
let update = receive_with_timeout(&mut rx, Duration::from_secs(30))
|
||||
test
|
||||
.inner
|
||||
.dispatcher()
|
||||
.spawn(async move {
|
||||
cloned_test.delete_view(&cloned_delete_view_id).await;
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let update = test
|
||||
.inner
|
||||
.dispatcher()
|
||||
.run_until(receive_with_timeout(rx, Duration::from_secs(30)))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(update.delete_child_views.len(), 1);
|
||||
assert_eq!(update.delete_child_views[0], delete_view_id);
|
||||
}
|
||||
@ -96,7 +105,7 @@ async fn delete_view_subscription_test() {
|
||||
async fn update_view_subscription_test() {
|
||||
let test = EventIntegrationTest::new_with_guest_user().await;
|
||||
let mut workspace = test.get_current_workspace().await.workspace;
|
||||
let mut rx = test
|
||||
let rx = test
|
||||
.notification_sender
|
||||
.subscribe::<ChildViewUpdatePB>(&workspace.id, FolderNotification::DidUpdateChildViews);
|
||||
|
||||
@ -105,7 +114,7 @@ async fn update_view_subscription_test() {
|
||||
assert!(!view.is_favorite);
|
||||
|
||||
let update_view_id = view.id.clone();
|
||||
tokio::spawn(async move {
|
||||
test.inner.dispatcher().spawn(async move {
|
||||
cloned_test
|
||||
.update_view(UpdateViewPayloadPB {
|
||||
view_id: update_view_id,
|
||||
@ -116,7 +125,7 @@ async fn update_view_subscription_test() {
|
||||
.await;
|
||||
});
|
||||
|
||||
let update = receive_with_timeout(&mut rx, Duration::from_secs(30))
|
||||
let update = receive_with_timeout(rx, Duration::from_secs(30))
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(update.update_child_views.len(), 1);
|
||||
|
@ -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 = EventIntegrationTest::new();
|
||||
let sdk = EventIntegrationTest::new().await;
|
||||
let request = CreateWorkspacePayloadPB {
|
||||
name,
|
||||
desc: "".to_owned(),
|
||||
|
@ -19,7 +19,7 @@ pub struct FlowySupabaseFolderTest {
|
||||
|
||||
impl FlowySupabaseFolderTest {
|
||||
pub async fn new() -> Option<Self> {
|
||||
let inner = FlowySupabaseTest::new()?;
|
||||
let inner = FlowySupabaseTest::new().await?;
|
||||
let uuid = uuid::Uuid::new_v4().to_string();
|
||||
let _ = inner.supabase_sign_up_with_uuid(&uuid, None).await;
|
||||
Some(Self { inner })
|
||||
|
@ -34,11 +34,11 @@ async fn supabase_decrypt_folder_data_test() {
|
||||
.create_view(&workspace_id, "encrypt view".to_string())
|
||||
.await;
|
||||
|
||||
let mut rx = test
|
||||
let rx = test
|
||||
.notification_sender
|
||||
.subscribe_with_condition::<FolderSyncStatePB, _>(&workspace_id, |pb| pb.is_finish);
|
||||
|
||||
receive_with_timeout(&mut rx, Duration::from_secs(10))
|
||||
receive_with_timeout(rx, Duration::from_secs(10))
|
||||
.await
|
||||
.unwrap();
|
||||
let folder_data = get_folder_data_from_server(&workspace_id, secret)
|
||||
@ -59,10 +59,10 @@ async fn supabase_decrypt_with_invalid_secret_folder_data_test() {
|
||||
test
|
||||
.create_view(&workspace_id, "encrypt view".to_string())
|
||||
.await;
|
||||
let mut rx = test
|
||||
let rx = test
|
||||
.notification_sender
|
||||
.subscribe_with_condition::<FolderSyncStatePB, _>(&workspace_id, |pb| pb.is_finish);
|
||||
receive_with_timeout(&mut rx, Duration::from_secs(10))
|
||||
receive_with_timeout(rx, Duration::from_secs(10))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@ -75,10 +75,10 @@ async fn supabase_decrypt_with_invalid_secret_folder_data_test() {
|
||||
async fn supabase_folder_snapshot_test() {
|
||||
if let Some(test) = FlowySupabaseFolderTest::new().await {
|
||||
let workspace_id = test.get_current_workspace().await.workspace.id;
|
||||
let mut rx = test
|
||||
let rx = test
|
||||
.notification_sender
|
||||
.subscribe::<FolderSnapshotStatePB>(&workspace_id, DidUpdateFolderSnapshotState);
|
||||
receive_with_timeout(&mut rx, Duration::from_secs(10))
|
||||
receive_with_timeout(rx, Duration::from_secs(10))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@ -104,11 +104,11 @@ async fn supabase_initial_folder_snapshot_test2() {
|
||||
.create_view(&workspace_id, "supabase test view3".to_string())
|
||||
.await;
|
||||
|
||||
let mut rx = test
|
||||
let rx = test
|
||||
.notification_sender
|
||||
.subscribe_with_condition::<FolderSyncStatePB, _>(&workspace_id, |pb| pb.is_finish);
|
||||
|
||||
receive_with_timeout(&mut rx, Duration::from_secs(10))
|
||||
receive_with_timeout(rx, Duration::from_secs(10))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
Reference in New Issue
Block a user