document_event.rs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. use crate::event_builder::EventBuilder;
  2. use crate::FlowyCoreTest;
  3. use flowy_document2::entities::*;
  4. use flowy_document2::event_map::DocumentEvent;
  5. use flowy_folder2::entities::{CreateViewPayloadPB, ViewLayoutPB, ViewPB};
  6. use flowy_folder2::event_map::FolderEvent;
  7. pub struct DocumentEventTest {
  8. inner: FlowyCoreTest,
  9. }
  10. pub struct OpenDocumentData {
  11. pub id: String,
  12. pub data: DocumentDataPB,
  13. }
  14. impl DocumentEventTest {
  15. pub async fn new() -> Self {
  16. let sdk = FlowyCoreTest::new_with_user().await;
  17. Self { inner: sdk }
  18. }
  19. pub async fn create_document(&self) -> ViewPB {
  20. let core = &self.inner;
  21. let current_workspace = core.get_current_workspace().await.workspace;
  22. let parent_id = current_workspace.id.clone();
  23. let payload = CreateViewPayloadPB {
  24. parent_view_id: parent_id.to_string(),
  25. name: "document".to_string(),
  26. desc: "".to_string(),
  27. thumbnail: None,
  28. layout: ViewLayoutPB::Document,
  29. initial_data: vec![],
  30. meta: Default::default(),
  31. set_as_current: true,
  32. };
  33. EventBuilder::new(core.clone())
  34. .event(FolderEvent::CreateView)
  35. .payload(payload)
  36. .async_send()
  37. .await
  38. .parse::<ViewPB>()
  39. }
  40. pub async fn open_document(&self, doc_id: String) -> OpenDocumentData {
  41. let core = &self.inner;
  42. let payload = OpenDocumentPayloadPB {
  43. document_id: doc_id.clone(),
  44. };
  45. let data = EventBuilder::new(core.clone())
  46. .event(DocumentEvent::OpenDocument)
  47. .payload(payload)
  48. .async_send()
  49. .await
  50. .parse::<DocumentDataPB>();
  51. OpenDocumentData { id: doc_id, data }
  52. }
  53. pub async fn apply_actions(&self, payload: ApplyActionPayloadPB) {
  54. let core = &self.inner;
  55. EventBuilder::new(core.clone())
  56. .event(DocumentEvent::ApplyAction)
  57. .payload(payload)
  58. .async_send()
  59. .await;
  60. }
  61. pub async fn undo(&self, doc_id: String) -> DocumentRedoUndoResponsePB {
  62. let core = &self.inner;
  63. let payload = DocumentRedoUndoPayloadPB {
  64. document_id: doc_id.clone(),
  65. };
  66. EventBuilder::new(core.clone())
  67. .event(DocumentEvent::Undo)
  68. .payload(payload)
  69. .async_send()
  70. .await
  71. .parse::<DocumentRedoUndoResponsePB>()
  72. }
  73. pub async fn redo(&self, doc_id: String) -> DocumentRedoUndoResponsePB {
  74. let core = &self.inner;
  75. let payload = DocumentRedoUndoPayloadPB {
  76. document_id: doc_id.clone(),
  77. };
  78. EventBuilder::new(core.clone())
  79. .event(DocumentEvent::Redo)
  80. .payload(payload)
  81. .async_send()
  82. .await
  83. .parse::<DocumentRedoUndoResponsePB>()
  84. }
  85. pub async fn can_undo_redo(&self, doc_id: String) -> DocumentRedoUndoResponsePB {
  86. let core = &self.inner;
  87. let payload = DocumentRedoUndoPayloadPB {
  88. document_id: doc_id.clone(),
  89. };
  90. EventBuilder::new(core.clone())
  91. .event(DocumentEvent::CanUndoRedo)
  92. .payload(payload)
  93. .async_send()
  94. .await
  95. .parse::<DocumentRedoUndoResponsePB>()
  96. }
  97. }