diff options
Diffstat (limited to 'tests/test_message.rs')
| -rw-r--r-- | tests/test_message.rs | 291 |
1 files changed, 0 insertions, 291 deletions
diff --git a/tests/test_message.rs b/tests/test_message.rs deleted file mode 100644 index 7af6f2c..0000000 --- a/tests/test_message.rs +++ /dev/null @@ -1,291 +0,0 @@ -use std::sync::Arc; -use std::path::PathBuf; -use fixtures::MailBox; - -struct MessageFixture { - // Return a single thread with 2 messages - pub mailbox: MailBox, - pub database: Arc<notmuch::Database>, - pub maildir_msg: (String, PathBuf), - pub message: notmuch::Message<'static, notmuch::Database>, -} - -impl MessageFixture { - pub fn new() -> Self{ - let mailbox = MailBox::new(); - - let (msgid, filename) = mailbox.deliver(None, None, None, None, vec![], true, None, false, false, false).unwrap(); - - let database = Arc::new(notmuch::Database::create(&mailbox.path()).unwrap()); - let message = <notmuch::Database as notmuch::DatabaseExt>::index_file(database.clone(), &filename, None).unwrap(); - - Self { - mailbox, - database, - maildir_msg: (msgid, filename), - message - } - } -} - -mod message { - - use super::*; - - #[test] - fn test_messageid() { - let msg = MessageFixture::new(); - let copy = <notmuch::Database as notmuch::DatabaseExt>::find_message_by_filename(msg.database.clone(), &msg.message.filename()).unwrap().unwrap(); - assert_eq!(msg.message.id(), copy.id()) - } - - #[test] - fn test_messageid_find() { - let msg = MessageFixture::new(); - let copy = <notmuch::Database as notmuch::DatabaseExt>::find_message(msg.database.clone(), &msg.message.id()).unwrap().unwrap(); - assert_eq!(msg.message.id(), copy.id()) - } - - #[test] - fn test_path() { - let msg = MessageFixture::new(); - assert_eq!(msg.message.filename(), msg.maildir_msg.1) - } - - - #[test] - fn test_filenames() { - let msg = MessageFixture::new(); - let mut filenames = msg.message.filenames(); - let filename = filenames.next().unwrap(); - - assert_eq!(filename, msg.message.filename()); - - assert!(filenames.next().is_none()); - let names: Vec<PathBuf> = msg.message.filenames().collect(); - - assert_eq!(names, vec![msg.maildir_msg.1]); - } - - #[test] - fn test_header() { - let msg = MessageFixture::new(); - assert_eq!(msg.message.header(&"from").unwrap().unwrap().to_string(), "<src@example.com>"); - } - - #[test] - fn test_header_not_present() { - let msg = MessageFixture::new(); - assert_eq!(msg.message.header(&"foo").unwrap(), None); - } - - #[test] - fn test_freeze() { - let msg = MessageFixture::new(); - - msg.message.freeze().unwrap(); - msg.message.add_tag(&"foo").unwrap(); - msg.message.add_tag(&"bar").unwrap(); - msg.message.remove_tag(&"foo").unwrap(); - msg.message.thaw().unwrap(); - - assert!(msg.message.tags().all(|x| x != "foo")); - assert!(msg.message.tags().any(|x| x == "bar")); - } - - #[test] - fn test_freeze_context() { - let msg = MessageFixture::new(); - - { - let _frozen = notmuch::FrozenMessage::new(&msg.message).unwrap(); - msg.message.add_tag(&"foo").unwrap(); - msg.message.add_tag(&"bar").unwrap(); - msg.message.remove_tag(&"foo").unwrap(); - - } - assert!(msg.message.tags().all(|x| x != "foo")); - assert!(msg.message.tags().any(|x| x == "bar")); - } - - - #[test] - fn test_freeze_err() { - // not sure if this test is ok? - let msg = MessageFixture::new(); - - msg.message.add_tag(&"foo").unwrap(); - - msg.message.freeze().unwrap(); - assert!(msg.message.remove_all_tags().is_ok()); - - let copy = <notmuch::Database as notmuch::DatabaseExt>::find_message(msg.database.clone(), &msg.message.id()).unwrap().unwrap(); - assert!(copy.tags().any(|x| x == "foo")); - - msg.message.thaw().unwrap(); - - assert!(!msg.message.tags().any(|x| x == "foo")); - - let copy2 = <notmuch::Database as notmuch::DatabaseExt>::find_message(msg.database.clone(), &msg.message.id()).unwrap().unwrap(); - assert!(!copy2.tags().any(|x| x == "foo")); - } - - #[test] - fn test_freeze_context_err() { - // not sure if this test is ok? - let msg = MessageFixture::new(); - msg.message.add_tag(&"foo").unwrap(); - - { - let _frozen = notmuch::FrozenMessage::new(&msg.message).unwrap(); - assert!(msg.message.remove_all_tags().is_ok()); - assert!(!msg.message.tags().any(|x| x == "foo")); - - let copy = <notmuch::Database as notmuch::DatabaseExt>::find_message(msg.database.clone(), &msg.message.id()).unwrap().unwrap(); - assert!(copy.tags().any(|x| x == "foo")); - } - - let copy2 = <notmuch::Database as notmuch::DatabaseExt>::find_message(msg.database.clone(), &msg.message.id()).unwrap().unwrap(); - assert!(!copy2.tags().any(|x| x == "foo")); - assert!(!msg.message.tags().any(|x| x == "foo")); - } - - #[test] - fn test_replies() { - let msg = MessageFixture::new(); - assert_eq!(msg.message.replies().count(), 0); - } - -} - - -// def test_date(self, msg): -// # XXX Someone seems to treat things as local time instead of -// # UTC or the other way around. -// now = int(time.time()) -// assert abs(now - msg.date) < 3600*24 - -mod properties { - use super::*; - - #[test] - fn test_add_single() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"bar").unwrap(); - assert_eq!(msg.message.property(&"foo").unwrap(), "bar"); - - msg.message.add_property(&"bar", &"baz").unwrap(); - assert_eq!(msg.message.property(&"bar").unwrap(), "baz"); - } - - #[test] - fn test_add_dup() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"bar").unwrap(); - msg.message.add_property(&"foo", &"baz").unwrap(); - - assert_eq!(msg.message.property(&"foo").unwrap(), "bar"); - - let props = msg.message.properties(&"foo", true); - let expect = vec![("foo", "bar"), ("foo", "baz")]; - for (&(ek, ev), (pk, pv)) in expect.iter().zip(props) { - assert_eq!(ek, pk); - assert_eq!(ev, pv); - } - } - - #[test] - fn test_len() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"a").unwrap(); - msg.message.add_property(&"foo", &"b").unwrap(); - msg.message.add_property(&"bar", &"a").unwrap(); - - let num_props = msg.message.properties(&"", false).count(); - assert_eq!(num_props, 3); - - let mut prop_keys: Vec<String> = msg.message.properties(&"", false).map(|x| x.0).collect(); - prop_keys.sort(); - prop_keys.dedup(); - assert_eq!(prop_keys.len(), 2); - - let mut prop_vals: Vec<String> = msg.message.properties(&"", false).map(|x| x.1).collect(); - prop_vals.sort(); - prop_vals.dedup(); - assert_eq!(prop_vals.len(), 2); - } - - #[test] - fn test_del() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"a").unwrap(); - msg.message.add_property(&"foo", &"b").unwrap(); - - msg.message.remove_all_properties(Some(&"foo")).unwrap(); - assert!(msg.message.property(&"foo").is_err()); - } - - #[test] - fn test_remove() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"a").unwrap(); - msg.message.add_property(&"foo", &"b").unwrap(); - - msg.message.remove_property(&"foo", &"a").unwrap(); - assert_eq!(msg.message.property(&"foo").unwrap(), "b"); - } - - #[test] - fn test_clear() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"a").unwrap(); - - msg.message.remove_all_properties(None).unwrap(); - assert!(msg.message.property(&"foo").is_err()); - } - - #[test] - fn test_getall() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"a").unwrap(); - - let prop_keys: Vec<String> = msg.message.properties(&"foo", false).map(|x| x.0).collect(); - assert_eq!(prop_keys.len(), 1); - assert_eq!(prop_keys, vec!["foo"]); - - let prop_vals: Vec<String> = msg.message.properties(&"foo", false).map(|x| x.1).collect(); - assert_eq!(prop_vals.len(), 1); - assert_eq!(prop_vals, vec!["a"]); - } - - #[test] - fn test_getall_prefix() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"a").unwrap(); - msg.message.add_property(&"foobar", &"b").unwrap(); - - let prop_keys: Vec<String> = msg.message.properties(&"foo", false).map(|x| x.0).collect(); - assert_eq!(prop_keys.len(), 2); - assert_eq!(prop_keys, vec!["foo", "foobar"]); - - let prop_vals: Vec<String> = msg.message.properties(&"foo", false).map(|x| x.1).collect(); - assert_eq!(prop_vals.len(), 2); - assert_eq!(prop_vals, vec!["a", "b"]); - } - - #[test] - fn test_getall_exact() { - let msg = MessageFixture::new(); - msg.message.add_property(&"foo", &"a").unwrap(); - msg.message.add_property(&"foobar", &"b").unwrap(); - - let prop_keys: Vec<String> = msg.message.properties(&"foo", true).map(|x| x.0).collect(); - assert_eq!(prop_keys.len(), 1); - assert_eq!(prop_keys, vec!["foo"]); - - let prop_vals: Vec<String> = msg.message.properties(&"foo", true).map(|x| x.1).collect(); - assert_eq!(prop_vals.len(), 1); - assert_eq!(prop_vals, vec!["a"]); - } -} - |
