test.rs 3.3 KB

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