Esempio n. 1
0
 def setUp(self):
     self.msg_helper = self.add_helper(MessageHelper())
     self.request = DummyRequest([''])
     self.formatter = CsvEventFormatter()
Esempio n. 2
0
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)