add FlowyEnv to provide default test env

This commit is contained in:
appflowy 2021-09-04 16:12:48 +08:00
parent ccb51234c5
commit f4ef9bc5f8
15 changed files with 155 additions and 268 deletions

View File

@ -69,42 +69,6 @@ impl EventDispatch {
}) })
}), }),
} }
// match dispatch.read() {
// Ok(dispatch) => {
// let dispatch = dispatch.as_ref().unwrap();
// let module_map = dispatch.module_map.clone();
// let service = Box::new(DispatchService { module_map });
// log::trace!("Async event: {:?}", &request.event);
// let service_ctx = DispatchContext {
// request,
// callback: Some(Box::new(callback)),
// };
// let join_handle = dispatch.runtime.spawn(async move {
// service
// .call(service_ctx)
// .await
// .unwrap_or_else(|e|
// InternalError::Other(format!("{:?}", e)).as_response())
// });
//
// DispatchFuture {
// fut: Box::pin(async move {
// join_handle.await.unwrap_or_else(|e| {
// let error =
// InternalError::JoinError(format!("EVENT_DISPATCH join error: {:?}",
// e)); error.as_response()
// })
// }),
// }
// },
//
// Err(e) => {
// let msg = format!("EVENT_DISPATCH read failed. {:?}", e);
// DispatchFuture {
// fut: Box::pin(async {
// InternalError::Lock(msg).as_response() }), }
// },
// }
} }
pub fn sync_send(dispatch: Arc<EventDispatch>, request: ModuleRequest) -> EventResponse { pub fn sync_send(dispatch: Arc<EventDispatch>, request: ModuleRequest) -> EventResponse {

View File

@ -1,9 +1,9 @@
use crate::helper::*; use crate::helper::*;
use flowy_test::TestSDKBuilder; use flowy_test::FlowyEnv;
#[test] #[test]
fn file_create_test() { fn file_create_test() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let doc_desc = create_doc(&sdk, "hello world", "flutter ❤️ rust", "123"); let doc_desc = create_doc(&sdk, "hello world", "flutter ❤️ rust", "123");
dbg!(&doc_desc); dbg!(&doc_desc);
@ -13,7 +13,7 @@ fn file_create_test() {
#[test] #[test]
fn file_update_text_test() { fn file_update_text_test() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let doc_desc = create_doc(&sdk, "hello world", "flutter ❤️ rust", ""); let doc_desc = create_doc(&sdk, "hello world", "flutter ❤️ rust", "");
dbg!(&doc_desc); dbg!(&doc_desc);

View File

@ -1,4 +1,4 @@
use flowy_test::builder::DocTestBuilder; use flowy_test::builder::DocTest;
use flowy_document::{entities::doc::*, event::EditorEvent::*}; use flowy_document::{entities::doc::*, event::EditorEvent::*};
use flowy_infra::uuid; use flowy_infra::uuid;
@ -12,7 +12,7 @@ pub fn create_doc(sdk: &FlowyTestSDK, name: &str, desc: &str, text: &str) -> Doc
text: text.to_owned(), text: text.to_owned(),
}; };
let doc = DocTestBuilder::new(sdk.clone()) let doc = DocTest::new(sdk.clone())
.event(CreateDoc) .event(CreateDoc)
.request(request) .request(request)
.sync_send() .sync_send()
@ -28,7 +28,7 @@ pub fn save_doc(sdk: &FlowyTestSDK, desc: &DocInfo, content: &str) {
text: Some(content.to_owned()), text: Some(content.to_owned()),
}; };
let _ = DocTestBuilder::new(sdk.clone()).event(UpdateDoc).request(request).sync_send(); let _ = DocTest::new(sdk.clone()).event(UpdateDoc).request(request).sync_send();
} }
// #[allow(dead_code)] // #[allow(dead_code)]
@ -52,7 +52,7 @@ pub(crate) fn read_doc_data(sdk: &FlowyTestSDK, doc_id: &str, path: &str) -> Doc
path: path.to_string(), path: path.to_string(),
}; };
let doc = DocTestBuilder::new(sdk.clone()) let doc = DocTest::new(sdk.clone())
.event(ReadDocData) .event(ReadDocData)
.request(request) .request(request)
.sync_send() .sync_send()

View File

