From eb407374f0f2f1f71b9b1f465d9f76ebf7d8f713 Mon Sep 17 00:00:00 2001 From: Mjumbe Wawatu Poe Date: Tue, 28 Aug 2012 16:10:05 -0400 Subject: [PATCH] Don't pass an instance in to delete_instance, as it should be inferred --- djangorestframework/mixins.py | 2 +- djangorestframework/tests/mixins.py | 44 +++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/djangorestframework/mixins.py b/djangorestframework/mixins.py index 8386b429e..90c883072 100644 --- a/djangorestframework/mixins.py +++ b/djangorestframework/mixins.py @@ -695,7 +695,7 @@ class DeleteModelMixin(ModelMixin, InstanceReaderMixin, InstanceWriterMixin): Behavior to delete a `model` instance on DELETE requests """ def delete(self, request, *args, **kwargs): - self.delete_instance(instance) + self.delete_instance() return diff --git a/djangorestframework/tests/mixins.py b/djangorestframework/tests/mixins.py index e99409b0c..2727b2c13 100644 --- a/djangorestframework/tests/mixins.py +++ b/djangorestframework/tests/mixins.py @@ -4,8 +4,9 @@ from django.utils import simplejson as json from djangorestframework import status from djangorestframework.compat import RequestFactory from django.contrib.auth.models import Group, User -from djangorestframework.mixins import (CreateModelMixin, PaginatorMixin, - ReadModelMixin, UpdateModelMixin) +from djangorestframework.mixins import (CreateModelMixin, DeleteModelMixin, + PaginatorMixin, ReadModelMixin, + UpdateModelMixin) from djangorestframework.resources import ModelResource from djangorestframework.response import Response, ErrorResponse from djangorestframework.tests.models import CustomUser @@ -333,6 +334,45 @@ class TestModelUpdate(TestModelsTestCase): self.assertEquals('foo2', response.groups.all()[1].name) +class TestModelDelete(TestModelsTestCase): + """Tests on DeleteModelMixin""" + + def setUp(self): + super(TestModelsTestCase, self).setUp() + self.req = RequestFactory() + + def test_delete(self): + group = Group.objects.create(name='my group') + + self.assertEquals(1, Group.objects.count()) + + class GroupResource(ModelResource): + model = Group + + # Delete existing + request = self.req.delete('/groups/' + str(group.pk)) + mixin = DeleteModelMixin() + mixin.resource = GroupResource + + mixin.request = request + mixin.args = () + mixin.kwargs = {'pk': group.pk} + + response = mixin.delete(request, **mixin.kwargs) + self.assertEquals(0, Group.objects.count()) + + # Delete at non-existing + request = self.req.delete('/groups/' + str(group.pk)) + mixin = DeleteModelMixin() + mixin.resource = GroupResource + + mixin.request = request + mixin.args = () + mixin.kwargs = {'pk': group.pk} + + self.assertRaises(ErrorResponse, mixin.delete, request, **mixin.kwargs) + + class MockPaginatorView(PaginatorMixin, View): total = 60