mirror of
https://github.com/teloxide/teloxide.git
synced 2024-12-22 22:46:39 +01:00
8522759e68
* Get ready for v0.4.0 * Export teloxide_macros as macros in lib.rs * Use tokio v1.3 in README.md * Return the feature 'macros' back * Export teloxide_macros::teloxide in the prelude * Document the 'macros' feature in README.md * Update src/lib.rs Co-authored-by: Waffle Lapkin <waffle.lapkin@gmail.com> * Update src/prelude.rs Co-authored-by: Waffle Lapkin <waffle.lapkin@gmail.com> * Propagate features from teloxide-core * teloxide-core = 0.2.1 * Fix CI * Require teloxide-core/auto_send instead of teloxide/auto-send * default-features = false (teloxide-core) * Specify each teloxide-core feature separately * Fix Cargo.toml * JSON -> Json, CBOR -> Cbor * Update Cargo.toml Co-authored-by: Waffle Lapkin <waffle.lapkin@gmail.com> Co-authored-by: Waffle Lapkin <waffle.lapkin@gmail.com>
71 lines
2 KiB
Rust
71 lines
2 KiB
Rust
use std::{
|
|
fmt::{Debug, Display},
|
|
future::Future,
|
|
sync::Arc,
|
|
};
|
|
use teloxide::dispatching::dialogue::{RedisStorage, Serializer, Storage};
|
|
|
|
#[tokio::test]
|
|
async fn test_redis_json() {
|
|
let storage = RedisStorage::open(
|
|
"redis://127.0.0.1:7777",
|
|
teloxide::dispatching::dialogue::serializer::Json,
|
|
)
|
|
.await
|
|
.unwrap();
|
|
test_redis(storage).await;
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_redis_bincode() {
|
|
let storage = RedisStorage::open(
|
|
"redis://127.0.0.1:7778",
|
|
teloxide::dispatching::dialogue::serializer::Bincode,
|
|
)
|
|
.await
|
|
.unwrap();
|
|
test_redis(storage).await;
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_redis_cbor() {
|
|
let storage = RedisStorage::open(
|
|
"redis://127.0.0.1:7779",
|
|
teloxide::dispatching::dialogue::serializer::Cbor,
|
|
)
|
|
.await
|
|
.unwrap();
|
|
test_redis(storage).await;
|
|
}
|
|
|
|
type Dialogue = String;
|
|
|
|
async fn test_redis<S>(storage: Arc<RedisStorage<S>>)
|
|
where
|
|
S: Send + Sync + Serializer<Dialogue> + 'static,
|
|
<S as Serializer<Dialogue>>::Error: Debug + Display,
|
|
{
|
|
check_dialogue(None, Arc::clone(&storage).update_dialogue(1, "ABC".to_owned())).await;
|
|
check_dialogue(None, Arc::clone(&storage).update_dialogue(11, "DEF".to_owned())).await;
|
|
check_dialogue(None, Arc::clone(&storage).update_dialogue(256, "GHI".to_owned())).await;
|
|
|
|
// 1 - ABC, 11 - DEF, 256 - GHI
|
|
|
|
check_dialogue("ABC", Arc::clone(&storage).update_dialogue(1, "JKL".to_owned())).await;
|
|
check_dialogue("GHI", Arc::clone(&storage).update_dialogue(256, "MNO".to_owned())).await;
|
|
|
|
// 1 - GKL, 11 - DEF, 256 - MNO
|
|
|
|
check_dialogue("JKL", Arc::clone(&storage).remove_dialogue(1)).await;
|
|
check_dialogue("DEF", Arc::clone(&storage).remove_dialogue(11)).await;
|
|
check_dialogue("MNO", Arc::clone(&storage).remove_dialogue(256)).await;
|
|
}
|
|
|
|
async fn check_dialogue<E>(
|
|
expected: impl Into<Option<&str>>,
|
|
actual: impl Future<Output = Result<Option<Dialogue>, E>>,
|
|
) where
|
|
E: Debug,
|
|
{
|
|
assert_eq!(expected.into().map(ToOwned::to_owned), actual.await.unwrap())
|
|
}
|