tomi77/slumber-serializers

View on GitHub
tests.py

Summary

Maintainability
A
3 hrs
Test Coverage
import unittest
import slumber
import slumber.serialize

from slumber_serializers import CsvSerializer, BinarySerializer


class CsvSerializerTestCase(unittest.TestCase):
    def setUp(self):
        self.data = [
            ['foo', 'bar'],
            ['1', '2'],
            ['3', '4'],
        ]

        self.slumber_serializer = slumber.serialize.Serializer(serializers=[slumber.serialize.JsonSerializer(),
                                                                            slumber.serialize.YamlSerializer(),
                                                                            CsvSerializer()])

    def test_get_serializer(self):
        serializer = self.slumber_serializer.get_serializer(content_type='text/csv')

        self.assertEqual(type(serializer), CsvSerializer,
                         'content_type text/csv should produce a CsvSerializer')

    def test_dumps(self):
        serializer = self.slumber_serializer.get_serializer(content_type='text/csv')
        result = serializer.dumps(self.data)

        self.assertEqual(result, b'foo,bar\r\n1,2\r\n3,4\r\n')

    def test_loads(self):
        serializer = self.slumber_serializer.get_serializer(content_type='text/csv')
        result = b'foo,bar\r\n1,2\r\n3,4'

        self.assertEqual(self.data, list(serializer.loads(result)))


class BinarySerializerTestCase(unittest.TestCase):
    def setUp(self):
        self.data = b'binary data'
        self.slumber_serializer = slumber.serialize.Serializer(serializers=[slumber.serialize.JsonSerializer(),
                                                                            slumber.serialize.YamlSerializer(),
                                                                            BinarySerializer()], default='binary')

    def test_get_serializer(self):
        for content_type in [
            'image/gif',
        ]:
            serializer = self.slumber_serializer.get_serializer(content_type=content_type)

            self.assertEqual(type(serializer), BinarySerializer,
                             'content_type %s should produce a BinarySerializer' % content_type)

    def test_dumps(self):
        serializer = self.slumber_serializer.get_serializer(content_type='image/gif')
        result = serializer.dumps(self.data)

        self.assertEqual(result, b'binary data')

    def test_binary_serializer(self):
        serializer = self.slumber_serializer.get_serializer(content_type='image/gif')
        result = b'binary data'

        self.assertEqual(self.data, serializer.loads(result))