use super::Mock;
use crate::ValkeyValue;
use crate::commands::generic::GenericCommands;
use crate::commands::options::{Limit, OrderBy, RestoreOptions};
#[tokio::test]
async fn sort_and_sort_store_and_ro() {
let m = Mock::array(vec![ValkeyValue::BulkString(b"1".to_vec().into())]);
m.sort(
"k",
Some(OrderBy::Desc),
Some(Limit {
offset: 0,
count: 10,
}),
true,
)
.await
.unwrap();
m.assert_args(&["SORT", "k", "LIMIT", "0", "10", "DESC", "ALPHA"]);
let m = Mock::int(3);
m.sort_store("k", "dst", None, None, false).await.unwrap();
m.assert_args(&["SORT", "k", "STORE", "dst"]);
let m = Mock::array(vec![ValkeyValue::BulkString(b"1".to_vec().into())]);
m.sort_ro("k", Some(OrderBy::Asc), None, false)
.await
.unwrap();
m.assert_args(&["SORT_RO", "k", "ASC"]);
}
#[tokio::test]
async fn restore_encoding() {
let m = Mock::ok();
let opts = RestoreOptions {
replace: true,
absttl: false,
idletime: Some(5),
frequency: None,
};
m.restore("k", 0, "payload", opts).await.unwrap();
m.assert_args(&["RESTORE", "k", "0", "payload", "REPLACE", "IDLETIME", "5"]);
}
#[tokio::test]
async fn wait_move_encoding() {
let m = Mock::int(2);
assert_eq!(m.wait(2, 100).await.unwrap(), 2);
m.assert_args(&["WAIT", "2", "100"]);
let m = Mock::int(1);
assert!(m.move_key("k", 1).await.unwrap());
m.assert_args(&["MOVE", "k", "1"]);
}
#[tokio::test]
async fn watch_unwatch() {
let m = Mock::ok();
m.watch(&["k1", "k2"]).await.unwrap();
m.assert_args(&["WATCH", "k1", "k2"]);
let m = Mock::ok();
m.unwatch().await.unwrap();
m.assert_args(&["UNWATCH"]);
}