feat: support favorites folder

This commit is contained in:
Mihir
2023-08-02 18:50:51 +05:30
committed by GitHub
parent ff79635b2b
commit a1143e24f3
50 changed files with 1268 additions and 172 deletions

View File

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

View File

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