use app_error::ErrorCode; use client_api_test_util::TestClient; use collab::core::transaction::DocTransactionExtension; use collab::preclude::Doc; use collab_entity::CollabType; use database_entity::dto::CreateCollabParams; use workspace_template::document::get_started::GetStartedDocumentTemplate; use workspace_template::WorkspaceTemplateBuilder; #[tokio::test] async fn insert_empty_data_test() { let test_client = TestClient::new_user().await; let workspace_id = test_client.workspace_id().await; let object_id = uuid::Uuid::new_v4().to_string(); // test all collab type for collab_type in [ CollabType::Folder, CollabType::Document, CollabType::UserAwareness, CollabType::WorkspaceDatabase, CollabType::Database, CollabType::DatabaseRow, ] { let params = CreateCollabParams { workspace_id: workspace_id.clone(), object_id: object_id.clone(), encoded_collab_v1: vec![], collab_type, override_if_exist: false, }; let error = test_client .api_client .create_collab(params) .await .unwrap_err(); assert_eq!(error.code, ErrorCode::InvalidRequest); } } #[tokio::test] async fn insert_invalid_data_test() { let test_client = TestClient::new_user().await; let workspace_id = test_client.workspace_id().await; let object_id = uuid::Uuid::new_v4().to_string(); let doc = Doc::new(); let encoded_collab_v1 = doc.get_encoded_collab_v1().encode_to_bytes().unwrap(); for collab_type in [ CollabType::Folder, CollabType::Document, CollabType::UserAwareness, CollabType::WorkspaceDatabase, CollabType::Database, CollabType::DatabaseRow, ] { let params = CreateCollabParams { workspace_id: workspace_id.clone(), object_id: object_id.clone(), encoded_collab_v1: encoded_collab_v1.clone(), collab_type: collab_type.clone(), override_if_exist: false, }; let error = test_client .api_client .create_collab(params) .await .unwrap_err(); assert_eq!( error.code, ErrorCode::NoRequiredData, "collab_type: {:?}", collab_type ); } } #[tokio::test] async fn insert_folder_data_success_test() { let test_client = TestClient::new_user().await; let workspace_id = test_client.workspace_id().await; let object_id = uuid::Uuid::new_v4().to_string(); let uid = test_client.uid().await; let templates = WorkspaceTemplateBuilder::new(uid, &workspace_id) .with_templates(vec![GetStartedDocumentTemplate]) .build() .await .unwrap(); assert_eq!(templates.len(), 2); for (index, template) in templates.into_iter().enumerate() { if index == 0 { assert_eq!(template.object_type, CollabType::Document); } if index == 1 { assert_eq!(template.object_type, CollabType::Folder); } let data = template.object_data.encode_to_bytes().unwrap(); let params = CreateCollabParams { workspace_id: workspace_id.clone(), object_id: object_id.clone(), encoded_collab_v1: data, collab_type: template.object_type, override_if_exist: false, }; test_client.api_client.create_collab(params).await.unwrap(); } }