AppFlowy-Cloud/libs/collab-stream/tests/collab_stream_test/pubsub_test.rs

38 lines
1006 B
Rust

use crate::collab_stream_test::test_util::{pubsub_client, random_i64};
use collab_stream::pubsub::PubSubMessage;
use futures::StreamExt;
use std::time::Duration;
use tokio::time::sleep;
#[tokio::test]
async fn pubsub_test() {
let oid = format!("o{}", random_i64());
let client_1 = pubsub_client().await;
let client_2 = pubsub_client().await;
let mut publish = client_1.collab_pub().await;
let send_msg = PubSubMessage {
workspace_id: "1".to_string(),
oid: oid.clone(),
};
let cloned_msg = send_msg.clone();
tokio::spawn(async move {
sleep(Duration::from_secs(1)).await;
match publish.publish(cloned_msg).await {
Ok(_) => {},
Err(err) => {
panic!("failed to publish message: {:?}", err);
},
}
});
let subscriber = client_2.collab_sub().await.unwrap();
let mut pubsub = subscriber.subscribe().await.unwrap();
let receive_msg = pubsub.next().await.unwrap().unwrap();
assert_eq!(send_msg.workspace_id, receive_msg.workspace_id);
}