mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: support favorites folder
This commit is contained in:
@ -98,6 +98,7 @@ async fn update_parent_view_test() {
|
||||
UpdateParentView {
|
||||
name: Some(new_name.clone()),
|
||||
desc: None,
|
||||
is_favorite: None,
|
||||
},
|
||||
ReloadParentView(parent_view.id),
|
||||
])
|
||||
@ -143,6 +144,7 @@ async fn view_update() {
|
||||
UpdateView {
|
||||
name: Some(new_name.clone()),
|
||||
desc: None,
|
||||
is_favorite: None,
|
||||
},
|
||||
ReadView(view.id),
|
||||
])
|
||||
@ -249,6 +251,56 @@ async fn view_delete_all_permanent() {
|
||||
assert_eq!(test.trash.len(), 0);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn toggle_favorites() {
|
||||
let mut test = FolderTest::new().await;
|
||||
let view = test.child_view.clone();
|
||||
test
|
||||
.run_scripts(vec![
|
||||
ReadView(view.id.clone()),
|
||||
ToggleFavorite,
|
||||
ReadFavorites,
|
||||
ReadView(view.id.clone()),
|
||||
])
|
||||
.await;
|
||||
assert_eq!(test.child_view.is_favorite, true);
|
||||
assert!(test.favorites.len() != 0);
|
||||
assert_eq!(test.favorites[0].id, view.id);
|
||||
|
||||
let view = test.child_view.clone();
|
||||
test
|
||||
.run_scripts(vec![
|
||||
ReadView(view.id.clone()),
|
||||
ToggleFavorite,
|
||||
ReadFavorites,
|
||||
ReadView(view.id.clone()),
|
||||
])
|
||||
.await;
|
||||
|
||||
assert!(!test.child_view.is_favorite);
|
||||
assert!(test.favorites.is_empty());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn delete_favorites() {
|
||||
let mut test = FolderTest::new().await;
|
||||
let view = test.child_view.clone();
|
||||
test
|
||||
.run_scripts(vec![
|
||||
ReadView(view.id.clone()),
|
||||
ToggleFavorite,
|
||||
ReadFavorites,
|
||||
ReadView(view.id.clone()),
|
||||
])
|
||||
.await;
|
||||
assert_eq!(test.child_view.is_favorite, true);
|
||||
assert!(test.favorites.len() != 0);
|
||||
assert_eq!(test.favorites[0].id, view.id);
|
||||
|
||||
test.run_scripts(vec![DeleteView, ReadFavorites]).await;
|
||||
assert!(test.favorites.len() == 0);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn move_view_event_test() {
|
||||
let mut test = FolderTest::new().await;
|
||||
|
@ -25,6 +25,7 @@ pub enum FolderScript {
|
||||
UpdateParentView {
|
||||
name: Option<String>,
|
||||
desc: Option<String>,
|
||||
is_favorite: Option<bool>,
|
||||
},
|
||||
DeleteParentView,
|
||||
|
||||
@ -39,6 +40,7 @@ pub enum FolderScript {
|
||||
UpdateView {
|
||||
name: Option<String>,
|
||||
desc: Option<String>,
|
||||
is_favorite: Option<bool>,
|
||||
},
|
||||
DeleteView,
|
||||
DeleteViews(Vec<String>),
|
||||
@ -53,6 +55,8 @@ pub enum FolderScript {
|
||||
RestoreViewFromTrash,
|
||||
ReadTrash,
|
||||
DeleteAllTrash,
|
||||
ToggleFavorite,
|
||||
ReadFavorites,
|
||||
}
|
||||
|
||||
pub struct FolderTest {
|
||||
@ -62,6 +66,7 @@ pub struct FolderTest {
|
||||
pub parent_view: ViewPB,
|
||||
pub child_view: ViewPB,
|
||||
pub trash: Vec<TrashPB>,
|
||||
pub favorites: Vec<ViewPB>,
|
||||
}
|
||||
|
||||
impl FolderTest {
|
||||
@ -85,6 +90,7 @@ impl FolderTest {
|
||||
parent_view,
|
||||
child_view: view,
|
||||
trash: vec![],
|
||||
favorites: vec![],
|
||||
}
|
||||
}
|
||||
|
||||
@ -123,8 +129,12 @@ impl FolderTest {
|
||||
let parent_view = read_view(sdk, &parent_view_id).await;
|
||||
self.parent_view = parent_view;
|
||||
},
|
||||
FolderScript::UpdateParentView { name, desc } => {
|
||||
update_view(sdk, &self.parent_view.id, name, desc).await;
|
||||
FolderScript::UpdateParentView {
|
||||
name,
|
||||
desc,
|
||||
is_favorite,
|
||||
} => {
|
||||
update_view(sdk, &self.parent_view.id, name, desc, is_favorite).await;
|
||||
},
|
||||
FolderScript::DeleteParentView => {
|
||||
delete_view(sdk, vec![self.parent_view.id.clone()]).await;
|
||||
@ -147,8 +157,12 @@ impl FolderTest {
|
||||
let view = read_view(sdk, &view_id).await;
|
||||
self.child_view = view;
|
||||
},
|
||||
FolderScript::UpdateView { name, desc } => {
|
||||
update_view(sdk, &self.child_view.id, name, desc).await;
|
||||
FolderScript::UpdateView {
|
||||
name,
|
||||
desc,
|
||||
is_favorite,
|
||||
} => {
|
||||
update_view(sdk, &self.child_view.id, name, desc, is_favorite).await;
|
||||
},
|
||||
FolderScript::DeleteView => {
|
||||
delete_view(sdk, vec![self.child_view.id.clone()]).await;
|
||||
@ -170,6 +184,13 @@ impl FolderTest {
|
||||
delete_all_trash(sdk).await;
|
||||
self.trash = vec![];
|
||||
},
|
||||
FolderScript::ToggleFavorite => {
|
||||
toggle_favorites(sdk, vec![self.child_view.id.clone()]).await;
|
||||
},
|
||||
FolderScript::ReadFavorites => {
|
||||
let favorites = read_favorites(sdk).await;
|
||||
self.favorites = favorites.to_vec();
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -223,6 +244,7 @@ pub async fn create_app(sdk: &FlowyCoreTest, workspace_id: &str, name: &str, des
|
||||
initial_data: vec![],
|
||||
meta: Default::default(),
|
||||
set_as_current: true,
|
||||
index: None,
|
||||
};
|
||||
|
||||
EventBuilder::new(sdk.clone())
|
||||
@ -249,6 +271,7 @@ pub async fn create_view(
|
||||
initial_data: vec![],
|
||||
meta: Default::default(),
|
||||
set_as_current: true,
|
||||
index: None,
|
||||
};
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(CreateView)
|
||||
@ -293,11 +316,14 @@ pub async fn update_view(
|
||||
view_id: &str,
|
||||
name: Option<String>,
|
||||
desc: Option<String>,
|
||||
is_favorite: Option<bool>,
|
||||
) {
|
||||
println!("Toggling update view {:?}", is_favorite);
|
||||
let request = UpdateViewPayloadPB {
|
||||
view_id: view_id.to_string(),
|
||||
name,
|
||||
desc,
|
||||
is_favorite,
|
||||
..Default::default()
|
||||
};
|
||||
EventBuilder::new(sdk.clone())
|
||||
@ -352,3 +378,20 @@ pub async fn delete_all_trash(sdk: &FlowyCoreTest) {
|
||||
.async_send()
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn toggle_favorites(sdk: &FlowyCoreTest, view_id: Vec<String>) {
|
||||
let request = RepeatedViewIdPB { items: view_id };
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(ToggleFavorite)
|
||||
.payload(request)
|
||||
.async_send()
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn read_favorites(sdk: &FlowyCoreTest) -> RepeatedViewPB {
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(ReadFavorites)
|
||||
.async_send()
|
||||
.await
|
||||
.parse::<RepeatedViewPB>()
|
||||
}
|
||||
|
Reference in New Issue
Block a user