Exemplo n.º 1
0
 def test_can_get_json_from_conversation(self):
     self.messages[0].to_json.return_value = {"aa": "bb"}
     self.messages[1].to_json.return_value = {"cc": "dd"}
     conversation = Conversation()
     conversation._messages = self.messages[:2]
     self.assertEqual(
      conversation.to_json(), {"messages": [{"aa": "bb"}, {"cc": "dd"}]}
     )
Exemplo n.º 2
0
 def test_can_remove_messages(self):
     conversation = Conversation()
     for message in self.messages:
         conversation.add_message(message)
     conversation.remove_message(self.messages[-1])
     self.assertEqual(conversation._messages, self.messages[:-1])
     conversation.remove_message(self.messages[0])
     self.assertEqual(conversation._messages, self.messages[1:-1])
     conversation.remove_message(self.messages[2])
     self.assertEqual(
      conversation._messages,
      [self.messages[1], self.messages[3]]
     )
Exemplo n.º 3
0
 def test_conversation_repr_multiple_message(self):
     conversation = Conversation()
     conversation._messages.append(Mock(Message))
     conversation._messages.append(Mock(Message))
     self.assertEqual(str(conversation), "<Conversation (2 messages)>")
     conversation._messages.append(Mock(Message))
     self.assertEqual(str(conversation), "<Conversation (3 messages)>")
Exemplo n.º 4
0
 def test_can_create_conversation_from_json(self, mock_message, mock_sort):
     message1, message2, message3 = Mock(), Mock(), Mock()
     mock_message.side_effect = [message1, message2, message3]
     json = {
      "messages": ["message1", "message2", "message3"]
     }
     mock_sort.side_effect = lambda k: k
     conversation = Conversation.from_json(json)
     mock_message.assert_any_call("message1")
     mock_message.assert_any_call("message2")
     mock_message.assert_any_call("message3")
     self.assertIsInstance(conversation, Conversation)
     self.assertEqual(conversation._messages, [message1, message2, message3])
     mock_sort.assert_called_with([message1, message2, message3])
Exemplo n.º 5
0
 def test_conversation_repr_no_messages(self):
     conversation = Conversation()
     self.assertEqual(str(conversation), "<Conversation (0 messages)>")
Exemplo n.º 6
0
 def test_json_to_message_requires_messages_key(self):
     with self.assertRaises(ValueError):
         Conversation.from_json({"wrong": []})
Exemplo n.º 7
0
 def test_json_to_conversation_requires_dict(self):
     with self.assertRaises(TypeError):
         Conversation.from_json("some string")
Exemplo n.º 8
0
 def test_can_only_add_messages_to_conversations(self):
     conversation = Conversation()
     with self.assertRaises(TypeError):
         conversation.add_message("Some message")
Exemplo n.º 9
0
 def test_len_returns_length(self, mock_length):
     mock_length.return_value = 23
     conversation = Conversation()
     self.assertEqual(len(conversation), 23)
Exemplo n.º 10
0
 def test_can_access_chatlog(self):
     conversation = Conversation()
     chatlog = "..."
     conversation._chatlog = chatlog
     self.assertIs(conversation.chatlog(), chatlog)
Exemplo n.º 11
0
 def test_length_returns_number_of_messages(self):
     conversation = Conversation()
     conversation._messages = self.messages
     self.assertEqual(conversation.length(), 5)
Exemplo n.º 12
0
 def test_removing_messages_resets_message_conversation_to_none(self):
     conversation = Conversation()
     conversation.add_message(self.messages[0])
     self.assertIs(self.messages[0]._conversation, conversation)
     conversation.remove_message(self.messages[0])
     self.assertIs(self.messages[0]._conversation, None)
Exemplo n.º 13
0
 def test_adding_messages_will_order_them_by_date(self):
     conversation = Conversation()
     conversation.add_message(self.messages[2])
     self.assertEqual(conversation._messages, [self.messages[2]])
     conversation.add_message(self.messages[1])
     self.assertEqual(conversation._messages, self.messages[1:3])
     conversation.add_message(self.messages[0])
     self.assertEqual(conversation._messages, self.messages[:3])
     conversation.add_message(self.messages[4])
     self.assertEqual(conversation._messages, self.messages[:3] + [self.messages[-1]])
     conversation.add_message(self.messages[3])
     self.assertEqual(conversation._messages, self.messages)
Exemplo n.º 14
0
 def test_adding_messages_updates_conversation_of_messages(self):
     conversation = Conversation()
     self.assertIs(self.messages[0]._conversation, None)
     conversation.add_message(self.messages[0])
     self.assertIs(self.messages[0]._conversation, conversation)
Exemplo n.º 15
0
 def test_cannot_add_message_if_it_is_already_present(self):
     conversation = Conversation()
     conversation.add_message(self.messages[0])
     with self.assertRaises(ValueError):
         conversation.add_message(self.messages[0])
Exemplo n.º 16
0
 def test_conversation_repr_one_message(self):
     conversation = Conversation()
     conversation._messages.append(Mock(Message))
     self.assertEqual(str(conversation), "<Conversation (1 message)>")
Exemplo n.º 17
0
 def test_can_get_conversation_participants(self):
     conversation = Conversation()
     self.assertEqual(conversation.participants(), set())
     conversation.add_message(self.messages[0])
     self.assertEqual(
      conversation.participants(),
      set([self.senders[0]])
     )
     conversation.add_message(self.messages[1])
     self.assertEqual(
      conversation.participants(),
      set(self.senders[0:2])
     )
     conversation.add_message(self.messages[2])
     self.assertEqual(
      conversation.participants(),
      set(self.senders[0:3])
     )
     conversation.add_message(self.messages[3])
     self.assertEqual(
      conversation.participants(),
      set(self.senders[0:3])
     )
     conversation.add_message(self.messages[4])
     self.assertEqual(
      conversation.participants(),
      set(self.senders[0:3])
     )
Exemplo n.º 18
0
 def test_can_create_conversation(self):
     conversation = Conversation()
     self.assertEqual(conversation._messages, [])
     self.assertEqual(conversation._chatlog, None)
Exemplo n.º 19
0
 def test_messages_returns_messages(self):
     conversation = Conversation()
     for message in self.messages:
         conversation._messages.append(message)
     self.assertEqual(conversation._messages, conversation.messages())
     self.assertIsNot(conversation._messages, conversation.messages())
Exemplo n.º 20
0
 def test_can_add_messages_to_conversation(self):
     conversation = Conversation()
     conversation.add_message(self.messages[0])
     self.assertEqual(conversation._messages, [self.messages[0]])
     conversation.add_message(self.messages[1])
     self.assertEqual(conversation._messages, self.messages[0:2])