test.rs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. use crate::new_document::script::DocumentEditorTest;
  2. use crate::new_document::script::EditScript::*;
  3. use lib_ot::text_delta::TextOperationBuilder;
  4. #[tokio::test]
  5. async fn document_initialize_test() {
  6. let scripts = vec![AssertContent {
  7. expected: r#"{"document":{"type":"editor","children":[{"type":"text"}]}}"#,
  8. }];
  9. DocumentEditorTest::new().await.run_scripts(scripts).await;
  10. }
  11. #[tokio::test]
  12. async fn document_insert_text_test() {
  13. let delta = TextOperationBuilder::new().insert("Hello world").build();
  14. let expected = r#"{
  15. "document": {
  16. "type": "editor",
  17. "children": [
  18. {
  19. "type": "text",
  20. "delta": [
  21. {
  22. "insert": "Hello world"
  23. }
  24. ]
  25. },
  26. {
  27. "type": "text"
  28. }
  29. ]
  30. }
  31. }"#;
  32. let scripts = vec![
  33. InsertText {
  34. path: vec![0, 0].into(),
  35. delta,
  36. },
  37. AssertPrettyContent { expected },
  38. ];
  39. DocumentEditorTest::new().await.run_scripts(scripts).await;
  40. }
  41. #[tokio::test]
  42. async fn document_update_text_test() {
  43. let test = DocumentEditorTest::new().await;
  44. let hello_world = "Hello world".to_string();
  45. let scripts = vec![
  46. UpdateText {
  47. path: vec![0, 0].into(),
  48. delta: TextOperationBuilder::new().insert(&hello_world).build(),
  49. },
  50. AssertPrettyContent {
  51. expected: r#"{
  52. "document": {
  53. "type": "editor",
  54. "children": [
  55. {
  56. "type": "text",
  57. "delta": [
  58. {
  59. "insert": "Hello world"
  60. }
  61. ]
  62. }
  63. ]
  64. }
  65. }"#,
  66. },
  67. ];
  68. test.run_scripts(scripts).await;
  69. let scripts = vec![
  70. UpdateText {
  71. path: vec![0, 0].into(),
  72. delta: TextOperationBuilder::new()
  73. .retain(hello_world.len())
  74. .insert(", AppFlowy")
  75. .build(),
  76. },
  77. AssertPrettyContent {
  78. expected: r#"{
  79. "document": {
  80. "type": "editor",
  81. "children": [
  82. {
  83. "type": "text",
  84. "delta": [
  85. {
  86. "insert": "Hello world, AppFlowy"
  87. }
  88. ]
  89. }
  90. ]
  91. }
  92. }"#,
  93. },
  94. ];
  95. test.run_scripts(scripts).await;
  96. }
  97. #[tokio::test]
  98. async fn document_delete_text_test() {
  99. let expected = r#"{
  100. "document": {
  101. "type": "editor",
  102. "children": [
  103. {
  104. "type": "text",
  105. "delta": [
  106. {
  107. "insert": "Hello"
  108. }
  109. ]
  110. }
  111. ]
  112. }
  113. }"#;
  114. let hello_world = "Hello world".to_string();
  115. let scripts = vec![
  116. UpdateText {
  117. path: vec![0, 0].into(),
  118. delta: TextOperationBuilder::new().insert(&hello_world).build(),
  119. },
  120. UpdateText {
  121. path: vec![0, 0].into(),
  122. delta: TextOperationBuilder::new().retain(5).delete(6).build(),
  123. },
  124. AssertPrettyContent { expected },
  125. ];
  126. DocumentEditorTest::new().await.run_scripts(scripts).await;
  127. }
  128. #[tokio::test]
  129. async fn document_delete_node_test() {
  130. let scripts = vec![
  131. UpdateText {
  132. path: vec![0, 0].into(),
  133. delta: TextOperationBuilder::new().insert("Hello world").build(),
  134. },
  135. AssertContent {
  136. expected: r#"{"document":{"type":"editor","children":[{"type":"text","delta":[{"insert":"Hello world"}]}]}}"#,
  137. },
  138. Delete {
  139. path: vec![0, 0].into(),
  140. },
  141. AssertContent {
  142. expected: r#"{"document":{"type":"editor"}}"#,
  143. },
  144. ];
  145. DocumentEditorTest::new().await.run_scripts(scripts).await;
  146. }