chore: rename folder builder for re-use (#5020)

This commit is contained in:
Richard Shiue
2024-04-10 11:40:02 +08:00
committed by GitHub
parent 17df31a512
commit 12ec90ada0
4 changed files with 29 additions and 26 deletions

View File

@ -1,21 +1,22 @@
use std::future::Future;
use crate::cloud::gen_view_id;
use collab_folder::{RepeatedViewIdentifier, View, ViewIcon, ViewIdentifier, ViewLayout};
use lib_infra::util::timestamp;
use std::future::Future;
/// A builder for creating a view for a workspace.
/// The views created by this builder will be the first level views of the workspace.
pub struct WorkspaceViewBuilder {
/// A builder for creating views, each able to have children views of
/// their own.
pub struct NestedViewBuilder {
pub uid: i64,
pub workspace_id: String,
pub parent_view_id: String,
pub views: Vec<ParentChildViews>,
}
impl WorkspaceViewBuilder {
pub fn new(workspace_id: String, uid: i64) -> Self {
impl NestedViewBuilder {
pub fn new(parent_view_id: String, uid: i64) -> Self {
Self {
uid,
workspace_id,
parent_view_id,
views: vec![],
}
}
@ -25,7 +26,7 @@ impl WorkspaceViewBuilder {
F: Fn(ViewBuilder) -> O,
O: Future<Output = ParentChildViews>,
{
let builder = ViewBuilder::new(self.uid, self.workspace_id.clone());
let builder = ViewBuilder::new(self.uid, self.parent_view_id.clone());
self.views.push(view_builder(builder).await);
}
@ -182,12 +183,12 @@ impl FlattedViews {
#[cfg(test)]
mod tests {
use crate::folder_builder::{FlattedViews, WorkspaceViewBuilder};
use crate::folder_builder::{FlattedViews, NestedViewBuilder};
#[tokio::test]
async fn create_first_level_views_test() {
let workspace_id = "w1".to_string();
let mut builder = WorkspaceViewBuilder::new(workspace_id, 1);
let mut builder = NestedViewBuilder::new(workspace_id, 1);
builder
.with_view_builder(|view_builder| async { view_builder.with_name("1").build() })
.await;
@ -207,7 +208,7 @@ mod tests {
#[tokio::test]
async fn create_view_with_child_views_test() {
let workspace_id = "w1".to_string();
let mut builder = WorkspaceViewBuilder::new(workspace_id, 1);
let mut builder = NestedViewBuilder::new(workspace_id, 1);
builder
.with_view_builder(|view_builder| async {
view_builder
@ -247,10 +248,11 @@ mod tests {
let views = FlattedViews::flatten_views(workspace_views);
assert_eq!(views.len(), 5);
}
#[tokio::test]
async fn create_three_level_view_test() {
let workspace_id = "w1".to_string();
let mut builder = WorkspaceViewBuilder::new(workspace_id, 1);
let mut builder = NestedViewBuilder::new(workspace_id, 1);
builder
.with_view_builder(|view_builder| async {
view_builder