@ -22,6 +22,7 @@ impl FlowySDK {
init_log(root); init_log(root);
init_kv(root); init_kv(root);
tracing::info!("🔥 user folder: {}", root);
let dispatch = Arc::new(init_dispatch(root)); let dispatch = Arc::new(init_dispatch(root));
let root = root.to_owned(); let root = root.to_owned();
Self { root, dispatch } Self { root, dispatch }
@ -31,7 +32,6 @@ impl FlowySDK {
} }
fn init_kv(root: &str) { fn init_kv(root: &str) {
tracing::info!("🔥 Root path: {}", root);
match flowy_infra::kv::KV::init(root) { match flowy_infra::kv::KV::init(root) {
Ok(_) => {}, Ok(_) => {},
Err(e) => tracing::error!("Init kv store failedL: {}", e), Err(e) => tracing::error!("Init kv store failedL: {}", e),

View File

@ -5,78 +5,27 @@ use std::{
hash::Hash, hash::Hash,
}; };
use crate::helper::{create_default_workspace_if_need, login_email, login_password, random_email}; use crate::FlowyTestSDK;
use flowy_dispatch::prelude::*; use flowy_dispatch::prelude::*;
use flowy_document::errors::DocError; use flowy_document::errors::DocError;
pub use flowy_sdk::*; use flowy_sdk::*;
use flowy_user::{ use flowy_user::errors::UserError;
errors::UserError,
event::UserEvent::{SignOut, SignUp},
prelude::*,
};
use flowy_workspace::errors::WorkspaceError; use flowy_workspace::errors::WorkspaceError;
use std::{marker::PhantomData, sync::Arc}; use std::{convert::TryFrom, marker::PhantomData, sync::Arc};
use crate::FlowyTestSDK; pub type DocTest = Builder<DocError>;
use flowy_user::event::UserEvent::SignIn; impl DocTest {
use std::convert::TryFrom;
pub type DocTestBuilder = Builder<DocError>;
impl DocTestBuilder {
pub fn new(sdk: FlowyTestSDK) -> Self { Builder::test(TestContext::new(sdk)) } pub fn new(sdk: FlowyTestSDK) -> Self { Builder::test(TestContext::new(sdk)) }
} }
pub type WorkspaceTestBuilder = Builder<WorkspaceError>; pub type WorkspaceTest = Builder<WorkspaceError>;
impl WorkspaceTestBuilder { impl WorkspaceTest {
pub fn new(sdk: FlowyTestSDK) -> Self { Builder::test(TestContext::new(sdk)) } pub fn new(sdk: FlowyTestSDK) -> Self { Builder::test(TestContext::new(sdk)) }
} }
pub type UserTestBuilder = Builder<UserError>; pub type UserTest = Builder<UserError>;
impl UserTestBuilder { impl UserTest {
pub fn new(sdk: FlowyTestSDK) -> Self { Builder::test(TestContext::new(sdk)) } pub fn new(sdk: FlowyTestSDK) -> Self { Builder::test(TestContext::new(sdk)) }
pub fn sign_up(self) -> SignUpContext {
let password = login_password();
let payload = SignUpRequest {
email: random_email(),
name: "app flowy".to_string(),
password: password.clone(),
}
.into_bytes()
.unwrap();
let request = ModuleRequest::new(SignUp).payload(payload);
let user_detail = EventDispatch::sync_send(self.dispatch(), request)
.parse::<UserDetail, UserError>()
.unwrap()
.unwrap();
let _ = create_default_workspace_if_need(self.dispatch(), &user_detail.id);
SignUpContext { user_detail, password }
}
#[allow(dead_code)]
fn sign_in(mut self) -> Self {
let payload = SignInRequest {
email: login_email(),
password: login_password(),
}
.into_bytes()
.unwrap();
let request = ModuleRequest::new(SignIn).payload(payload);
let user_detail = EventDispatch::sync_send(self.dispatch(), request)
.parse::<UserDetail, UserError>()
.unwrap()
.unwrap();
self.user_detail = Some(user_detail);
self
}
#[allow(dead_code)]
fn logout(&self) { let _ = EventDispatch::sync_send(self.dispatch(), ModuleRequest::new(SignOut)); }
pub fn user_detail(&self) -> &Option<UserDetail> { &self.user_detail } pub fn user_detail(&self) -> &Option<UserDetail> { &self.user_detail }
} }
@ -185,7 +134,3 @@ impl TestContext {
} }
} }
} }
pub struct SignUpContext {
pub user_detail: UserDetail,
pub password: String,
}

View File

