From 982dc53dc10b47469dddddfef2f7f1e49438ac77 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 8 Feb 2021 22:03:23 +0100 Subject: [PATCH] add some tests for lookup_by_contact_id() --- src/chat.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/chat.rs b/src/chat.rs index 637a466c5..0dc729180 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -3784,4 +3784,53 @@ mod tests { assert_eq!(msg.get_info_type(), SystemMessage::ChatProtectionEnabled); assert_eq!(msg.get_state(), MessageState::OutDelivered); // as bcc-self is disabled and there is nobody else in the chat } + + #[async_std::test] + async fn test_lookup_by_contact_id() { + let ctx = TestContext::new_alice().await; + + // create contact, then unblocked chat + let contact_id = Contact::create(&ctx, "", "bob@foo.de").await.unwrap(); + assert_ne!(contact_id, 0); + let res = lookup_by_contact_id(&ctx, contact_id).await; + assert!(res.is_err()); + + let chat_id = create_by_contact_id(&ctx, contact_id).await.unwrap(); + let (chat_id2, blocked) = lookup_by_contact_id(&ctx, contact_id).await.unwrap(); + assert_eq!(chat_id, chat_id2); + assert_eq!(blocked, Blocked::Not); + + // create contact, then blocked chat + let contact_id = Contact::create(&ctx, "", "claire@foo.de").await.unwrap(); + let (chat_id, _) = create_or_lookup_by_contact_id(&ctx, contact_id, Blocked::Manually) + .await + .unwrap(); + let (chat_id2, blocked) = lookup_by_contact_id(&ctx, contact_id).await.unwrap(); + assert_eq!(chat_id, chat_id2); + assert_eq!(blocked, Blocked::Manually); + + // test nonexistent contact, and also check if reasonable defaults are used + let res = lookup_by_contact_id(&ctx, 1234).await; + assert!(res.is_err()); + + let (chat_id, blocked) = lookup_by_contact_id(&ctx, 1234).await.unwrap_or_default(); + assert_eq!(chat_id, ChatId::new(0)); + assert_eq!(blocked, Blocked::Not); + } + + #[async_std::test] + async fn test_lookup_self_by_contact_id() { + let ctx = TestContext::new_alice().await; + + let res = lookup_by_contact_id(&ctx, DC_CONTACT_ID_SELF).await; + assert!(res.is_err()); + + ctx.update_device_chats().await.unwrap(); + let (chat_id, blocked) = lookup_by_contact_id(&ctx, DC_CONTACT_ID_SELF) + .await + .unwrap(); + assert!(!chat_id.is_special()); + assert!(chat_id.is_self_talk(&ctx).await.unwrap()); + assert_eq!(blocked, Blocked::Not); + } }