edit.rs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. use crate::document::helper::{DocScript, DocumentTest};
  2. use flowy_document::services::doc::{Document, FlowyDoc};
  3. use flowy_ot::core::Delta;
  4. #[actix_rt::test]
  5. async fn sync_doc_insert_text() {
  6. let test = DocumentTest::new().await;
  7. test.run_scripts(vec![
  8. DocScript::ConnectWs,
  9. DocScript::OpenDoc,
  10. DocScript::SendText(0, "abc"),
  11. DocScript::SendText(3, "123"),
  12. DocScript::SendText(6, "efg"),
  13. DocScript::AssertClient(r#"[{"insert":"abc123efg\n"}]"#),
  14. DocScript::AssertServer(r#"[{"insert":"abc123efg\n"}]"#),
  15. ])
  16. .await;
  17. }
  18. #[actix_rt::test]
  19. async fn sync_open_empty_doc_and_sync_from_server() {
  20. let test = DocumentTest::new().await;
  21. let mut document = Document::new::<FlowyDoc>();
  22. document.insert(0, "123").unwrap();
  23. document.insert(3, "456").unwrap();
  24. let json = document.to_json();
  25. test.run_scripts(vec![
  26. DocScript::SetServerDocument(json, 3),
  27. DocScript::OpenDoc,
  28. DocScript::AssertClient(r#"[{"insert":"123456\n"}]"#),
  29. DocScript::AssertServer(r#"[{"insert":"123456\n"}]"#),
  30. ])
  31. .await;
  32. }
  33. #[actix_rt::test]
  34. async fn sync_open_empty_doc_and_sync_from_server_using_ws() {
  35. let test = DocumentTest::new().await;
  36. let mut document = Document::new::<FlowyDoc>();
  37. document.insert(0, "123").unwrap();
  38. let json = document.to_json();
  39. test.run_scripts(vec![
  40. DocScript::OpenDoc,
  41. DocScript::SetServerDocument(json, 3),
  42. DocScript::ConnectWs,
  43. DocScript::AssertClient(r#"[{"insert":"\n123\n"}]"#),
  44. ])
  45. .await;
  46. }
  47. #[actix_rt::test]
  48. async fn sync_open_non_empty_doc_and_sync_with_sever() {
  49. let test = DocumentTest::new().await;
  50. let mut document = Document::new::<FlowyDoc>();
  51. document.insert(0, "123").unwrap();
  52. let json = document.to_json();
  53. test.run_scripts(vec![
  54. DocScript::OpenDoc,
  55. DocScript::SetServerDocument(json, 3),
  56. DocScript::SendText(0, "abc"),
  57. DocScript::ConnectWs,
  58. DocScript::AssertClient(r#"[{"insert":"abc\n123\n"}]"#),
  59. DocScript::AssertServer(r#"[{"insert":"abc\n123\n"}]"#),
  60. ])
  61. .await;
  62. }