test.rs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. use flowy_document2::entities::*;
  2. use flowy_test::document::document_event::DocumentEventTest;
  3. use flowy_test::document::utils::*;
  4. #[tokio::test]
  5. async fn get_document_event_test() {
  6. let test = DocumentEventTest::new().await;
  7. let view = test.create_document().await;
  8. let document = test.open_document(view.id).await;
  9. let document_data = document.data;
  10. assert!(!document_data.page_id.is_empty());
  11. assert!(document_data.blocks.len() > 1);
  12. }
  13. #[tokio::test]
  14. async fn apply_document_event_test() {
  15. let test = DocumentEventTest::new().await;
  16. let view = test.create_document().await;
  17. let doc_id = view.id.clone();
  18. let document = test.open_document(doc_id.clone()).await;
  19. let block_count = document.data.blocks.len();
  20. let insert_action = gen_insert_block_action(document);
  21. let payload = ApplyActionPayloadPB {
  22. document_id: doc_id.clone(),
  23. actions: vec![insert_action],
  24. };
  25. test.apply_actions(payload).await;
  26. let document = test.open_document(doc_id).await;
  27. let document_data = document.data;
  28. let block_count_after = document_data.blocks.len();
  29. assert_eq!(block_count_after, block_count + 1);
  30. }
  31. #[tokio::test]
  32. async fn undo_redo_event_test() {
  33. let test = DocumentEventTest::new().await;
  34. let view = test.create_document().await;
  35. let doc_id = view.id.clone();
  36. let document = test.open_document(doc_id.clone()).await;
  37. let insert_action = gen_insert_block_action(document);
  38. let payload = ApplyActionPayloadPB {
  39. document_id: doc_id.clone(),
  40. actions: vec![insert_action],
  41. };
  42. test.apply_actions(payload).await;
  43. let block_count_after_insert = test.open_document(doc_id.clone()).await.data.blocks.len();
  44. // undo insert action
  45. let can_undo = test.can_undo_redo(doc_id.clone()).await.can_undo;
  46. assert!(can_undo);
  47. test.undo(doc_id.clone()).await;
  48. let block_count_after_undo = test.open_document(doc_id.clone()).await.data.blocks.len();
  49. assert_eq!(block_count_after_undo, block_count_after_insert - 1);
  50. // redo insert action
  51. let can_redo = test.can_undo_redo(doc_id.clone()).await.can_redo;
  52. assert!(can_redo);
  53. test.redo(doc_id.clone()).await;
  54. let block_count_after_redo = test.open_document(doc_id.clone()).await.data.blocks.len();
  55. assert_eq!(block_count_after_redo, block_count_after_insert);
  56. }
  57. #[tokio::test]
  58. async fn insert_text_block_test() {
  59. let test = DocumentEventTest::new().await;
  60. let view = test.create_document().await;
  61. let text = "Hello World";
  62. let block_id = test.insert_index(&view.id, text, 1, None).await;
  63. let block = test.get_block(&view.id, &block_id).await;
  64. assert!(block.is_some());
  65. let block = block.unwrap();
  66. let data = gen_text_block_data(text);
  67. assert_eq!(block.data, data);
  68. }
  69. #[tokio::test]
  70. async fn update_text_block_test() {
  71. let test = DocumentEventTest::new().await;
  72. let view = test.create_document().await;
  73. let block_id = test.insert_index(&view.id, "Hello World", 1, None).await;
  74. let update_text = "Hello World 2";
  75. test.update(&view.id, &block_id, update_text).await;
  76. let block = test.get_block(&view.id, &block_id).await;
  77. assert!(block.is_some());
  78. let block = block.unwrap();
  79. let update_data = gen_text_block_data(update_text);
  80. assert_eq!(block.data, update_data);
  81. }