示例#1
0
    def test_create_raises_type_error(self):

        class UserSerializer(ModelSerializer):
            addresses = serializers.PrimaryKeyRelatedField(
                queryset=Query(self.TestModelSerializerAddressModel),
                many=True
            )

            class Meta:
                model = self.TestModelSerializerUserModel

        session = SESSION()
        address = self.TestModelSerializerAddressModel(email='*****@*****.**')
        session.add(address)
        session.commit()
        data = {
            'name': 'admin_with_email',
            'addresses': [{'id': address.id}, ],
            'gender': 'male'

        }
        instance = UserSerializer(data=data)
        instance.is_valid(raise_exception=True)

        self.assertRaises(TypeError, instance.create, data)

        session.delete(address)
        session.commit()
        session.close()
示例#2
0
    def test_is_saved_in_database_returs_false_for_pending_object(self):
        instance = HyperlinkedRelatedField(view_name='user-detail')
        session = SESSION()

        user = self.TestHyperlinkedRelatedFieldUserModel(name='test_admin')
        session.add(user)
        self.assertFalse(instance.is_saved_in_database(user))

        session.close()
示例#3
0
 def setUpClass(cls):
     super(TestPrimaryKeyRelatedField, cls).setUpClass()
     session = SESSION()
     user = cls.TestPrimaryKeyRelatedFieldUserModel(name='admin')
     address = cls.TestPrimaryKeyRelatedFieldAddressModel(
         email_address='*****@*****.**')
     user.addresses.append(address)
     session.add(user)
     session.add(address)
     session.commit()
     session.close()
示例#4
0
    def test_get_attribute_returns_empty_list_for_pending_object(self):
        child_instance = self.FakeRelatedField(read_only=True)
        instance = ManyRelatedField(child_relation=child_instance)
        instance.bind('addresses', self)

        session = SESSION()

        pending_user = self.TestManyRelatedFieldUserModel(name='admin')
        session.add(pending_user)
        self.assertEqual(instance.get_attribute(pending_user), [])

        session.close()
示例#5
0
    def test_update_with_relations(self):

        class UserSerializer(ModelSerializer):
            addresses = serializers.PrimaryKeyRelatedField(
                queryset=Query(self.TestModelSerializerAddressModel),
                many=True
            )

            class Meta:
                model = self.TestModelSerializerUserModel

        session = SESSION()
        address = self.TestModelSerializerAddressModel(email='*****@*****.**')
        session.add(address)
        session.commit()
        data = {
            'name': 'admin_for_update_v1',
            'addresses': [],
            'gender': 'male'
        }
        instance = UserSerializer(data=data)
        instance.is_valid(raise_exception=True)
        instance.save()
        user = session \
            .query(self.TestModelSerializerUserModel) \
            .filter(self.TestModelSerializerUserModel.name == data['name']) \
            .first()

        self.assertIsNotNone(user)
        self.assertIsInstance(user, self.TestModelSerializerUserModel)
        self.assertEqual(user.name, data['name'])
        self.assertEqual(user.gender, data['gender'])

        data = {
            'name': 'admin_for_update_v2',
            'addresses': [{'id': address.id}, ],
            'gender': 'male'
        }
        instance = UserSerializer(user, data=data, partial=True)
        instance.is_valid(raise_exception=True)
        updated_user = instance.save()

        self.assertIsNotNone(updated_user)
        self.assertIsInstance(updated_user, self.TestModelSerializerUserModel)
        self.assertEqual(updated_user.name, data['name'])
        self.assertEqual(updated_user.gender, data['gender'])
        self.assertEqual(len(updated_user.addresses), 1)
        self.assertEqual(updated_user.addresses[0].id, address.id)

        session.delete(address)
        session.delete(user)
        session.commit()
        session.close()
示例#6
0
    def test_get_attribute_returns_relation(self):
        child_instance = self.FakeRelatedField(read_only=True)
        instance = ManyRelatedField(child_relation=child_instance)
        instance.bind('addresses', self)

        session = SESSION()

        user = self.TestManyRelatedFieldUserModel(name='admin')
        address = self.TestManyRelatedFieldAddressModel(
            email_address='*****@*****.**')
        user.addresses.append(address)
        session.add(user)
        session.add(address)
        session.commit()
        self.assertEqual(instance.get_attribute(user), [address])

        session.close()
示例#7
0
    def setUpClass(cls):
        super(TestHyperlinkedRelatedField, cls).setUpClass()
        session = SESSION()
        user = cls.TestHyperlinkedRelatedFieldUserModel(name='admin')
        address = cls.TestHyperlinkedRelatedFieldAddressModel(
            email_address='*****@*****.**')
        user_composite_pk = cls.TestHyperlinkedRelatedFieldCompositePkModel(
            id=1, name='test_user')
        user.addresses.append(address)
        session.add(user)
        session.add(address)
        session.add(user_composite_pk)
        session.commit()
        session.close()

        url_parser = URLParser()
        cls.data = {
            'urls': [
                url_parser.define_route('/user/{pk}/',
                                        FakeView, [
                                            'GET',
                                        ],
                                        name='user-detail'),
            ]
        }
        set_urlconf(cls.data)
示例#8
0
    def setUpClass(cls):
        super(TestPrimaryKeyRelatedField, cls).setUpClass()
        session = SESSION()
        user = cls.TestPrimaryKeyRelatedFieldUserModel(name='admin')
        address = cls.TestPrimaryKeyRelatedFieldAddressModel(
            email_address='*****@*****.**')
        user.addresses.append(address)
        session.add(user)
        session.add(address)

        user_custom = cls.TestPKRelatedFieldUserNoUselistModel(
            name='admin_no_uselist')
        email = cls.TestPrimaryKeyRelatedFieldEmailModel(
            email='*****@*****.**')
        user_custom.email = email
        session.add(user_custom)
        session.add(email)

        session.commit()
        session.close()