def test_process_messages_detects_match(): matching_msg = Message(0, 'mychannel', 'rth', 'hi everyone!') msgs = [ {'data': matching_msg.encode()}, {'data': Message(1, 'mychannel', 'rth', 'one').encode()}, {'data': Message(2, 'mychannel', 'rth', 'two').encode()}, {'data': Message(3, 'mychannel', 'rth', 'three').encode()}, {'data': Message(4, 'mychannel', 'rth', 'four').encode()}, {'data': Message(5, 'mychannel', 'rth', 'five').encode()} ] def get_msg(channel, msg_id): if msg_id == 0: return matching_msg def get_messages(channel, ids): if ids == [0, 1, 2, 3, 4]: return msgs else: return [] msg_store = MessageStore() msg_store.save_message = MagicMock() msg_store.get_message = MagicMock(side_effect=get_msg) msg_store.get_messages = MagicMock(side_effect=get_messages) sub = Subscriber() sub.listen = MagicMock(return_value=msgs) m_writer = MatchWriter() m_writer.save = MagicMock() process_messages(msg_store, sub, FILTS, m_writer) m_writer.save.assert_called_with('mychannel', [0], msgs)
def test_message_encode_and_decode_completeness(): m = Message(0, 'mychannel', 'rth', 'message text') e = m.encode() msg = Message.decode(e) assert_equal(msg.msg_id, 0) assert_equal(msg.channel, 'mychannel') assert_equal(msg.nick, 'rth') assert_equal(msg.text, 'message text')
def test_process_messages_saves_each_message(): msg_store = MessageStore() msg_store.save_message = MagicMock() msg_store.get_message = MagicMock(return_value=None) sub = Subscriber() msg = Message(0, 'mychannel', 'rth', 'zero') sub.listen = MagicMock(return_value=[ {'data': msg.encode()} ]) m_writer = MatchWriter() process_messages(msg_store, sub, FILTS, m_writer) msg_store.save_message.assert_called_with(msg)