test.rs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. use std::ops::Deref;
  2. use std::time::Duration;
  3. use flowy_document2::entities::{DocumentSnapshotStatePB, DocumentSyncStatePB};
  4. use flowy_test::document::document_event::DocumentEventTest;
  5. use crate::document::supabase_test::helper::{
  6. assert_document_data_equal, FlowySupabaseDocumentTest,
  7. };
  8. use crate::util::receive_with_timeout;
  9. #[tokio::test]
  10. async fn cloud_test_supabase_initial_document_snapshot_test() {
  11. if let Some(test) = FlowySupabaseDocumentTest::new().await {
  12. let view = test.create_document().await;
  13. let mut rx = test
  14. .notification_sender
  15. .subscribe::<DocumentSnapshotStatePB>(&view.id);
  16. receive_with_timeout(&mut rx, Duration::from_secs(30))
  17. .await
  18. .unwrap();
  19. let snapshots = test.get_document_snapshots(&view.id).await;
  20. assert_eq!(snapshots.items.len(), 1);
  21. let document_data = test.get_document_data(&view.id).await;
  22. assert_document_data_equal(&snapshots.items[0].data, &view.id, document_data);
  23. }
  24. }
  25. #[tokio::test]
  26. async fn cloud_test_supabase_document_edit_sync_test() {
  27. if let Some(test) = FlowySupabaseDocumentTest::new().await {
  28. let view = test.create_document().await;
  29. let document_id = view.id.clone();
  30. let core = test.deref().deref().clone();
  31. let document_event = DocumentEventTest::new_with_core(core);
  32. document_event
  33. .insert_index(&document_id, "hello world", 0, None)
  34. .await;
  35. // wait all update are send to the remote
  36. let mut rx = test
  37. .notification_sender
  38. .subscribe_with_condition::<DocumentSyncStatePB, _>(&document_id, |pb| pb.is_finish);
  39. receive_with_timeout(&mut rx, Duration::from_secs(30))
  40. .await
  41. .unwrap();
  42. let document_data = test.get_document_data(&document_id).await;
  43. let update = test.get_collab_update(&document_id).await;
  44. assert_document_data_equal(&update, &document_id, document_data);
  45. }
  46. }
  47. #[tokio::test]
  48. async fn cloud_test_supabase_document_edit_sync_test2() {
  49. if let Some(test) = FlowySupabaseDocumentTest::new().await {
  50. let view = test.create_document().await;
  51. let document_id = view.id.clone();
  52. let core = test.deref().deref().clone();
  53. let document_event = DocumentEventTest::new_with_core(core);
  54. for i in 0..10 {
  55. document_event
  56. .insert_index(&document_id, "hello world", i, None)
  57. .await;
  58. }
  59. // wait all update are send to the remote
  60. let mut rx = test
  61. .notification_sender
  62. .subscribe_with_condition::<DocumentSyncStatePB, _>(&document_id, |pb| pb.is_finish);
  63. receive_with_timeout(&mut rx, Duration::from_secs(30))
  64. .await
  65. .unwrap();
  66. let document_data = test.get_document_data(&document_id).await;
  67. let update = test.get_collab_update(&document_id).await;
  68. assert_document_data_equal(&update, &document_id, document_data);
  69. }
  70. }