def test_add_messages_wrong_chat(self): chat = api.Chat(ROWID=1) wrongChat = api.Chat(ROWID=2) self.messageFrame.currentChat = chat result = self.messageFrame.addMessages(wrongChat) self.assertIsNone(result) self.assertDictEqual(self.messageFrame.messageBubbles, {})
def test_add_message(self): style = ttk.Style() borderImage = tk.PhotoImage("borderImage", file='localCode/messageBox.png') style.element_create("RoundedFrame", "image", borderImage, ("focus", borderImage), border=16, sticky="nsew") style.layout("RoundedFrame", [("RoundedFrame", {"sticky": "nsew"})]) chat = api.Chat(ROWID=1) i = 0 message = api.Message(ROWID=1, guid='ABC-DEF-GHI-JKL', text='hi') chat.addMessage(message) prevMessage = None lastFromMeId = None self.messageFrame.addMessage(chat, i, message, prevMessage, lastFromMeId) self.assertIn(message.rowid, self.messageFrame.messageBubbles) self.assertEqual( self.messageFrame.messageBubbles[message.rowid][0].pack_info() ['anchor'], 'w')
def test_get_name_with_display_name(self): displayName = 'Test name' chat = api.Chat(ROWID=1, display_name=displayName) name = chat.getName() self.assertEqual(name, displayName)
def test_add_message_remove_temp(self): chat = api.Chat(ROWID=1) i = 0 tempMsg = api.Message(ROWID=-1, guid='-1', text='hi', is_from_me=1) message = api.Message(ROWID=1, guid='ABC-DEF-GHI-JKL', text='hi', is_from_me=1) chat.messageList.append(tempMsg) chat.outgoingList.append(tempMsg) prevMessage = None self.messageFrame.addMessage(chat, i, tempMsg, prevMessage, None) prevMessage = tempMsg lastFromMeId = -1 self.assertIn(tempMsg.rowid, self.messageFrame.messageBubbles) chat.addMessage(message) self.messageFrame.addMessage(chat, i, message, prevMessage, lastFromMeId) self.assertIn(message.rowid, self.messageFrame.messageBubbles) self.assertNotIn(tempMsg.rowid, self.messageFrame.messageBubbles) self.assertEqual( self.messageFrame.messageBubbles[message.rowid][0].pack_info() ['anchor'], 'e')
def test_need_read_receipt_from_me_not_group_imessage_last_from_me(self): msg = api.Message(ROWID=1, is_from_me=1, service='iMessage') chat = api.Chat(ROWID=1) result = self.messageFrame.needReadReceipt(chat, msg, msg.rowid) self.assertTrue(result)
def test_add_message_with_attachments_remove_temp(self): chat = api.Chat(ROWID=1) i = 0 tempMsg = api.Message(ROWID=-1, guid='-1', text='hi', is_from_me=1) message = api.Message(ROWID=1, guid='ABC-DEF-GHI-JKL', text='hi', is_from_me=1) attachment = api.Attachment(ROWID=1, guid='NOT-ABC', uti='public.png', filename='bogus.png') tempMsg.addAttachment(attachment, 0) message.addAttachment(attachment, 0) chat.messageList.append(tempMsg) chat.outgoingList.append(tempMsg) prevMessage = None self.messageFrame.addMessage(chat, i, tempMsg, prevMessage, None) prevMessage = tempMsg lastFromMeId = -1 self.assertIn(tempMsg.rowid, self.messageFrame.messageBubbles) chat.addMessage(message) self.messageFrame.addMessage(chat, i, message, prevMessage, lastFromMeId) self.assertIn(message.rowid, self.messageFrame.messageBubbles) self.assertEqual(len(self.messageFrame.messageBubbles[message.rowid]), 2) self.assertNotIn(tempMsg.rowid, self.messageFrame.messageBubbles)
def test_get_name_display_name_with_emoji(self): displayName = 'Recipient 🍄 emoji' correctName = 'Recipient emoji' chat = api.Chat(ROWID=1, display_name=displayName) name = chat.getName() self.assertEqual(name, correctName)
def test__add_recipient_blank_recipient(self): chat = api.Chat(ROWID=1) recipient = '' returnVal = chat._addRecipient(recipient) self.assertListEqual(chat.recipientList, []) self.assertFalse(returnVal)
def test_get_name_no_display_name_with_recipient(self): chat = api.Chat(ROWID=1) recipient = 'test recipient' chat.addRecipient(recipient) name = chat.getName() self.assertEqual(name, recipient)
def test__add_message_from_me(self): chat = api.Chat(ROWID=1) msg = api.Message(ROWID=1, is_from_me=1) correctMessageDict = {msg.ROWID: msg} chat._addMessage(msg) self.assertDictEqual(chat.messageList.messages, correctMessageDict)
def test_get_most_recent_message(self): chat = api.Chat(ROWID=1) msg = api.Message(ROWID=1, text='new text') chat.addMessage(msg) recentMessage = chat.getMostRecentMessage() self.assertEqual(recentMessage, msg)
def test_get_name_no_display_name_with_recipients(self): chat = api.Chat(ROWID=1) recipients = ['test recipient {}'.format(i) for i in range(1, 4)] chat.addRecipients(recipients) name = chat.getName() self.assertEqual(name, ', '.join(recipients))
def test__add_recipient(self): chat = api.Chat(ROWID=1) recipient = '+15555555555' returnVal = chat._addRecipient(recipient) self.assertListEqual(chat.recipientList, [recipient]) self.assertTrue(returnVal)
def test_add_recipients_one_bad_recipient(self): chat = api.Chat(ROWID=1) recipients = ['', '+15555555555'] returnVal = chat.addRecipients(recipients) self.assertListEqual(chat.recipientList, ['+15555555555']) self.assertFalse(returnVal)
def test_need_read_receipt_not_imessage(self): msg = api.Message(ROWID=1, is_from_me=1, service='SMS') chat = api.Chat(ROWID=1) result = self.messageFrame.needReadReceipt(chat, msg, None) self.assertFalse(msg.isiMessage) self.assertFalse(result)
def test_need_read_receipt_is_group(self): msg = api.Message(ROWID=1, is_from_me=0) chat = api.Chat(ROWID=1, style=43) result = self.messageFrame.needReadReceipt(chat, msg, None) self.assertTrue(chat.isGroup) self.assertFalse(result)
def test_add_recipients(self): chat = api.Chat(ROWID=1) recipients = ['+15555555555', '*****@*****.**'] returnVal = chat.addRecipients(recipients) for recipient in recipients: self.assertIn(recipient, chat.recipientList) self.assertTrue(returnVal)
def test_default_properties(self): chat = api.Chat(ROWID=1) self.assertEqual(chat.chatId, chat.ROWID) self.assertEqual(chat.serviceName, chat.service_name) self.assertEqual(chat.chatIdentifier, chat.chat_identifier) self.assertEqual(chat.displayName, chat.display_name) self.assertFalse(chat.isiMessage) self.assertFalse(chat.isGroup)
def test_add_message(self): chat = api.Chat(ROWID=1) msg = api.Message(ROWID=1) correctMessageDict = {msg.ROWID: msg} chat.addMessage(msg) self.assertDictEqual(chat.messageList.messages, correctMessageDict) self.assertEqual(chat.lastAccessTime, 0)
def test_change_chat(self): chat = api.Chat(ROWID=1) self.messageFrame.changeChat(chat) self.assertDictEqual(self.messageFrame.messageBubbles, {}) self.assertEqual(self.messageFrame.messageLimit, 15) self.assertEqual(self.messageFrame.currentChat, chat) self.assertEqual(id(self.messageFrame.currentChat), id(chat))
def test_get_messages(self): chat = api.Chat(ROWID=1) msg = api.Message(ROWID=1, text='new text') chat.addMessage(msg) correctMessageDict = {msg.ROWID: msg} messages = chat.getMessages() self.assertDictEqual(messages, correctMessageDict) self.assertDictEqual(messages, chat.messageList.messages)
def test_send_reaction(self): chat = api.Chat(ROWID=1) testMessageId = 1 testReactionType = 2000 chat.sendReaction(self.StubMessagePasser(), testMessageId, testReactionType) self.assertDictEqual(chat.messageList.messages, {}) self.assertDictEqual(chat.outgoingList.messages, {})
def test_add_message_with_update_time(self): chat = api.Chat(ROWID=1) msg = api.Message(ROWID=1) lastAccessTime = 1 correctMessageDict = {msg.ROWID: msg} chat.addMessage(msg, lastAccessTime) self.assertDictEqual(chat.messageList.messages, correctMessageDict) self.assertEqual(chat.lastAccessTime, lastAccessTime)
def test_get_chats_to_update_with_local_updates(self): messageDb = api.MessageDatabase() chat = api.Chat(ROWID=1) chat.localUpdate = True (chats, maxUpdate) = messageDb.getChatsToUpdate(0, {chat.ROWID: chat}) self.assertEqual(maxUpdate, 1596330123) self.assertListEqual(chats, [82, 85, 86, 87, 1]) self.assertFalse(chat.localUpdate)
def test_get_messages_up_to_limit(self): chat = api.Chat(ROWID=1) maxId = self.messageFrame.messageLimit + 2 for i in range(1, maxId): chat.addMessage(api.Message(ROWID=i, guid=str(i))) messageDict = chat.getMessages() subList = self.messageFrame.getMessagesUpToLimit( messageDict, self.messageFrame.messageLimit) self.assertEqual(len(subList), self.messageFrame.messageLimit)
def test_send_message(self): chat = api.Chat(ROWID=1) testText = 'Test text' recipient = '+15555555555' chat.sendMessage(self.StubMessagePasser(), testText, recipient) self.assertEqual(chat.messagePreviewId, -2) self.assertIn(-1, chat.messageList.messages) self.assertIn(-1, chat.outgoingList.messages) self.assertTrue(chat.localUpdate)
def test_add_messages_pass_limit(self): chat = api.Chat(ROWID=1) maxId = self.messageFrame.messageLimit + 2 for i in range(1, maxId): chat.addMessage(api.Message(ROWID=i, guid=str(i))) self.messageFrame.currentChat = chat result = self.messageFrame.addMessages(chat) self.assertFalse(result) self.assertListEqual(list(self.messageFrame.messageBubbles.keys()), [i for i in range(2, maxId)])
def test_add_messages(self): chat = api.Chat(ROWID=1) msg = api.Message(ROWID=1) msg2 = api.Message(ROWID=2) correctMessageDict = {msg.ROWID: msg, msg2.ROWID: msg2} chat.addMessages([msg, msg2]) self.assertDictEqual(chat.messageList.messages, correctMessageDict) self.assertListEqual(list(chat.messageList.messages), list(correctMessageDict)) self.assertEqual(chat.lastAccessTime, 0)
def test_remove_temporary_message(self): chat = api.Chat(ROWID=1) testText = 'Test text' tempMsg = api.Message(ROWID=-1, text=testText, is_from_me=1) chat.outgoingList.append(tempMsg) chat.addMessage(tempMsg) msg = api.Message(ROWID=1, text=testText, is_from_me=1) chat.removeTemporaryMessage(msg) self.assertDictEqual(chat.outgoingList.messages, {}) self.assertDictEqual(chat.messageList.messages, {})
def test_remove_temporary_message_same_message(self): chat = api.Chat(ROWID=1) testText = 'Test text' tempMsg = api.Message(ROWID=-2, text=testText, is_from_me=1) chat.outgoingList.append(tempMsg) chat.addMessage(tempMsg) correctMessageDict = {tempMsg.ROWID: tempMsg} chat.removeTemporaryMessage(tempMsg) self.assertDictEqual(chat.outgoingList.messages, correctMessageDict) self.assertDictEqual(chat.messageList.messages, correctMessageDict)