Skip to content

Commit

Permalink
added unique_together model including tests to verify that PATCH works
Browse files Browse the repository at this point in the history
  • Loading branch information
miki725 authored and blackrobot committed Nov 5, 2015
1 parent 2a59d14 commit ce94588
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 5 deletions.
8 changes: 8 additions & 0 deletions rest_framework_bulk/tests/simple_app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,11 @@
class SimpleModel(models.Model):
number = models.IntegerField()
contents = models.CharField(max_length=16)


class UniqueTogetherModel(models.Model):
foo = models.IntegerField()
bar = models.IntegerField()

class Meta(object):
unique_together = ('foo', 'bar')
10 changes: 9 additions & 1 deletion rest_framework_bulk/tests/simple_app/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from rest_framework.serializers import ModelSerializer
from rest_framework_bulk.serializers import BulkListSerializer, BulkSerializerMixin

from .models import SimpleModel
from .models import SimpleModel, UniqueTogetherModel


class SimpleSerializer(BulkSerializerMixin, # only required in DRF3
Expand All @@ -11,3 +11,11 @@ class Meta(object):
model = SimpleModel
# only required in DRF3
list_serializer_class = BulkListSerializer


class UniqueTogetherSerializer(BulkSerializerMixin, # only required in DRF3
ModelSerializer):
class Meta(object):
model = UniqueTogetherModel
# only required in DRF3
list_serializer_class = BulkListSerializer
3 changes: 2 additions & 1 deletion rest_framework_bulk/tests/simple_app/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
from django.conf.urls import patterns, url, include
from rest_framework_bulk.routes import BulkRouter

from .views import SimpleViewSet
from .views import SimpleViewSet, UniqueTogetherViewSet


router = BulkRouter()
router.register('simple', SimpleViewSet, 'simple')
router.register('unique-together', UniqueTogetherViewSet, 'unique-together')

urlpatterns = patterns(
'',
Expand Down
10 changes: 8 additions & 2 deletions rest_framework_bulk/tests/simple_app/views.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from __future__ import unicode_literals, print_function
from rest_framework_bulk import generics

from .models import SimpleModel
from .serializers import SimpleSerializer
from .models import SimpleModel, UniqueTogetherModel
from .serializers import SimpleSerializer, UniqueTogetherSerializer


class SimpleMixin(object):
Expand All @@ -23,3 +23,9 @@ def filter_queryset(self, queryset):
class SimpleViewSet(SimpleMixin, generics.BulkModelViewSet):
def filter_queryset(self, queryset):
return queryset.filter(number__gt=5)


class UniqueTogetherViewSet(generics.BulkModelViewSet):
model = UniqueTogetherModel
queryset = UniqueTogetherModel.objects.all()
serializer_class = UniqueTogetherSerializer
21 changes: 20 additions & 1 deletion rest_framework_bulk/tests/test_generics.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.test.client import RequestFactory
from rest_framework import status

from .simple_app.models import SimpleModel
from .simple_app.models import SimpleModel, UniqueTogetherModel
from .simple_app.views import FilteredBulkAPIView, SimpleBulkAPIView


Expand Down Expand Up @@ -273,6 +273,25 @@ def test_patch(self):

self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_patch_unique_together(self):
"""
Test that PATCH with multiple partial resources returns 200
even on model with unique together columns
"""
obj1 = UniqueTogetherModel.objects.create(foo=1, bar=2)
obj2 = UniqueTogetherModel.objects.create(foo=3, bar=4)

response = self.client.patch(
reverse('api:unique-together-list'),
data=json.dumps([
{'foo': 5, 'id': obj1.pk},
{'foo': 6, 'id': obj2.pk},
]),
content_type='application/json',
)

self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_delete(self):
"""
Test that PATCH with multiple partial resources returns 200
Expand Down
2 changes: 2 additions & 0 deletions tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals

0 comments on commit ce94588

Please sign in to comment.