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:
Nathan.fooo
2023-12-27 11:42:39 +08:00
committed by GitHub
parent 121ed5a06e
commit df8409178b
110 changed files with 947 additions and 829 deletions

View File

@ -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);
}

View File

@ -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()
);
}

View File

@ -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);
}

View File

@ -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

View File

@ -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())