def setUp(self): self.msg_helper = self.add_helper(MessageHelper()) self.request = DummyRequest(['']) self.formatter = CsvEventFormatter()
class TestCsvEventFormatter(VumiTestCase): def setUp(self): self.msg_helper = self.add_helper(MessageHelper()) self.request = DummyRequest(['']) self.formatter = CsvEventFormatter() def test_implements_IMessageFormatter(self): self.assertTrue(IMessageFormatter.providedBy(self.formatter)) def test_add_http_headers(self): self.formatter.add_http_headers(self.request) self.assertEqual( self.request.responseHeaders.getRawHeaders('Content-Type'), ['text/csv; charset=utf-8']) def test_write_row_header(self): self.formatter.write_row_header(self.request) self.assertEqual( self.request.written, ["timestamp,event_id,status,user_message_id,nack_reason\r\n"]) def assert_row_written(self, row, row_template, event): self.assertEqual(row, [ row_template % { 'ts': event['timestamp'].isoformat(), 'id': event['event_id'], 'msg_id': event['user_message_id'], } ]) def test_write_row_ack(self): event = self.msg_helper.make_ack() self.formatter.write_row(self.request, event) self.assert_row_written(self.request.written, "%(ts)s,%(id)s,ack,%(msg_id)s,\r\n", event) def test_write_row_nack(self): event = self.msg_helper.make_nack(nack_reason="raisins") self.formatter.write_row(self.request, event) self.assert_row_written(self.request.written, "%(ts)s,%(id)s,nack,%(msg_id)s,raisins\r\n", event) def test_write_row_delivery_report(self): event = self.msg_helper.make_delivery_report() self.formatter.write_row(self.request, event) self.assert_row_written( self.request.written, "%(ts)s,%(id)s,delivery_report.delivered,%(msg_id)s,\r\n", event) def test_write_row_with_unicode_content(self): event = self.msg_helper.make_nack(nack_reason=u"føø") self.formatter.write_row(self.request, event) self.assert_row_written(self.request.written, "%(ts)s,%(id)s,nack,%(msg_id)s,føø\r\n", event)