simple_redis_wrapper/
lib.rs1pub mod client;
2pub use client::*;
3
4#[cfg(test)]
5mod tests {
6 use crate::client::redis_async_client::RedisAsyncClient;
7 use crate::client::types::{EvictionPolicy, Key, Namespace, Prefix};
8 use chrono::{DateTime, Utc};
9 use serde::{Deserialize, Serialize};
10 use uuid::Uuid;
11
12 #[tokio::test]
13 async fn init_client() {
14 let client = RedisAsyncClient::new(None, Namespace("Test".to_string()))
15 .await
16 .unwrap();
17 let eviction_policy = client.get_eviction_policy().await.unwrap();
18 assert_eq!(eviction_policy, "maxmemory-policynoeviction");
19 println!("eviction_policy => {}", eviction_policy);
20 let eviction_policy = client
21 .set_eviction_policy(EvictionPolicy::AllKeysLFU)
22 .await
23 .unwrap();
24 assert_eq!(eviction_policy, "maxmemory-policyallkeys-lfu");
25 }
26
27 #[tokio::test]
28 async fn entity_test() {
29 #[derive(Serialize, Deserialize)]
30 struct TestEntity {
31 pub date: DateTime<Utc>,
32 pub id: Uuid,
33 }
34
35 let entity = TestEntity {
36 date: Utc::now(),
37 id: Uuid::new_v4(),
38 };
39 let prefix = Prefix("TestEntity".to_string());
40 let key = Key(entity.id.to_string());
41 let client = RedisAsyncClient::new(None, Namespace("Test".to_string()))
42 .await
43 .unwrap();
44 client
45 .save_entity(&prefix, &key, &entity, None)
46 .await
47 .unwrap();
48
49 let from_redis = client
50 .get_entity::<TestEntity>(&prefix, &key)
51 .await
52 .unwrap();
53 assert_eq!(entity.id, from_redis.id);
54 assert_eq!(entity.date, from_redis.date);
55 }
56}