mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
refactor: remove singleton db (#4208)
* refactor: remove singleton db * chore: fix warning * chore: fix warning * chore: update test * chore: only resotre or backup when init call * test: fix * test: fix * test: fix * fix: timeout notification * chore: rename * chore: rename * chore: disable test * chore: remove log * chore: remove log * chore: add log * chore: rename test functions * chore: add test asset * chore: bump client api * chore: disable some tests
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
use event_integration::user_event::user_localhost_af_cloud;
|
||||
use event_integration::EventIntegrationTest;
|
||||
use flowy_core::DEFAULT_NAME;
|
||||
use flowy_user::entities::AuthenticatorPB;
|
||||
|
||||
use crate::util::unzip_history_user_db;
|
||||
|
||||
@ -32,45 +34,86 @@ async fn reading_039_anon_user_data_test() {
|
||||
assert_eq!(third_level_views[0].name, "Grid1".to_string());
|
||||
assert_eq!(third_level_views[1].name, "Grid2".to_string());
|
||||
|
||||
let trash_items = test.get_trash().await.items;
|
||||
assert_eq!(trash_items.len(), 1);
|
||||
|
||||
drop(cleaner);
|
||||
}
|
||||
// #[tokio::test]
|
||||
// async fn migrate_anon_user_data_to_af_cloud_test() {
|
||||
// let (cleaner, user_db_path) = unzip_history_user_db("./tests/asset", "039_local").unwrap();
|
||||
// user_localhost_af_cloud().await;
|
||||
// let test =
|
||||
// EventIntegrationTest::new_with_user_data_path(user_db_path, DEFAULT_NAME.to_string()).await;
|
||||
// let anon_first_level_views = test.get_all_workspace_views().await;
|
||||
// let anon_second_level_views = test
|
||||
// .get_views(&anon_first_level_views[0].id)
|
||||
// .await
|
||||
// .child_views;
|
||||
//
|
||||
// // The anon user data will be migrated to the AppFlowy cloud after sign up
|
||||
// let user = test.af_cloud_sign_up().await;
|
||||
// assert_eq!(user.authenticator, AuthenticatorPB::AppFlowyCloud);
|
||||
//
|
||||
// let user_first_level_views = test.get_all_workspace_views().await;
|
||||
// let user_second_level_views = test
|
||||
// .get_views(&user_first_level_views[0].id)
|
||||
// .await
|
||||
// .child_views;
|
||||
//
|
||||
// // first
|
||||
// assert_eq!(anon_first_level_views.len(), 1);
|
||||
// assert_eq!(user_first_level_views.len(), 1);
|
||||
// assert_eq!(
|
||||
// anon_first_level_views[0].name,
|
||||
// user_first_level_views[0].name
|
||||
// );
|
||||
// assert_ne!(anon_first_level_views[0].id, user_first_level_views[0].id);
|
||||
//
|
||||
// // second
|
||||
// assert_eq!(anon_second_level_views.len(), user_second_level_views.len());
|
||||
// assert_eq!(
|
||||
// anon_second_level_views[0].name,
|
||||
// user_second_level_views[0].name
|
||||
// );
|
||||
// assert_ne!(anon_second_level_views[0].id, user_second_level_views[0].id);
|
||||
// drop(cleaner);
|
||||
// }
|
||||
|
||||
#[tokio::test]
|
||||
async fn migrate_anon_user_data_to_af_cloud_test() {
|
||||
let (cleaner, user_db_path) = unzip_history_user_db("./tests/asset", "040_local").unwrap();
|
||||
// In the 040_local, the structure is:
|
||||
// workspace:
|
||||
// view: Document1
|
||||
// view: Document2
|
||||
// view: Grid1
|
||||
// view: Grid2
|
||||
user_localhost_af_cloud().await;
|
||||
let test =
|
||||
EventIntegrationTest::new_with_user_data_path(user_db_path.clone(), DEFAULT_NAME.to_string())
|
||||
.await;
|
||||
let anon_trash = test.get_trash().await;
|
||||
assert_eq!(anon_trash.items.len(), 1);
|
||||
assert_eq!(
|
||||
anon_trash.items[0].name,
|
||||
"Local Getting started".to_string()
|
||||
);
|
||||
|
||||
let anon_first_level_views = test.get_all_workspace_views().await;
|
||||
let anon_second_level_views = test
|
||||
.get_views(&anon_first_level_views[0].id)
|
||||
.await
|
||||
.child_views;
|
||||
let anon_third_level_views = test
|
||||
.get_views(&anon_second_level_views[0].id)
|
||||
.await
|
||||
.child_views;
|
||||
|
||||
// The anon user data will be migrated to the AppFlowy cloud after sign up
|
||||
let user = test.af_cloud_sign_up().await;
|
||||
let user_trash = test.get_trash().await;
|
||||
let workspace = test.get_current_workspace().await;
|
||||
println!("user workspace: {:?}", workspace.id);
|
||||
assert_eq!(user.authenticator, AuthenticatorPB::AppFlowyCloud);
|
||||
|
||||
let user_first_level_views = test.get_all_workspace_views().await;
|
||||
println!("user first level views: {:?}", user_first_level_views);
|
||||
let user_second_level_views = test
|
||||
.get_views(&user_first_level_views[0].id)
|
||||
.await
|
||||
.child_views;
|
||||
println!("user second level views: {:?}", user_second_level_views);
|
||||
let user_third_level_views = test
|
||||
.get_views(&user_second_level_views[0].id)
|
||||
.await
|
||||
.child_views;
|
||||
println!("user third level views: {:?}", user_third_level_views);
|
||||
|
||||
// check first level
|
||||
assert_eq!(anon_first_level_views.len(), 1);
|
||||
assert_eq!(user_first_level_views.len(), 1);
|
||||
assert_ne!(anon_first_level_views[0].id, user_first_level_views[0].id);
|
||||
assert_eq!(
|
||||
anon_first_level_views[0].name,
|
||||
user_first_level_views[0].name
|
||||
);
|
||||
|
||||
// check second level
|
||||
assert_eq!(anon_second_level_views.len(), user_second_level_views.len());
|
||||
assert_ne!(anon_second_level_views[0].id, user_second_level_views[0].id);
|
||||
assert_eq!(
|
||||
anon_second_level_views[0].name,
|
||||
user_second_level_views[0].name
|
||||
);
|
||||
|
||||
// check third level
|
||||
assert_eq!(anon_third_level_views.len(), 2);
|
||||
assert_eq!(user_third_level_views[0].name, "Grid1".to_string());
|
||||
assert_eq!(user_third_level_views[1].name, "Grid2".to_string());
|
||||
drop(cleaner);
|
||||
|
||||
// check the trash
|
||||
assert_eq!(user_trash.items.len(), 1);
|
||||
assert_eq!(user_trash.items[0].name, anon_trash.items[0].name);
|
||||
}
|
||||
|
@ -1,41 +1,40 @@
|
||||
use event_integration::user_event::user_localhost_af_cloud;
|
||||
use event_integration::EventIntegrationTest;
|
||||
use flowy_user::entities::UpdateUserProfilePayloadPB;
|
||||
|
||||
use crate::util::{generate_test_email, get_af_cloud_config};
|
||||
use crate::util::generate_test_email;
|
||||
|
||||
#[tokio::test]
|
||||
async fn af_cloud_sign_up_test() {
|
||||
if get_af_cloud_config().is_some() {
|
||||
let test = EventIntegrationTest::new().await;
|
||||
let email = generate_test_email();
|
||||
let user = test.af_cloud_sign_in_with_email(&email).await.unwrap();
|
||||
assert_eq!(user.email, email);
|
||||
}
|
||||
user_localhost_af_cloud().await;
|
||||
let test = EventIntegrationTest::new().await;
|
||||
let email = generate_test_email();
|
||||
let user = test.af_cloud_sign_in_with_email(&email).await.unwrap();
|
||||
assert_eq!(user.email, email);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn af_cloud_update_user_metadata() {
|
||||
if get_af_cloud_config().is_some() {
|
||||
let test = EventIntegrationTest::new().await;
|
||||
let user = test.af_cloud_sign_up().await;
|
||||
user_localhost_af_cloud().await;
|
||||
let test = EventIntegrationTest::new().await;
|
||||
let user = test.af_cloud_sign_up().await;
|
||||
|
||||
let old_profile = test.get_user_profile().await.unwrap();
|
||||
assert_eq!(old_profile.openai_key, "".to_string());
|
||||
let old_profile = test.get_user_profile().await.unwrap();
|
||||
assert_eq!(old_profile.openai_key, "".to_string());
|
||||
|
||||
test
|
||||
.update_user_profile(UpdateUserProfilePayloadPB {
|
||||
id: user.id,
|
||||
openai_key: Some("new openai key".to_string()),
|
||||
stability_ai_key: Some("new stability ai key".to_string()),
|
||||
..Default::default()
|
||||
})
|
||||
.await;
|
||||
test
|
||||
.update_user_profile(UpdateUserProfilePayloadPB {
|
||||
id: user.id,
|
||||
openai_key: Some("new openai key".to_string()),
|
||||
stability_ai_key: Some("new stability ai key".to_string()),
|
||||
..Default::default()
|
||||
})
|
||||
.await;
|
||||
|
||||
let new_profile = test.get_user_profile().await.unwrap();
|
||||
assert_eq!(new_profile.openai_key, "new openai key".to_string());
|
||||
assert_eq!(
|
||||
new_profile.stability_ai_key,
|
||||
"new stability ai key".to_string()
|
||||
);
|
||||
}
|
||||
let new_profile = test.get_user_profile().await.unwrap();
|
||||
assert_eq!(new_profile.openai_key, "new openai key".to_string());
|
||||
assert_eq!(
|
||||
new_profile.stability_ai_key,
|
||||
"new stability ai key".to_string()
|
||||
);
|
||||
}
|
||||
|
@ -1,50 +1,47 @@
|
||||
use event_integration::user_event::user_localhost_af_cloud;
|
||||
use event_integration::EventIntegrationTest;
|
||||
|
||||
use crate::util::get_af_cloud_config;
|
||||
|
||||
#[tokio::test]
|
||||
async fn af_cloud_add_workspace_member_test() {
|
||||
if get_af_cloud_config().is_some() {
|
||||
let test_1 = EventIntegrationTest::new().await;
|
||||
let user_1 = test_1.af_cloud_sign_up().await;
|
||||
user_localhost_af_cloud().await;
|
||||
let test_1 = EventIntegrationTest::new().await;
|
||||
let user_1 = test_1.af_cloud_sign_up().await;
|
||||
|
||||
let test_2 = EventIntegrationTest::new().await;
|
||||
let user_2 = test_2.af_cloud_sign_up().await;
|
||||
let test_2 = EventIntegrationTest::new().await;
|
||||
let user_2 = test_2.af_cloud_sign_up().await;
|
||||
|
||||
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
||||
assert_eq!(members.len(), 1);
|
||||
assert_eq!(members[0].email, user_1.email);
|
||||
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
||||
assert_eq!(members.len(), 1);
|
||||
assert_eq!(members[0].email, user_1.email);
|
||||
|
||||
test_1
|
||||
.add_workspace_member(&user_1.workspace_id, &user_2.email)
|
||||
.await;
|
||||
test_1
|
||||
.add_workspace_member(&user_1.workspace_id, &user_2.email)
|
||||
.await;
|
||||
|
||||
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
||||
assert_eq!(members.len(), 2);
|
||||
assert_eq!(members[0].email, user_1.email);
|
||||
assert_eq!(members[1].email, user_2.email);
|
||||
}
|
||||
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
||||
assert_eq!(members.len(), 2);
|
||||
assert_eq!(members[0].email, user_1.email);
|
||||
assert_eq!(members[1].email, user_2.email);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn af_cloud_delete_workspace_member_test() {
|
||||
if get_af_cloud_config().is_some() {
|
||||
let test_1 = EventIntegrationTest::new().await;
|
||||
let user_1 = test_1.af_cloud_sign_up().await;
|
||||
user_localhost_af_cloud().await;
|
||||
let test_1 = EventIntegrationTest::new().await;
|
||||
let user_1 = test_1.af_cloud_sign_up().await;
|
||||
|
||||
let test_2 = EventIntegrationTest::new().await;
|
||||
let user_2 = test_2.af_cloud_sign_up().await;
|
||||
let test_2 = EventIntegrationTest::new().await;
|
||||
let user_2 = test_2.af_cloud_sign_up().await;
|
||||
|
||||
test_1
|
||||
.add_workspace_member(&user_1.workspace_id, &user_2.email)
|
||||
.await;
|
||||
test_1
|
||||
.add_workspace_member(&user_1.workspace_id, &user_2.email)
|
||||
.await;
|
||||
|
||||
test_1
|
||||
.delete_workspace_member(&user_1.workspace_id, &user_2.email)
|
||||
.await;
|
||||
test_1
|
||||
.delete_workspace_member(&user_1.workspace_id, &user_2.email)
|
||||
.await;
|
||||
|
||||
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
||||
assert_eq!(members.len(), 1);
|
||||
assert_eq!(members[0].email, user_1.email);
|
||||
}
|
||||
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
||||
assert_eq!(members.len(), 1);
|
||||
assert_eq!(members[0].email, user_1.email);
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ async fn third_party_sign_up_test() {
|
||||
map.insert(USER_DEVICE_ID.to_string(), uuid::Uuid::new_v4().to_string());
|
||||
let payload = OauthSignInPB {
|
||||
map,
|
||||
auth_type: AuthenticatorPB::Supabase,
|
||||
authenticator: AuthenticatorPB::Supabase,
|
||||
};
|
||||
|
||||
let response = EventBuilder::new(test.clone())
|
||||
@ -79,7 +79,7 @@ async fn third_party_sign_up_with_duplicated_uuid() {
|
||||
.event(OauthSignIn)
|
||||
.payload(OauthSignInPB {
|
||||
map: map.clone(),
|
||||
auth_type: AuthenticatorPB::Supabase,
|
||||
authenticator: AuthenticatorPB::Supabase,
|
||||
})
|
||||
.async_send()
|
||||
.await
|
||||
@ -90,7 +90,7 @@ async fn third_party_sign_up_with_duplicated_uuid() {
|
||||
.event(OauthSignIn)
|
||||
.payload(OauthSignInPB {
|
||||
map: map.clone(),
|
||||
auth_type: AuthenticatorPB::Supabase,
|
||||
authenticator: AuthenticatorPB::Supabase,
|
||||
})
|
||||
.async_send()
|
||||
.await
|
||||
|
@ -21,7 +21,7 @@ async fn initial_workspace_test() {
|
||||
);
|
||||
let payload = OauthSignInPB {
|
||||
map,
|
||||
auth_type: AuthenticatorPB::Supabase,
|
||||
authenticator: AuthenticatorPB::Supabase,
|
||||
};
|
||||
|
||||
let _ = EventBuilder::new(test.clone())
|
||||
|
Reference in New Issue
Block a user