use super::super::defs::*;
use super::extract_highest_modseq;
#[test]
fn condstore_fetch() {
let setup = set_up();
let mut client = setup.connect("7162cfcf");
quick_log_in(&mut client);
quick_create(&mut client, "7162cfcf");
quick_append_enron(&mut client, "7162cfcf", 2);
command!(mut responses = client, c("SELECT 7162cfcf (CONDSTORE)"));
assert_tagged_ok_any(responses.pop().unwrap());
let max_modseq = extract_highest_modseq(&responses);
command!(mut responses = client, c("FETCH 1:* UID (CHANGEDSINCE 0)"));
assert_eq!(3, responses.len());
assert_tagged_ok(responses.pop().unwrap());
has_untagged_response_matching! {
s::Response::Fetch(ref fr @ s::FetchResponse {
seqnum: 1,
..
}) in responses => {
has_msgatt_matching! {
s::MsgAtt::Modseq(m) in fr => {
assert!(m < max_modseq);
}
};
}
};
has_untagged_response_matching! {
s::Response::Fetch(ref fr @ s::FetchResponse {
seqnum: 2,
..
}) in responses => {
has_msgatt_matching! {
s::MsgAtt::Modseq(m) in fr => {
assert_eq!(max_modseq, m);
}
};
}
};
command!(mut responses = client, c("FETCH 1 MODSEQ"));
assert_eq!(2, responses.len());
assert_tagged_ok(responses.pop().unwrap());
has_untagged_response_matching! {
s::Response::Fetch(ref fr @ s::FetchResponse {
seqnum: 1,
..
}) in responses => {
has_msgatt_matching! {
s::MsgAtt::Modseq(m) in fr => {
assert!(m < max_modseq);
}
};
}
};
command!(mut responses = client, cb(&format!(
"FETCH 1:* UID (CHANGEDSINCE {})", max_modseq
)));
assert_eq!(1, responses.len());
assert_tagged_ok(responses.pop().unwrap());
ok_command!(client, c("STORE 1 +FLAGS (\\deleted)"));
command!(mut responses = client, cb(&format!(
"FETCH 1:* UID (CHANGEDSINCE {})", max_modseq
)));
assert_eq!(2, responses.len());
assert_tagged_ok(responses.pop().unwrap());
has_untagged_response_matching! {
s::Response::Fetch(ref fr @ s::FetchResponse {
seqnum: 1,
..
}) in responses => {
has_msgatt_matching! {
s::MsgAtt::Modseq(m) in fr => {
assert!(m > max_modseq);
}
};
}
};
}