edit_test.rs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. use std::time::Duration;
  2. use event_integration::assert_document_data_equal;
  3. use flowy_document2::entities::DocumentSyncStatePB;
  4. use crate::document::supabase_test::helper::FlowySupabaseDocumentTest;
  5. use crate::util::receive_with_timeout;
  6. #[tokio::test]
  7. async fn supabase_document_edit_sync_test() {
  8. if let Some(test) = FlowySupabaseDocumentTest::new().await {
  9. let view = test.create_document().await;
  10. let document_id = view.id.clone();
  11. let cloned_test = test.clone();
  12. let cloned_document_id = document_id.clone();
  13. tokio::spawn(async move {
  14. cloned_test
  15. .insert_document_text(&cloned_document_id, "hello world", 0)
  16. .await;
  17. });
  18. // wait all update are send to the remote
  19. let mut rx = test
  20. .notification_sender
  21. .subscribe_with_condition::<DocumentSyncStatePB, _>(&document_id, |pb| pb.is_finish);
  22. receive_with_timeout(&mut rx, Duration::from_secs(30))
  23. .await
  24. .unwrap();
  25. let document_data = test.get_document_data(&document_id).await;
  26. let update = test.get_document_update(&document_id).await;
  27. assert_document_data_equal(&update, &document_id, document_data);
  28. }
  29. }
  30. #[tokio::test]
  31. async fn supabase_document_edit_sync_test2() {
  32. if let Some(test) = FlowySupabaseDocumentTest::new().await {
  33. let view = test.create_document().await;
  34. let document_id = view.id.clone();
  35. for i in 0..10 {
  36. test
  37. .insert_document_text(&document_id, "hello world", i)
  38. .await;
  39. }
  40. // wait all update are send to the remote
  41. let mut rx = test
  42. .notification_sender
  43. .subscribe_with_condition::<DocumentSyncStatePB, _>(&document_id, |pb| pb.is_finish);
  44. receive_with_timeout(&mut rx, Duration::from_secs(30))
  45. .await
  46. .unwrap();
  47. let document_data = test.get_document_data(&document_id).await;
  48. let update = test.get_document_update(&document_id).await;
  49. assert_document_data_equal(&update, &document_id, document_data);
  50. }
  51. }