@ -2,7 +2,11 @@ use bytes::Bytes;
use flowy_dispatch::prelude::{EventDispatch, ModuleRequest, ToBytes}; use flowy_dispatch::prelude::{EventDispatch, ModuleRequest, ToBytes};
use flowy_infra::{kv::KV, uuid}; use flowy_infra::{kv::KV, uuid};
use flowy_user::errors::{ErrorBuilder, ErrorCode, UserError}; use flowy_user::{
entities::{SignInRequest, SignUpRequest, UserDetail},
errors::{ErrorBuilder, ErrorCode, UserError},
event::UserEvent::{SignIn, SignOut, SignUp},
};
use flowy_workspace::{ use flowy_workspace::{
entities::workspace::{CreateWorkspaceRequest, QueryWorkspaceRequest, Workspace}, entities::workspace::{CreateWorkspaceRequest, QueryWorkspaceRequest, Workspace},
errors::WorkspaceError, errors::WorkspaceError,
@ -70,3 +74,49 @@ pub(crate) fn create_default_workspace_if_need(dispatch: Arc<EventDispatch>, use
Ok(()) Ok(())
} }
pub struct SignUpContext {
pub user_detail: UserDetail,
pub password: String,
}
pub fn sign_up(dispatch: Arc<EventDispatch>) -> SignUpContext {
let password = login_password();
let payload = SignUpRequest {
email: random_email(),
name: "app flowy".to_string(),
password: password.clone(),
}
.into_bytes()
.unwrap();
let request = ModuleRequest::new(SignUp).payload(payload);
let user_detail = EventDispatch::sync_send(dispatch.clone(), request)
.parse::<UserDetail, UserError>()
.unwrap()
.unwrap();
let _ = create_default_workspace_if_need(dispatch.clone(), &user_detail.id);
SignUpContext { user_detail, password }
}
#[allow(dead_code)]
fn sign_in(dispatch: Arc<EventDispatch>) -> UserDetail {
let payload = SignInRequest {
email: login_email(),
password: login_password(),
}
.into_bytes()
.unwrap();
let request = ModuleRequest::new(SignIn).payload(payload);
let user_detail = EventDispatch::sync_send(dispatch, request)
.parse::<UserDetail, UserError>()
.unwrap()
.unwrap();
user_detail
}
#[allow(dead_code)]
fn logout(dispatch: Arc<EventDispatch>) { let _ = EventDispatch::sync_send(dispatch, ModuleRequest::new(SignOut)); }

View File

@ -1,9 +1,9 @@
pub mod builder; pub mod builder;
mod helper; mod helper;
// pub mod workspace_builder;
use crate::{builder::UserTestBuilder, helper::root_dir}; use crate::helper::*;
use flowy_sdk::FlowySDK; use flowy_sdk::FlowySDK;
use flowy_user::entities::UserDetail;
pub mod prelude { pub mod prelude {
pub use crate::{builder::*, helper::*, *}; pub use crate::{builder::*, helper::*, *};
@ -13,19 +13,25 @@ pub mod prelude {
pub type FlowyTestSDK = FlowySDK; pub type FlowyTestSDK = FlowySDK;
#[derive(Clone)] #[derive(Clone)]
pub struct TestSDKBuilder { pub struct FlowyEnv {
inner: FlowyTestSDK, pub sdk: FlowyTestSDK,
pub user: UserDetail,
pub password: String,
} }
impl TestSDKBuilder { impl FlowyEnv {
pub fn new() -> Self { Self { inner: init_test_sdk() } } pub fn setup() -> Self {
let sdk = init_test_sdk();
pub fn sign_up(self) -> Self { let result = sign_up(sdk.dispatch());
let _ = UserTestBuilder::new(self.inner.clone()).sign_up(); let env = Self {
self sdk,
user: result.user_detail,
password: result.password,
};
env
} }
pub fn build(self) -> FlowyTestSDK { self.inner } pub fn sdk(&self) -> FlowyTestSDK { self.sdk.clone() }
} }
pub fn init_test_sdk() -> FlowyTestSDK { pub fn init_test_sdk() -> FlowyTestSDK {

View File

@ -1,60 +0,0 @@
use super::builder::Builder;
use crate::{builder::TestContext, helper::FlowyTestSDK};
use flowy_workspace::{
entities::{app::App, view::View, workspace::*},
errors::WorkspaceError,
event::WorkspaceEvent::*,
};
pub enum WorkspaceAction {
CreateWorkspace(CreateWorkspaceRequest),
ReadWorkspace(QueryWorkspaceRequest),
}
type Inner = Builder<WorkspaceError>;
pub struct WorkspaceTestBuilder {
workspace: Option<Workspace>,
app: Option<App>,
view: Option<View>,
inner: Builder<WorkspaceError>,
}
impl WorkspaceTestBuilder {
pub fn new(sdk: FlowyTestSDK) -> Self {
Self {
workspace: None,
app: None,
view: None,
inner: Builder::test(TestContext::new(sdk)),
}
}
pub fn run(mut self, actions: Vec<WorkspaceAction>) {
let inner = self.inner;
for action in actions {
match action {
WorkspaceAction::CreateWorkspace(request) => {
let workspace = inner
.clone()
.event(CreateWorkspace)
.request(request)
.sync_send()
.parse::<Workspace>();
self.workspace = Some(workspace);
},
WorkspaceAction::ReadWorkspace(request) => {
let mut repeated_workspace = inner
.clone()
.event(ReadWorkspaces)
.request(request)
.sync_send()
.parse::<RepeatedWorkspace>();
debug_assert_eq!(repeated_workspace.len(), 1, "Default workspace not found");
repeated_workspace.drain(..1).collect::<Vec<Workspace>>().pop()
},
}
}
}
}

View File

@ -142,7 +142,8 @@ impl UserSession {
log::info!("{:?}", e); log::info!("{:?}", e);
}, },
} }
}); })
.await;
let user = dsl::user_table let user = dsl::user_table
.filter(user_table::id.eq(&session.user_id)) .filter(user_table::id.eq(&session.user_id))

