chore: add a params

This commit is contained in:
qinluhe 2024-07-02 15:39:45 +08:00
parent 9c68983ff3
commit e852d25ad8
3 changed files with 54 additions and 12 deletions

View File

@ -174,9 +174,15 @@ impl EventIntegrationTest {
folder.get_folder_data(&workspace_id).clone().unwrap()
}
pub async fn get_publish_payload(&self, view_id: &str) -> Vec<PublishViewPayload> {
pub async fn get_publish_payload(
&self,
view_id: &str,
include_children: Option<bool>,
) -> Vec<PublishViewPayload> {
let manager = self.folder_manager.clone();
let payload = manager.get_batch_publish_payload(view_id, None).await;
let payload = manager
.get_batch_publish_payload(view_id, None, include_children)
.await;
if payload.is_err() {
panic!("Get publish payload failed")

View File

@ -126,12 +126,12 @@ async fn single_document_get_publish_view_payload_test() {
let name = "Orphan View";
create_single_document(&test, view_id, name).await;
let view = test.get_view(view_id).await;
let payload = test.get_publish_payload(view_id).await;
let payload = test.get_publish_payload(view_id, Some(true)).await;
let expect_payload = mock_single_document_view_publish_payload(
&test,
&view,
format!("{}_{}", "Orphan_View", view_id),
format!("{}-{}", "Orphan-View", view_id),
)
.await;
@ -145,15 +145,48 @@ async fn nested_document_get_publish_view_payload_test() {
let view_id = "20240521";
create_nested_document(&test, view_id, name).await;
let view = test.get_view(view_id).await;
let payload = test.get_publish_payload(view_id).await;
let payload = test.get_publish_payload(view_id, Some(true)).await;
let expect_payload = mock_nested_document_view_publish_payload(
&test,
&view,
format!("{}_{}", "Orphan_View", view_id),
format!("{}-{}", "Orphan-View", view_id),
)
.await;
assert_eq!(payload.len(), 2);
assert_eq!(payload, expect_payload);
}
#[tokio::test]
async fn no_children_publish_view_payload_test() {
let test = EventIntegrationTest::new_anon().await;
let name = "Orphan View";
let view_id = "20240521";
create_nested_document(&test, view_id, name).await;
let view = test.get_view(view_id).await;
let payload = test.get_publish_payload(view_id, Some(false)).await;
let data = mock_single_document_view_publish_payload(
&test,
&view,
format!("{}-{}", "Orphan-View", view_id),
)
.await
.iter()
.map(|p| p.data.clone())
.collect::<Vec<_>>();
let meta = mock_nested_document_view_publish_payload(
&test,
&view,
format!("{}-{}", "Orphan-View", view_id),
)
.await
.iter()
.map(|p| p.meta.clone())
.collect::<Vec<_>>();
assert_eq!(payload.len(), 1);
assert_eq!(&payload[0].data, &data[0]);
assert_eq!(&payload[0].meta, &meta[0]);
}

View File

@ -3,7 +3,7 @@ use crate::entities::{
view_pb_with_child_views, view_pb_without_child_views, view_pb_without_child_views_from_arc,
CreateViewParams, CreateWorkspaceParams, DeletedViewPB, DuplicateViewParams, FolderSnapshotPB,
MoveNestedViewParams, RepeatedTrashPB, RepeatedViewIdPB, RepeatedViewPB, UpdateViewParams,
ViewPB, ViewSectionPB, WorkspacePB, WorkspaceSettingPB, ViewLayoutPB
ViewLayoutPB, ViewPB, ViewSectionPB, WorkspacePB, WorkspaceSettingPB,
};
use crate::manager_observer::{
notify_child_views_changed, notify_did_update_workspace, notify_parent_view_did_change,
@ -23,7 +23,7 @@ use collab_entity::CollabType;
use collab_folder::error::FolderError;
use collab_folder::{
Folder, FolderNotify, Section, SectionItem, TrashInfo, UserId, View, ViewLayout, ViewUpdate,
Workspace
Workspace,
};
use collab_integrate::collab_builder::{AppFlowyCollabBuilder, CollabBuilderConfig};
use collab_integrate::CollabKVDB;
@ -959,7 +959,7 @@ impl FolderManager {
// Get the view payload and its child views recursively
let payload = self
.get_batch_publish_payload(view_id, publish_name)
.get_batch_publish_payload(view_id, publish_name, Some(false))
.await?;
let workspace_id = self.user.workspace_id()?;
@ -1018,6 +1018,7 @@ impl FolderManager {
&self,
view_id: &str,
publish_name: Option<String>,
include_children: Option<bool>,
) -> FlowyResult<Vec<PublishViewPayload>> {
let mut stack = vec![view_id.to_string()];
let mut payloads = Vec::new();
@ -1050,9 +1051,11 @@ impl FolderManager {
payloads.push(payload);
}
// Add the child views to the stack
for child in &view.child_views {
stack.push(child.id.clone());
if include_children.unwrap_or(false) {
// Add the child views to the stack
for child in &view.child_views {
stack.push(child.id.clone());
}
}
}