aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDirk Van Haerenborgh <vhdirk@gmail.com>2019-11-26 08:05:49 +0100
committerDirk Van Haerenborgh <vhdirk@gmail.com>2019-11-26 08:05:49 +0100
commit2231a5cf6cdeb90c1cdb75d161a0063d4a385576 (patch)
tree2bb81ea4169fd4e811304482e461e1adb1343238
parent63635360cd25e95bfa2c52c09592e19e656e3d66 (diff)
downloadmail-2231a5cf6cdeb90c1cdb75d161a0063d4a385576.tar.gz
add tests for query
-rw-r--r--src/messages.rs2
-rw-r--r--tests/lib.rs1
-rw-r--r--tests/test_query.rs97
-rw-r--r--tests/test_thread.rs6
4 files changed, 99 insertions, 7 deletions
diff --git a/src/messages.rs b/src/messages.rs
index 48d30ef..cfba547 100644
--- a/src/messages.rs
+++ b/src/messages.rs
@@ -116,7 +116,7 @@ mod tests {
#[test]
#[should_panic] // until test data is filled in
- fn recurse() -> () {
+ fn recurse() {
match database::Database::open(
&String::new(),
database::DatabaseMode::ReadOnly,
diff --git a/tests/lib.rs b/tests/lib.rs
index e7ee0bc..44ec82f 100644
--- a/tests/lib.rs
+++ b/tests/lib.rs
@@ -8,6 +8,7 @@ extern crate lettre_email;
mod fixtures;
mod test_database;
+mod test_query;
mod test_thread;
mod test_message;
mod test_tags;
diff --git a/tests/test_query.rs b/tests/test_query.rs
new file mode 100644
index 0000000..ad8f299
--- /dev/null
+++ b/tests/test_query.rs
@@ -0,0 +1,97 @@
+use std::sync::Arc;
+use fixtures::{NotmuchCommand, MailBox};
+
+
+struct QueryFixture {
+ // Return a single thread with 2 messages
+ pub mailbox: MailBox,
+ pub query: notmuch::Query<'static>,
+}
+
+impl QueryFixture {
+ pub fn new() -> Self{
+ let mailbox = MailBox::new();
+
+ let (msgid, _) = mailbox.deliver(None, Some("foo".to_string()), None, None, vec![], true, None, false, false, false).unwrap();
+ mailbox.deliver(None, Some("bar".to_string()), None, None, vec![], true, None, false, false, false).unwrap();
+ mailbox.deliver(None, Some("baz".to_string()), None, None, vec![("In-Reply-To".to_string(), format!("<{}>", msgid))], true, None, false, false, false).unwrap();
+ mailbox.deliver(None, Some("foo qux".to_string()), None, None, vec![], true, None, false, false, false).unwrap();
+ mailbox.deliver(None, Some("foo quux".to_string()), None, None, vec![], true, None, false, false, false).unwrap();
+
+ let cmd = NotmuchCommand::new(&mailbox.path());
+ cmd.run(vec!["new"]).unwrap();
+
+ let query = {
+ let database = Arc::new(notmuch::Database::open(&mailbox.path(), notmuch::DatabaseMode::ReadWrite).unwrap());
+
+ notmuch::Query::create(database, &"foo".to_string()).unwrap()
+ };
+
+ Self {
+ mailbox,
+ query
+ }
+ }
+}
+
+#[test]
+fn test_iter_threads() {
+ let q = QueryFixture::new();
+
+ let threads = q.query.search_threads().unwrap();
+
+ let mut num = 0;
+ for _thread in threads {
+ num += 1;
+ }
+
+ assert_eq!(num, 3);
+
+}
+
+#[test]
+fn test_iter_threads_ext() {
+ let q = QueryFixture::new();
+
+ let threads = <notmuch::Query as notmuch::QueryExt>::search_threads(q.query).unwrap();
+
+ let mut num = 0;
+ for _thread in threads {
+ num += 1;
+ }
+
+ assert_eq!(num, 3);
+
+}
+
+
+#[test]
+fn test_iter_messages() {
+ let q = QueryFixture::new();
+
+ let messages = q.query.search_messages().unwrap();
+
+ let mut num = 0;
+ for _message in messages {
+ num += 1;
+ }
+
+ assert_eq!(num, 3);
+
+}
+
+#[test]
+fn test_iter_messages_ext() {
+ let q = QueryFixture::new();
+
+ let messages = <notmuch::Query as notmuch::QueryExt>::search_messages(q.query).unwrap();
+
+ let mut num = 0;
+ for _message in messages {
+ num += 1;
+ }
+
+ assert_eq!(num, 3);
+
+}
+
diff --git a/tests/test_thread.rs b/tests/test_thread.rs
index 0909082..89f1ea0 100644
--- a/tests/test_thread.rs
+++ b/tests/test_thread.rs
@@ -40,12 +40,6 @@ fn test_threadid() {
assert!(!thread.thread.id().is_empty());
}
-#[test]
-fn test_len() {
- let thread = ThreadFixture::new();
-
- assert_eq!(thread.thread.total_messages(), 2);
-}
#[test]
fn test_toplevel() {