View File

@ -1,5 +1,5 @@
use crate::helper::*; use crate::helper::*;
use flowy_test::{builder::UserTestBuilder, init_test_sdk}; use flowy_test::{builder::UserTest, init_test_sdk, FlowyEnv};
use flowy_user::{errors::ErrorCode, event::UserEvent::*, prelude::*}; use flowy_user::{errors::ErrorCode, event::UserEvent::*, prelude::*};
use serial_test::*; use serial_test::*;
@ -15,7 +15,7 @@ fn sign_up_with_invalid_email() {
}; };
assert_eq!( assert_eq!(
UserTestBuilder::new(sdk).event(SignUp).request(request).sync_send().error().code, UserTest::new(sdk).event(SignUp).request(request).sync_send().error().code,
ErrorCode::EmailFormatInvalid ErrorCode::EmailFormatInvalid
); );
} }
@ -31,23 +31,22 @@ fn sign_up_with_invalid_password() {
password, password,
}; };
UserTestBuilder::new(sdk).event(SignUp).request(request).sync_send().assert_error(); UserTest::new(sdk).event(SignUp).request(request).sync_send().assert_error();
} }
} }
#[test] #[test]
#[serial] #[serial]
fn sign_in_success() { fn sign_in_success() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let context = UserTestBuilder::new(sdk.clone()).sign_up(); let _ = UserTest::new(env.sdk()).event(SignOut).sync_send();
let _ = UserTestBuilder::new(sdk.clone()).event(SignOut).sync_send();
let request = SignInRequest { let request = SignInRequest {
email: context.user_detail.email, email: env.user.email.clone(),
password: context.password, password: env.password.clone(),
}; };
let response = UserTestBuilder::new(sdk) let response = UserTest::new(env.sdk())
.event(SignIn) .event(SignIn)
.request(request) .request(request)
.sync_send() .sync_send()
@ -66,7 +65,7 @@ fn sign_in_with_invalid_email() {
}; };
assert_eq!( assert_eq!(
UserTestBuilder::new(sdk).event(SignIn).request(request).sync_send().error().code, UserTest::new(sdk).event(SignIn).request(request).sync_send().error().code,
ErrorCode::EmailFormatInvalid ErrorCode::EmailFormatInvalid
); );
} }
@ -82,6 +81,6 @@ fn sign_in_with_invalid_password() {
password, password,
}; };
UserTestBuilder::new(sdk).event(SignIn).request(request).sync_send().assert_error(); UserTest::new(sdk).event(SignIn).request(request).sync_send().assert_error();
} }
} }

View File

