I'm writing a test for my views and when I get to test the 'delete task' part, I get an error that says:
KeyError: 'id'
I'm not sure if the rest of the test are working but they don't give me any errors so I'm assuming they are okay but if they aren't, please do let me know. So what's going on with the delete part? Any help would be appreciated!
This is my view:
from rest_framework import generics, filters
from todo import models
from .serializers import TaskSerializer
from django_filters.rest_framework import DjangoFilterBackend
#lists, creates and filters tasks
class ListTask(generics.ListCreateAPIView):
queryset = models.Task.objects.all()
serializer_class = TaskSerializer
filter_backends = [DjangoFilterBackend, filters.SearchFilter]
filterset_fields = ['date']
search_fields = ['description']
#allows to see detail of a task
class DetailTask(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Task.objects.all()
serializer_class = TaskSerializer
This is my urls:
from django.urls import path
from .views import ListTask, DetailTask
urlpatterns = [
path('', ListTask.as_view(), name='task-list'),
path('<int:pk>/', DetailTask.as_view(), name='task-detail'),
]
This is my test views:
from django.urls import reverse
from rest_framework import status
from rest_framework.test import APITestCase
from todo.serializers import TaskSerializer
class CreateTaskTest(APITestCase):
def setUp(self):
self.data = {'title': 'title', 'description': 'desc', 'completed': False}
def test_can_create_task(self):
response = self.client.post(reverse('task-list'), self.data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
class ListTaskTest(APITestCase):
def setUp(self):
self.data = {'title': 'title', 'description': 'desc', 'completed': False}
def test_can_list_task(self):
response = response = self.client.get(reverse('task-list'), self.data)
self.assertEqual(response.status_code, status.HTTP_200_OK)
class DeleteTaskTest(APITestCase):
def setUp(self):
self.data = {'title': 'title', 'description': 'desc', 'completed': False}
def test_can_delete_task(self):
response = self.client.delete(reverse('task-detail', args=self.data['id']))
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Aucun commentaire:
Enregistrer un commentaire