revision_test.rs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. use flowy_document_infra::core::{Document, FlowyDoc};
  2. use flowy_test::editor::{EditorScript::*, *};
  3. use lib_ot::{revision::RevState, rich_text::RichTextDeltaBuilder};
  4. #[tokio::test]
  5. async fn doc_rev_state_test1() {
  6. let scripts = vec![
  7. InsertText("123", 0),
  8. AssertCurrentRevId(1),
  9. AssertRevisionState(1, RevState::Local),
  10. SimulateAckedMessage(1),
  11. AssertRevisionState(1, RevState::Acked),
  12. AssertNextSendingRevision(None),
  13. AssertJson(r#"[{"insert":"123\n"}]"#),
  14. ];
  15. EditorTest::new().await.run_scripts(scripts).await;
  16. }
  17. #[tokio::test]
  18. async fn doc_rev_state_test2() {
  19. let scripts = vec![
  20. InsertText("1", 0),
  21. InsertText("2", 1),
  22. InsertText("3", 2),
  23. AssertCurrentRevId(3),
  24. AssertRevisionState(1, RevState::Local),
  25. AssertRevisionState(2, RevState::Local),
  26. AssertRevisionState(3, RevState::Local),
  27. SimulateAckedMessage(1),
  28. AssertRevisionState(1, RevState::Acked),
  29. AssertNextSendingRevision(Some(2)),
  30. SimulateAckedMessage(2),
  31. AssertRevisionState(2, RevState::Acked),
  32. //
  33. AssertNextSendingRevision(Some(3)),
  34. AssertRevisionState(3, RevState::Local),
  35. AssertJson(r#"[{"insert":"123\n"}]"#),
  36. ];
  37. EditorTest::new().await.run_scripts(scripts).await;
  38. }
  39. #[tokio::test]
  40. async fn doc_push_test() {
  41. let delta = RichTextDeltaBuilder::new().insert("abc\n").build();
  42. let scripts = vec![
  43. InsertText("1", 0),
  44. InsertText("2", 1),
  45. InsertText("3", 2),
  46. SimulatePushRevisionMessageWithDelta(delta),
  47. AssertJson(r#"[{"insert":"123\nabc\n"}]"#),
  48. ];
  49. EditorTest::new().await.run_scripts(scripts).await;
  50. }
  51. #[tokio::test]
  52. async fn doc_push_test2() {
  53. let mut document = Document::new::<FlowyDoc>();
  54. let delta_1 = document.insert(0, "123").unwrap();
  55. let json = document.to_json();
  56. let scripts = vec![
  57. SimulatePushRevisionMessageWithDelta(delta_1),
  58. AssertJson(r#"[{"insert":"\n123"}]"#),
  59. ];
  60. EditorTest::new().await.run_scripts(scripts).await;
  61. }