def test_message_buffer(): subject_template = Mock() body_template = Mock() buf = MessageBuffer(subject_template, body_template) msg1 = UniqueMessage('test', 'test', 'test', 'message1', 'test.py', 1, 'exception text', 'app') msg2 = UniqueMessage('test', 'test', 'test', 'message2', 'test.py', 1, 'exception text', 'app') buf.add(msg1, 'host1') buf.add(msg1, 'host1') buf.add(msg1, 'host2') buf.add(msg2, 'host2') eq_(4, buf.total) eq_(2, buf.total_unique) eq_({'app'}, buf.kinds) eq_(2, len(buf.sorted_counts)) eq_('message1', buf.sorted_counts[0][0].message) eq_(3, buf.sorted_counts[0][1].total) eq_(3, buf.total_matching(lambda m: m.message == 'message1')) subject_template.render.return_value = 'subj' body_template.render.return_value = 'body' subj, body, uniq_messages = buf.flush() eq_('subj', subj) eq_('body', body) eq_(2, len(uniq_messages)) eq_(1, subject_template.render.call_count) eq_(4, body_template.render.call_args[0][0]['total']) eq_(2, body_template.render.call_args[0][0]['total_unique']) eq_(2, len(body_template.render.call_args[0][0]['sorted_counts'])) eq_('message1', body_template.render.call_args[0][0]['sorted_counts'][0][0].message) eq_({'app'}, body_template.render.call_args[0][0]['kinds'])