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()
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()
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()
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()
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()
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()
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)
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()