helper.rs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. use flowy_sdk::module::build_modules;
  2. pub use flowy_sdk::*;
  3. use flowy_sys::prelude::*;
  4. use std::{
  5. fmt::{Debug, Display},
  6. hash::Hash,
  7. sync::Once,
  8. };
  9. static INIT: Once = Once::new();
  10. pub fn run_test_system<F>(f: F)
  11. where
  12. F: FnOnce() + 'static,
  13. {
  14. INIT.call_once(|| {
  15. flowy_log::init_log("flowy", "Debug").unwrap();
  16. });
  17. let mut runner = init_system(build_modules());
  18. runner = runner.spawn(async {
  19. f();
  20. FlowySystem::current().stop();
  21. });
  22. log::info!("🔥🔥🔥 System start running");
  23. match runner.run() {
  24. Ok(_) => {},
  25. Err(e) => log::error!("System run fail with error: {:?}", e),
  26. }
  27. }
  28. pub struct FlowySDKTester {
  29. request: SenderRequest<i64>,
  30. callback: Option<BoxStreamCallback<i64>>,
  31. }
  32. impl FlowySDKTester {
  33. pub fn new<E>(event: E) -> Self
  34. where
  35. E: Eq + Hash + Debug + Clone + Display,
  36. {
  37. Self {
  38. request: SenderRequest::new(1, event),
  39. callback: None,
  40. }
  41. }
  42. #[allow(dead_code)]
  43. pub fn bytes_payload<T>(mut self, payload: T) -> Self
  44. where
  45. T: serde::Serialize,
  46. {
  47. let bytes: Vec<u8> = bincode::serialize(&payload).unwrap();
  48. self.request = self.request.payload(Payload::Bytes(bytes));
  49. self
  50. }
  51. #[allow(dead_code)]
  52. pub fn protobuf_payload<T>(mut self, payload: T) -> Self
  53. where
  54. T: ::protobuf::Message,
  55. {
  56. let bytes: Vec<u8> = payload.write_to_bytes().unwrap();
  57. self.request = self.request.payload(Payload::Bytes(bytes));
  58. self
  59. }
  60. #[allow(dead_code)]
  61. pub fn callback<F>(mut self, callback: F) -> Self
  62. where
  63. F: FnOnce(i64, EventResponse) + 'static + Send + Sync,
  64. {
  65. self.request = self.request.callback(|config, response| {
  66. dbg!(&response);
  67. callback(config, response);
  68. });
  69. self
  70. }
  71. pub fn run(self) {
  72. run_test_system(move || {
  73. async_send(self.request);
  74. });
  75. }
  76. }