示例#1
0
    def test_base_types(self):
        """ Testing serialization of base types.
        """
        from adrest.utils.serializer import BaseSerializer
        try:
            from collections import OrderedDict
        except ImportError:
            from ordereddict import OrderedDict # nolint

        from datetime import datetime
        from decimal import Decimal

        serializer = BaseSerializer()
        data = dict(
            string_='test',
            unicode_=unicode('test'),
            datetime_=datetime(2007, 01, 01),
            odict_=OrderedDict(value=1),
            dict_=dict(
                list_=[1, 2.35, Decimal(3), False]
            )
        )

        value = serializer.serialize(data)
        self.assertEqual(value, dict(
            string_=u'test',
            unicode_=u'test',
            datetime_='2007-01-01T00:00:00',
            odict_=dict(value=1),
            dict_=dict(
                list_=[1, 2.35, 3.0, False]
            )
        ))
示例#2
0
    def test_base_types(self):
        """ Testing serialization of base types.
        """
        from adrest.utils.serializer import BaseSerializer
        try:
            from collections import OrderedDict
        except ImportError:
            from ordereddict import OrderedDict  # noqa

        from datetime import datetime
        from decimal import Decimal

        serializer = BaseSerializer()
        data = dict(string_='test',
                    unicode_=unicode('test'),
                    datetime_=datetime(2007, 01, 01),
                    odict_=OrderedDict(value=1),
                    dict_=dict(list_=[1, 2.35, Decimal(3), False]))

        value = serializer.serialize(data)
        self.assertEqual(
            value,
            dict(string_=u'test',
                 unicode_=u'test',
                 datetime_='2007-01-01T00:00:00',
                 odict_=dict(value=1),
                 dict_=dict(list_=[1, 2.35, 3.0, False])))
示例#3
0
文件: tests.py 项目: intaxi/adrest
    def test_simply(self):
        from adrest.utils.serializer import BaseSerializer
        from .models import Task
        user = milkman.deliver('auth.User', username="******")
        data = [milkman.deliver(Task, user=user), milkman.deliver(Task, user=user),
                28, 'string']

        serializer = BaseSerializer(_exclude='fake', _include='username', user=dict(
            _fields='email'))
        self.assertEqual(serializer.options['_exclude'], set(['fake']))

        out = serializer.to_simple(data)
        self.assertEqual(out[0]['fields']['username'], data[0].user.username)

        # Test m2o serialization
        serializer = BaseSerializer(_include="task_set", task_set=dict(
            _fields=[]))
        out = serializer.to_simple(user)

        self.assertEquals(len(out['fields']['task_set']), 2)
        for task in out['fields']['task_set']:
            self.assertEquals(task['fields']['user'], user.pk)
            self.assertTrue('title' in task['fields'].keys())
示例#4
0
    def test_django_model(self):
        from adrest.utils.serializer import BaseSerializer

        pirate = mixer.blend('core.pirate', name='Billy')
        data = [
            mixer.blend('core.boat', pirate=pirate),
            mixer.blend('core.boat', pirate=pirate), 28, 'string'
        ]

        serializer = BaseSerializer(
            exclude='fake',
            include='pk',
            related=dict(pirate=dict(fields='character')),
        )
        self.assertEqual(serializer.model_options['exclude'], set(['fake']))

        out = serializer.to_simple(data, **serializer.model_options)
        self.assertTrue(out[0]['fields']['pk'])
        self.assertEqual(out[0]['fields']['pirate']['fields']['character'],
                         data[0].pirate.character)

        # Test m2o serialization
        serializer = BaseSerializer(
            include="boat_set",
            related=dict(boat_set=dict(fields=[])),
        )
        out = serializer.to_simple(pirate, **serializer.model_options)

        self.assertEquals(len(out['fields']['boat_set']), 2)
        for boat in out['fields']['boat_set']:
            self.assertEquals(boat['fields']['pirate'], pirate.pk)
            self.assertTrue('title' in boat['fields'].keys())

        out = serializer.to_simple(pirate)
        self.assertTrue('model' in out)

        out = serializer.to_simple(pirate, include=['boat_set'])
        self.assertTrue(out['fields']['boat_set'])
        self.assertEqual(len(list(out['fields']['boat_set'])), 2)
示例#5
0
    def test_django_model(self):
        from adrest.utils.serializer import BaseSerializer

        pirate = mixer.blend('core.pirate', name='Billy')
        data = [
            mixer.blend('core.boat', pirate=pirate),
            mixer.blend('core.boat', pirate=pirate),
            28, 'string']

        serializer = BaseSerializer(
            exclude='fake',
            include='pk',
            related=dict(
                pirate=dict(fields='character')
            ),
        )
        self.assertEqual(serializer.model_options['exclude'], set(['fake']))

        out = serializer.to_simple(data, **serializer.model_options)
        self.assertTrue(out[0]['fields']['pk'])
        self.assertEqual(out[0]['fields']['pirate']['fields']['character'],
                         data[0].pirate.character)

        # Test m2o serialization
        serializer = BaseSerializer(
            include="boat_set",
            related=dict(
                boat_set=dict(
                    fields=[])
            ),
        )
        out = serializer.to_simple(pirate, **serializer.model_options)

        self.assertEquals(len(out['fields']['boat_set']), 2)
        for boat in out['fields']['boat_set']:
            self.assertEquals(boat['fields']['pirate'], pirate.pk)
            self.assertTrue('title' in boat['fields'].keys())

        out = serializer.to_simple(pirate)
        self.assertTrue('model' in out)

        out = serializer.to_simple(pirate, include=['boat_set'])
        self.assertTrue(out['fields']['boat_set'])
        self.assertEqual(len(list(out['fields']['boat_set'])), 2)