Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion adrf/generics.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import asyncio

from asgiref.sync import async_to_sync, sync_to_async
from django.core.exceptions import ValidationError
from django.http import Http404
from rest_framework.exceptions import ValidationError
from rest_framework.generics import GenericAPIView as DRFGenericAPIView

from adrf import mixins, views
Expand Down
7 changes: 7 additions & 0 deletions tests/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import uuid

from django.contrib.auth.models import User
from django.db import models

Expand All @@ -13,3 +15,8 @@ class ModelA(models.Model):

class ModelB(models.Model):
fielda = models.ForeignKey(ModelA, on_delete=models.CASCADE)


class UUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.TextField()
23 changes: 22 additions & 1 deletion tests/test_generics.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from adrf import generics, serializers

from .models import Order, User
from .models import Order, User, UUIDModel

factory = APIRequestFactory()

Expand All @@ -31,6 +31,17 @@ class RetrieveUserView(generics.RetrieveAPIView):
serializer_class = UserSerializer


class UUIDModelSerializer(serializers.ModelSerializer):
class Meta:
model = UUIDModel
fields = ("id", "name")


class RetrieveUUIDModelView(generics.RetrieveAPIView):
queryset = UUIDModel.objects.all()
serializer_class = UUIDModelSerializer


class DestroyUserView(generics.DestroyAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
Expand Down Expand Up @@ -91,6 +102,16 @@ def test_get_one_user(self):
assert response.data == expected


class TestRetrieveUUIDModelView(TestCase):
def setUp(self):
self.view = RetrieveUUIDModelView.as_view()

def test_get_invalid_uuid_returns_404(self):
request = factory.get("/")
response = async_to_sync(self.view)(request, pk="not-a-uuid")
assert response.status_code == status.HTTP_404_NOT_FOUND


class TestDestroyUserView(TestCase):
def setUp(self):
self.view = DestroyUserView.as_view()
Expand Down