mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: support updating the view name and icon through document (#3099)
* feat: support updating the view name and icon through document * fix: store expand pages * fix: refactor text link * fix: update cargo.toml * fix: update test * fix: update event map * fix: move deal with icon codes to a single file * fix: delete useless code from flutter * fix: document banner * fix: build error * fix: update rust library --------- Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
use crate::script::{FolderScript::*, FolderTest};
|
||||
use collab_folder::core::ViewLayout;
|
||||
use flowy_folder2::entities::icon::{ViewIconPB, ViewIconTypePB};
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_all_workspace_test() {
|
||||
@ -152,6 +153,32 @@ async fn view_update() {
|
||||
assert_eq!(test.child_view.name, new_name);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn view_icon_update_test() {
|
||||
let mut test = FolderTest::new().await;
|
||||
let view = test.child_view.clone();
|
||||
let new_icon = ViewIconPB {
|
||||
ty: ViewIconTypePB::Emoji,
|
||||
value: "👍".to_owned(),
|
||||
};
|
||||
assert!(view.icon.is_none());
|
||||
test
|
||||
.run_scripts(vec![
|
||||
UpdateViewIcon {
|
||||
icon: Some(new_icon.clone()),
|
||||
},
|
||||
ReadView(view.id.clone()),
|
||||
])
|
||||
.await;
|
||||
|
||||
assert_eq!(test.child_view.icon, Some(new_icon));
|
||||
|
||||
test
|
||||
.run_scripts(vec![UpdateViewIcon { icon: None }, ReadView(view.id)])
|
||||
.await;
|
||||
assert_eq!(test.child_view.icon, None);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[should_panic]
|
||||
async fn view_delete() {
|
||||
@ -263,8 +290,8 @@ async fn toggle_favorites() {
|
||||
ReadView(view.id.clone()),
|
||||
])
|
||||
.await;
|
||||
assert_eq!(test.child_view.is_favorite, true);
|
||||
assert!(test.favorites.len() != 0);
|
||||
assert!(test.child_view.is_favorite);
|
||||
assert_ne!(test.favorites.len(), 0);
|
||||
assert_eq!(test.favorites[0].id, view.id);
|
||||
|
||||
let view = test.child_view.clone();
|
||||
@ -293,12 +320,12 @@ async fn delete_favorites() {
|
||||
ReadView(view.id.clone()),
|
||||
])
|
||||
.await;
|
||||
assert_eq!(test.child_view.is_favorite, true);
|
||||
assert!(test.favorites.len() != 0);
|
||||
assert!(test.child_view.is_favorite);
|
||||
assert_ne!(test.favorites.len(), 0);
|
||||
assert_eq!(test.favorites[0].id, view.id);
|
||||
|
||||
test.run_scripts(vec![DeleteView, ReadFavorites]).await;
|
||||
assert!(test.favorites.len() == 0);
|
||||
assert_eq!(test.favorites.len(), 0);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -1,5 +1,6 @@
|
||||
use collab_folder::core::ViewLayout;
|
||||
|
||||
use flowy_folder2::entities::icon::{UpdateViewIconPayloadPB, ViewIconPB};
|
||||
use flowy_folder2::entities::*;
|
||||
use flowy_folder2::event_map::FolderEvent::*;
|
||||
use flowy_test::event_builder::EventBuilder;
|
||||
@ -42,6 +43,9 @@ pub enum FolderScript {
|
||||
desc: Option<String>,
|
||||
is_favorite: Option<bool>,
|
||||
},
|
||||
UpdateViewIcon {
|
||||
icon: Option<ViewIconPB>,
|
||||
},
|
||||
DeleteView,
|
||||
DeleteViews(Vec<String>),
|
||||
MoveView {
|
||||
@ -164,6 +168,9 @@ impl FolderTest {
|
||||
} => {
|
||||
update_view(sdk, &self.child_view.id, name, desc, is_favorite).await;
|
||||
},
|
||||
FolderScript::UpdateViewIcon { icon } => {
|
||||
update_view_icon(sdk, &self.child_view.id, icon).await;
|
||||
},
|
||||
FolderScript::DeleteView => {
|
||||
delete_view(sdk, vec![self.child_view.id.clone()]).await;
|
||||
},
|
||||
@ -333,6 +340,18 @@ pub async fn update_view(
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn update_view_icon(sdk: &FlowyCoreTest, view_id: &str, icon: Option<ViewIconPB>) {
|
||||
let request = UpdateViewIconPayloadPB {
|
||||
view_id: view_id.to_string(),
|
||||
icon,
|
||||
};
|
||||
EventBuilder::new(sdk.clone())
|
||||
.event(UpdateViewIcon)
|
||||
.payload(request)
|
||||
.async_send()
|
||||
.await;
|
||||
}
|
||||
|
||||
pub async fn delete_view(sdk: &FlowyCoreTest, view_ids: Vec<String>) {
|
||||
let request = RepeatedViewIdPB { items: view_ids };
|
||||
EventBuilder::new(sdk.clone())
|
||||
|
Reference in New Issue
Block a user