2023-06-15 10:37:51 +08:00
|
|
|
use flowy_document2::entities::*;
|
2023-07-04 17:17:25 +08:00
|
|
|
use flowy_test::document::document_event::DocumentEventTest;
|
|
|
|
use flowy_test::document::utils::*;
|
2023-06-15 10:37:51 +08:00
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn get_document_event_test() {
|
|
|
|
let test = DocumentEventTest::new().await;
|
|
|
|
let view = test.create_document().await;
|
|
|
|
let document = test.open_document(view.id).await;
|
|
|
|
let document_data = document.data;
|
|
|
|
assert!(!document_data.page_id.is_empty());
|
|
|
|
assert!(document_data.blocks.len() > 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn apply_document_event_test() {
|
|
|
|
let test = DocumentEventTest::new().await;
|
|
|
|
let view = test.create_document().await;
|
|
|
|
let doc_id = view.id.clone();
|
|
|
|
let document = test.open_document(doc_id.clone()).await;
|
|
|
|
let block_count = document.data.blocks.len();
|
|
|
|
let insert_action = gen_insert_block_action(document);
|
|
|
|
let payload = ApplyActionPayloadPB {
|
|
|
|
document_id: doc_id.clone(),
|
|
|
|
actions: vec![insert_action],
|
|
|
|
};
|
|
|
|
test.apply_actions(payload).await;
|
|
|
|
let document = test.open_document(doc_id).await;
|
|
|
|
let document_data = document.data;
|
|
|
|
let block_count_after = document_data.blocks.len();
|
|
|
|
assert_eq!(block_count_after, block_count + 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn undo_redo_event_test() {
|
|
|
|
let test = DocumentEventTest::new().await;
|
|
|
|
let view = test.create_document().await;
|
|
|
|
let doc_id = view.id.clone();
|
|
|
|
|
|
|
|
let document = test.open_document(doc_id.clone()).await;
|
|
|
|
let insert_action = gen_insert_block_action(document);
|
|
|
|
let payload = ApplyActionPayloadPB {
|
|
|
|
document_id: doc_id.clone(),
|
|
|
|
actions: vec![insert_action],
|
|
|
|
};
|
|
|
|
test.apply_actions(payload).await;
|
|
|
|
let block_count_after_insert = test.open_document(doc_id.clone()).await.data.blocks.len();
|
|
|
|
|
|
|
|
// undo insert action
|
|
|
|
let can_undo = test.can_undo_redo(doc_id.clone()).await.can_undo;
|
|
|
|
assert!(can_undo);
|
|
|
|
test.undo(doc_id.clone()).await;
|
|
|
|
let block_count_after_undo = test.open_document(doc_id.clone()).await.data.blocks.len();
|
|
|
|
assert_eq!(block_count_after_undo, block_count_after_insert - 1);
|
|
|
|
|
|
|
|
// redo insert action
|
|
|
|
let can_redo = test.can_undo_redo(doc_id.clone()).await.can_redo;
|
|
|
|
assert!(can_redo);
|
|
|
|
test.redo(doc_id.clone()).await;
|
|
|
|
let block_count_after_redo = test.open_document(doc_id.clone()).await.data.blocks.len();
|
|
|
|
assert_eq!(block_count_after_redo, block_count_after_insert);
|
|
|
|
}
|
2023-07-05 20:57:09 +08:00
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn insert_text_block_test() {
|
|
|
|
let test = DocumentEventTest::new().await;
|
|
|
|
let view = test.create_document().await;
|
|
|
|
let text = "Hello World";
|
|
|
|
let block_id = test.insert_index(&view.id, text, 1, None).await;
|
|
|
|
let block = test.get_block(&view.id, &block_id).await;
|
|
|
|
assert!(block.is_some());
|
|
|
|
let block = block.unwrap();
|
|
|
|
let data = gen_text_block_data(text);
|
|
|
|
assert_eq!(block.data, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn update_text_block_test() {
|
|
|
|
let test = DocumentEventTest::new().await;
|
|
|
|
let view = test.create_document().await;
|
|
|
|
let block_id = test.insert_index(&view.id, "Hello World", 1, None).await;
|
|
|
|
let update_text = "Hello World 2";
|
|
|
|
test.update(&view.id, &block_id, update_text).await;
|
|
|
|
let block = test.get_block(&view.id, &block_id).await;
|
|
|
|
assert!(block.is_some());
|
|
|
|
let block = block.unwrap();
|
|
|
|
let update_data = gen_text_block_data(update_text);
|
|
|
|
assert_eq!(block.data, update_data);
|
|
|
|
}
|