#[cfg(feature = "sqlite3")]
#[test]
fn test_imap_sync_sqlite() {
use crate::{backends::IsSubscribedFn, imap::*};
let tempdir = tempfile::tempdir().unwrap();
let account_hash = AccountHash::from_bytes(b"test".as_slice());
let account_name = "test".to_string().into();
let event_consumer = BackendEventConsumer::new(Arc::new(|_, _| {}));
let uid_store: Arc<UIDStore> = Arc::new(UIDStore {
offline_cache: Arc::new(Mutex::new(None)),
..UIDStore::new(
IsSubscribedFn::default(),
account_hash,
account_name,
event_consumer,
None,
true,
)
});
let mut value =
sync::sqlite3_cache::Sqlite3Cache::get(Arc::clone(&uid_store), Some(tempdir.path()))
.unwrap();
let mailbox_hash = MailboxHash::from(b"test".as_slice());
let fetch = FetchResponse {
uid: Some(1),
message_sequence_number: 1,
modseq: None,
flags: None,
body: None,
references: None,
envelope: Some(Envelope::default()),
bodystructure: false,
raw_fetch_value: &[],
};
let fetches = &[fetch];
let err = value.insert_envelopes(mailbox_hash, fetches).unwrap_err();
assert_eq!(
err.inner
.unwrap()
.downcast_ref::<rusqlite::Error>()
.unwrap()
.sqlite_error_code(),
Some(rusqlite::ErrorCode::ConstraintViolation)
);
assert_eq!(err.kind, ErrorKind::NotFound);
value
.init_mailbox(mailbox_hash, &SelectResponse::default())
.unwrap();
value.insert_envelopes(mailbox_hash, fetches).unwrap();
_ = tempdir.close();
}