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_create(self): class UserSerializer(ModelSerializer): class Meta: model = self.TestModelSerializerUserModel exclude = ('addresses', ) data = {'name': 'default_admin', 'gender': 'male'} instance = UserSerializer(data=data) instance.is_valid(raise_exception=True) instance.create(instance.data) session = SESSION() 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']) session.delete(user) session.commit() 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_update(self): class UserSerializer(ModelSerializer): class Meta: model = self.TestModelSerializerUserModel exclude = ('addresses', ) data = {'name': 'admin_for_update_v1', 'gender': 'male'} instance = UserSerializer(data=data) instance.is_valid(raise_exception=True) instance.save() session = SESSION() 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', 'gender': 'female'} 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']) session.delete(user) session.commit() session.close()