@ -1,6 +1,6 @@
use crate::helper::*; use crate::helper::*;
use flowy_infra::uuid; use flowy_infra::uuid;
use flowy_test::{builder::UserTestBuilder, init_test_sdk}; use flowy_test::{builder::UserTest, init_test_sdk, FlowyEnv};
use flowy_user::{errors::ErrorCode, event::UserEvent::*, prelude::*}; use flowy_user::{errors::ErrorCode, event::UserEvent::*, prelude::*};
use serial_test::*; use serial_test::*;
@ -8,31 +8,30 @@ use serial_test::*;
#[serial] #[serial]
fn user_profile_get_failed() { fn user_profile_get_failed() {
let sdk = init_test_sdk(); let sdk = init_test_sdk();
let result = UserTestBuilder::new(sdk).event(GetUserProfile).assert_error().sync_send(); let result = UserTest::new(sdk).event(GetUserProfile).assert_error().sync_send();
assert!(result.user_detail().is_none()) assert!(result.user_detail().is_none())
} }
#[test] #[test]
#[serial] #[serial]
fn user_profile_get() { fn user_profile_get() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let user_detail = UserTestBuilder::new(sdk.clone()).sign_up().user_detail; let user = UserTest::new(env.sdk.clone())
.event(GetUserProfile)
let user_detail2 = UserTestBuilder::new(sdk).event(GetUserProfile).sync_send().parse::<UserDetail>(); .sync_send()
.parse::<UserDetail>();
assert_eq!(user_detail, user_detail2); assert_eq!(env.user, user);
} }
#[test] #[test]
#[serial] #[serial]
fn user_update_with_name() { fn user_update_with_name() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let user_detail = UserTestBuilder::new(sdk.clone()).sign_up().user_detail;
let new_name = "hello_world".to_owned(); let new_name = "hello_world".to_owned();
let request = UpdateUserRequest::new(&user_detail.id).name(&new_name); let request = UpdateUserRequest::new(&env.user.id).name(&new_name);
let _ = UserTestBuilder::new(sdk.clone()).event(UpdateUser).request(request).sync_send(); let _ = UserTest::new(env.sdk()).event(UpdateUser).request(request).sync_send();
let user_detail = UserTestBuilder::new(sdk) let user_detail = UserTest::new(env.sdk())
.event(GetUserProfile) .event(GetUserProfile)
.assert_error() .assert_error()
.sync_send() .sync_send()
@ -44,14 +43,11 @@ fn user_update_with_name() {
#[test] #[test]
#[serial] #[serial]
fn user_update_with_email() { fn user_update_with_email() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let user_detail = UserTestBuilder::new(sdk.clone()).sign_up().user_detail;
let new_email = format!("{}@gmai.com", uuid()); let new_email = format!("{}@gmai.com", uuid());
let request = UpdateUserRequest::new(&user_detail.id).email(&new_email); let request = UpdateUserRequest::new(&env.user.id).email(&new_email);
let _ = UserTest::new(env.sdk()).event(UpdateUser).request(request).sync_send();
let _ = UserTestBuilder::new(sdk.clone()).event(UpdateUser).request(request).sync_send(); let user_detail = UserTest::new(env.sdk())
let user_detail = UserTestBuilder::new(sdk)
.event(GetUserProfile) .event(GetUserProfile)
.assert_error() .assert_error()
.sync_send() .sync_send()
@ -63,12 +59,11 @@ fn user_update_with_email() {
#[test] #[test]
#[serial] #[serial]
fn user_update_with_password() { fn user_update_with_password() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let user_detail = UserTestBuilder::new(sdk.clone()).sign_up().user_detail;
let new_password = "H123world!".to_owned(); let new_password = "H123world!".to_owned();
let request = UpdateUserRequest::new(&user_detail.id).password(&new_password); let request = UpdateUserRequest::new(&env.user.id).password(&new_password);
let _ = UserTestBuilder::new(sdk) let _ = UserTest::new(env.sdk())
.event(UpdateUser) .event(UpdateUser)
.request(request) .request(request)
.sync_send() .sync_send()
@ -78,17 +73,11 @@ fn user_update_with_password() {
#[test] #[test]
#[serial] #[serial]
fn user_update_with_invalid_email() { fn user_update_with_invalid_email() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let user_detail = UserTestBuilder::new(sdk.clone()).sign_up().user_detail;
for email in invalid_email_test_case() { for email in invalid_email_test_case() {
let request = UpdateUserRequest::new(&user_detail.id).email(&email); let request = UpdateUserRequest::new(&env.user.id).email(&email);
assert_eq!( assert_eq!(
UserTestBuilder::new(sdk.clone()) UserTest::new(env.sdk()).event(UpdateUser).request(request).sync_send().error().code,
.event(UpdateUser)
.request(request)
.sync_send()
.error()
.code,
ErrorCode::EmailFormatInvalid ErrorCode::EmailFormatInvalid
); );
} }
@ -97,12 +86,11 @@ fn user_update_with_invalid_email() {
#[test] #[test]
#[serial] #[serial]
fn user_update_with_invalid_password() { fn user_update_with_invalid_password() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let user_detail = UserTestBuilder::new(sdk.clone()).sign_up().user_detail;
for password in invalid_password_test_case() { for password in invalid_password_test_case() {
let request = UpdateUserRequest::new(&user_detail.id).password(&password); let request = UpdateUserRequest::new(&env.user.id).password(&password);
UserTestBuilder::new(sdk.clone()) UserTest::new(env.sdk())
.event(UpdateUser) .event(UpdateUser)
.request(request) .request(request)
.sync_send() .sync_send()
@ -113,11 +101,9 @@ fn user_update_with_invalid_password() {
#[test] #[test]
#[serial] #[serial]
fn user_update_with_invalid_name() { fn user_update_with_invalid_name() {
let sdk = init_test_sdk(); let env = FlowyEnv::setup();
let user_detail = UserTestBuilder::new(sdk.clone()).sign_up().user_detail; let request = UpdateUserRequest::new(&env.user.id).name("");
let request = UpdateUserRequest::new(&user_detail.id).name(""); UserTest::new(env.sdk())
UserTestBuilder::new(sdk)
.event(UpdateUser) .event(UpdateUser)
.request(request) .request(request)
.sync_send() .sync_send()

View File

@ -8,7 +8,7 @@ use flowy_workspace::entities::{
#[test] #[test]
fn app_create() { fn app_create() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let workspace = create_workspace(&sdk, "Workspace", ""); let workspace = create_workspace(&sdk, "Workspace", "");
let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id); let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id);
dbg!(&app); dbg!(&app);
@ -17,7 +17,7 @@ fn app_create() {
#[test] #[test]
#[should_panic] #[should_panic]
fn app_delete() { fn app_delete() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let workspace = create_workspace(&sdk, "Workspace", ""); let workspace = create_workspace(&sdk, "Workspace", "");
let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id); let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id);
delete_app(&sdk, &app.id); delete_app(&sdk, &app.id);
@ -27,7 +27,7 @@ fn app_delete() {
#[test] #[test]
fn app_read() { fn app_read() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let workspace = create_workspace(&sdk, "Workspace", ""); let workspace = create_workspace(&sdk, "Workspace", "");
let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id); let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id);
@ -38,7 +38,7 @@ fn app_read() {
#[test] #[test]
fn app_create_with_view() { fn app_create_with_view() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let workspace = create_workspace(&sdk, "Workspace", ""); let workspace = create_workspace(&sdk, "Workspace", "");
let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id); let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id);
let request_a = CreateViewRequest { let request_a = CreateViewRequest {
@ -69,7 +69,7 @@ fn app_create_with_view() {
#[test] #[test]
fn app_set_trash_flag() { fn app_set_trash_flag() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let app_id = create_app_with_trash_flag(&sdk); let app_id = create_app_with_trash_flag(&sdk);
let query = QueryAppRequest::new(&app_id).set_is_trash(true); let query = QueryAppRequest::new(&app_id).set_is_trash(true);
let _ = read_app(&sdk, query); let _ = read_app(&sdk, query);
@ -78,7 +78,7 @@ fn app_set_trash_flag() {
#[test] #[test]
#[should_panic] #[should_panic]
fn app_set_trash_flag_2() { fn app_set_trash_flag_2() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let app_id = create_app_with_trash_flag(&sdk); let app_id = create_app_with_trash_flag(&sdk);
let query = QueryAppRequest::new(&app_id); let query = QueryAppRequest::new(&app_id);
let _ = read_app(&sdk, query); let _ = read_app(&sdk, query);

View File

@ -17,7 +17,7 @@ pub fn create_workspace(sdk: &FlowyTestSDK, name: &str, desc: &str) -> Workspace
desc: desc.to_owned(), desc: desc.to_owned(),
}; };
let workspace = WorkspaceTestBuilder::new(sdk.clone()) let workspace = WorkspaceTest::new(sdk.clone())
.event(CreateWorkspace) .event(CreateWorkspace)
.request(request) .request(request)
.sync_send() .sync_send()
@ -26,7 +26,7 @@ pub fn create_workspace(sdk: &FlowyTestSDK, name: &str, desc: &str) -> Workspace
} }
pub fn read_workspaces(sdk: &FlowyTestSDK, request: QueryWorkspaceRequest) -> Option<Workspace> { pub fn read_workspaces(sdk: &FlowyTestSDK, request: QueryWorkspaceRequest) -> Option<Workspace> {
let mut repeated_workspace = WorkspaceTestBuilder::new(sdk.clone()) let mut repeated_workspace = WorkspaceTest::new(sdk.clone())
.event(ReadWorkspaces) .event(ReadWorkspaces)
.request(request) .request(request)
.sync_send() .sync_send()
@ -44,7 +44,7 @@ pub fn create_app(sdk: &FlowyTestSDK, name: &str, desc: &str, workspace_id: &str
color_style: Default::default(), color_style: Default::default(),
}; };
let app = WorkspaceTestBuilder::new(sdk.clone()) let app = WorkspaceTest::new(sdk.clone())
.event(CreateApp) .event(CreateApp)
.request(create_app_request) .request(create_app_request)
.sync_send() .sync_send()
@ -57,18 +57,18 @@ pub fn delete_app(sdk: &FlowyTestSDK, app_id: &str) {
app_id: app_id.to_string(), app_id: app_id.to_string(),
}; };
WorkspaceTestBuilder::new(sdk.clone()) WorkspaceTest::new(sdk.clone())
.event(DeleteApp) .event(DeleteApp)
.request(delete_app_request) .request(delete_app_request)
.sync_send(); .sync_send();
} }
pub fn update_app(sdk: &FlowyTestSDK, request: UpdateAppRequest) { pub fn update_app(sdk: &FlowyTestSDK, request: UpdateAppRequest) {
WorkspaceTestBuilder::new(sdk.clone()).event(UpdateApp).request(request).sync_send(); WorkspaceTest::new(sdk.clone()).event(UpdateApp).request(request).sync_send();
} }
pub fn read_app(sdk: &FlowyTestSDK, request: QueryAppRequest) -> App { pub fn read_app(sdk: &FlowyTestSDK, request: QueryAppRequest) -> App {
let app = WorkspaceTestBuilder::new(sdk.clone()) let app = WorkspaceTest::new(sdk.clone())
.event(ReadApp) .event(ReadApp)
.request(request) .request(request)
.sync_send() .sync_send()
@ -78,7 +78,7 @@ pub fn read_app(sdk: &FlowyTestSDK, request: QueryAppRequest) -> App {
} }
pub fn create_view_with_request(sdk: &FlowyTestSDK, request: CreateViewRequest) -> View { pub fn create_view_with_request(sdk: &FlowyTestSDK, request: CreateViewRequest) -> View {
let view = WorkspaceTestBuilder::new(sdk.clone()) let view = WorkspaceTest::new(sdk.clone())
.event(CreateView) .event(CreateView)
.request(request) .request(request)
.sync_send() .sync_send()
@ -101,14 +101,11 @@ pub fn create_view(sdk: &FlowyTestSDK, workspace_id: &str) -> View {
} }
pub fn update_view(sdk: &FlowyTestSDK, request: UpdateViewRequest) { pub fn update_view(sdk: &FlowyTestSDK, request: UpdateViewRequest) {
WorkspaceTestBuilder::new(sdk.clone()) WorkspaceTest::new(sdk.clone()).event(UpdateView).request(request).sync_send();
.event(UpdateView)
.request(request)
.sync_send();
} }
pub fn read_view(sdk: &FlowyTestSDK, request: QueryViewRequest) -> View { pub fn read_view(sdk: &FlowyTestSDK, request: QueryViewRequest) -> View {
WorkspaceTestBuilder::new(sdk.clone()) WorkspaceTest::new(sdk.clone())
.event(ReadView) .event(ReadView)
.request(request) .request(request)
.sync_send() .sync_send()

View File

@ -1,18 +1,18 @@
use crate::helper::*; use crate::helper::*;
use flowy_test::{FlowyTestSDK, TestSDKBuilder}; use flowy_test::{FlowyEnv, FlowyTestSDK};
use flowy_workspace::entities::view::*; use flowy_workspace::entities::view::*;
#[test] #[test]
fn view_create() { fn view_create() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let workspace = create_workspace(&sdk, "Workspace", ""); let workspace = create_workspace(&sdk, "Workspace", "");
let _ = create_view(&sdk, &workspace.id); let _ = create_view(&sdk, &workspace.id);
} }
#[test] #[test]
fn view_set_trash_flag() { fn view_set_trash_flag() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let view_id = create_view_with_trash_flag(&sdk); let view_id = create_view_with_trash_flag(&sdk);
let query = QueryViewRequest::new(&view_id).set_is_trash(true); let query = QueryViewRequest::new(&view_id).set_is_trash(true);
let _ = read_view(&sdk, query); let _ = read_view(&sdk, query);
@ -21,7 +21,7 @@ fn view_set_trash_flag() {
#[test] #[test]
#[should_panic] #[should_panic]
fn view_set_trash_flag2() { fn view_set_trash_flag2() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let view_id = create_view_with_trash_flag(&sdk); let view_id = create_view_with_trash_flag(&sdk);
let query = QueryViewRequest::new(&view_id); let query = QueryViewRequest::new(&view_id);

View File

@ -1,5 +1,5 @@
use crate::helper::*; use crate::helper::*;
use flowy_test::{builder::*, TestSDKBuilder}; use flowy_test::{builder::*, FlowyEnv};
use flowy_workspace::{ use flowy_workspace::{
entities::workspace::{CreateWorkspaceRequest, QueryWorkspaceRequest, RepeatedWorkspace}, entities::workspace::{CreateWorkspaceRequest, QueryWorkspaceRequest, RepeatedWorkspace},
event::WorkspaceEvent::*, event::WorkspaceEvent::*,
@ -8,16 +8,16 @@ use flowy_workspace::{
#[test] #[test]
fn workspace_create_success() { fn workspace_create_success() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let _ = create_workspace(&sdk, "First workspace", ""); let _ = create_workspace(&sdk, "First workspace", "");
} }
#[test] #[test]
fn workspace_read_all() { fn workspace_read_all() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let _ = create_workspace(&sdk, "Workspace A", "workspace_create_and_then_get_workspace_success"); let _ = create_workspace(&sdk, "Workspace A", "workspace_create_and_then_get_workspace_success");
let workspaces = WorkspaceTestBuilder::new(sdk.clone()) let workspaces = WorkspaceTest::new(sdk.clone())
.event(ReadWorkspaces) .event(ReadWorkspaces)
.request(QueryWorkspaceRequest::new()) .request(QueryWorkspaceRequest::new())
.sync_send() .sync_send()
@ -28,7 +28,7 @@ fn workspace_read_all() {
#[test] #[test]
fn workspace_create_and_then_get_workspace() { fn workspace_create_and_then_get_workspace() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let workspace = create_workspace(&sdk, "Workspace A", "workspace_create_and_then_get_workspace_success"); let workspace = create_workspace(&sdk, "Workspace A", "workspace_create_and_then_get_workspace_success");
let request = QueryWorkspaceRequest::new().workspace_id(&workspace.id); let request = QueryWorkspaceRequest::new().workspace_id(&workspace.id);
let workspace_from_db = read_workspaces(&sdk, request).unwrap(); let workspace_from_db = read_workspaces(&sdk, request).unwrap();
@ -37,7 +37,7 @@ fn workspace_create_and_then_get_workspace() {
#[test] #[test]
fn workspace_create_with_apps() { fn workspace_create_with_apps() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
let workspace = create_workspace(&sdk, "Workspace", ""); let workspace = create_workspace(&sdk, "Workspace", "");
let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id); let app = create_app(&sdk, "App A", "AppFlowy Github Project", &workspace.id);
@ -48,12 +48,11 @@ fn workspace_create_with_apps() {
#[test] #[test]
fn workspace_create_with_invalid_name() { fn workspace_create_with_invalid_name() {
let sdk = TestSDKBuilder::new().sign_up().build();
for name in invalid_workspace_name_test_case() { for name in invalid_workspace_name_test_case() {
let _ = UserTestBuilder::new(sdk.clone()).sign_up(); let sdk = FlowyEnv::setup().sdk;
let request = CreateWorkspaceRequest { name, desc: "".to_owned() }; let request = CreateWorkspaceRequest { name, desc: "".to_owned() };
assert_eq!( assert_eq!(
WorkspaceTestBuilder::new(sdk.clone()) WorkspaceTest::new(sdk)
.event(CreateWorkspace) .event(CreateWorkspace)
.request(request) .request(request)
.sync_send() .sync_send()
@ -66,11 +65,11 @@ fn workspace_create_with_invalid_name() {
#[test] #[test]
fn workspace_update_with_invalid_name() { fn workspace_update_with_invalid_name() {
let sdk = TestSDKBuilder::new().sign_up().build(); let sdk = FlowyEnv::setup().sdk;
for name in invalid_workspace_name_test_case() { for name in invalid_workspace_name_test_case() {
let request = CreateWorkspaceRequest { name, desc: "".to_owned() }; let request = CreateWorkspaceRequest { name, desc: "".to_owned() };
assert_eq!( assert_eq!(
WorkspaceTestBuilder::new(sdk.clone()) WorkspaceTest::new(sdk.clone())
.event(CreateWorkspace) .event(CreateWorkspace)
.request(request) .request(request)
.sync_send() .sync_send()