revision_test.rs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. use flowy_test::editor::{EditorScript::*, *};
  2. use lib_ot::revision::RevState;
  3. #[tokio::test]
  4. async fn doc_rev_state_test1() {
  5. let scripts = vec![
  6. InsertText("123", 0),
  7. AssertCurrentRevId(1),
  8. AssertRevisionState(1, RevState::StateLocal),
  9. SimulateAckedMessage(1),
  10. AssertRevisionState(1, RevState::Acked),
  11. AssertNextRevId(None),
  12. AssertJson(r#"[{"insert":"123\n"}]"#),
  13. ];
  14. EditorTest::new().await.run_scripts(scripts).await;
  15. }
  16. #[tokio::test]
  17. async fn doc_rev_state_test2() {
  18. let scripts = vec![
  19. InsertText("1", 0),
  20. InsertText("2", 1),
  21. InsertText("3", 2),
  22. AssertCurrentRevId(3),
  23. AssertRevisionState(1, RevState::StateLocal),
  24. AssertRevisionState(2, RevState::StateLocal),
  25. AssertRevisionState(3, RevState::StateLocal),
  26. SimulateAckedMessage(1),
  27. AssertRevisionState(1, RevState::Acked),
  28. AssertNextRevId(Some(2)),
  29. SimulateAckedMessage(2),
  30. AssertRevisionState(2, RevState::Acked),
  31. //
  32. AssertNextRevId(Some(3)),
  33. AssertRevisionState(3, RevState::StateLocal),
  34. AssertJson(r#"[{"insert":"123\n"}]"#),
  35. ];
  36. EditorTest::new().await.run_scripts(scripts).await;
  37. }
  38. #[tokio::test]
  39. async fn doc_push_test() {
  40. // let delta = RichTextDeltaBuilder::new().insert("abc\n").build();
  41. let scripts = vec![
  42. InsertText("1", 0),
  43. InsertText("2", 1),
  44. InsertText("3", 2),
  45. AssertJson(r#"[{"insert":"123\nabc\n"}]"#),
  46. ];
  47. EditorTest::new().await.run_scripts(scripts).await;
  48. }
  49. #[tokio::test]
  50. async fn doc_sync_test() {
  51. let scripts = vec![
  52. InsertText("1", 0),
  53. InsertText("2", 1),
  54. InsertText("3", 2),
  55. AssertJson(r#"[{"insert":"123\n"}]"#),
  56. AssertNextRevId(None),
  57. ];
  58. EditorTest::new().await.run_scripts(scripts).await;
  59. }
  60. #[tokio::test]
  61. async fn doc_sync_lost_ws_conn() {
  62. let scripts = vec![
  63. InsertText("1", 0),
  64. StopWs,
  65. InsertText("2", 1),
  66. AssertNextRevId(Some(2)),
  67. InsertText("3", 2),
  68. AssertJson(r#"[{"insert":"123\n"}]"#),
  69. ];
  70. EditorTest::new().await.run_scripts(scripts).await;
  71. }
  72. #[tokio::test]
  73. async fn doc_sync_retry_ws_conn() {
  74. let scripts = vec![
  75. InsertText("1", 0),
  76. StopWs,
  77. InsertText("2", 1),
  78. InsertText("3", 2),
  79. StartWs,
  80. WaitSyncFinished,
  81. AssertNextRevId(None),
  82. AssertJson(r#"[{"insert":"123\n"}]"#),
  83. ];
  84. EditorTest::new().await.run_scripts(scripts).await;
  85. }