Kaynağa Gözat

add CRUD test cases for Snippet

Luke Murphy 9 yıl önce
ebeveyn
işleme
6ce84d454e

+ 45 - 0
hackathon_starter/hackathon/unittests/testsnippets.py

@@ -0,0 +1,45 @@
+from hackathon.models import Snippet
+from rest_framework import status
+from rest_framework.test import APITestCase
+
+
+class SnippetViewTestCase(APITestCase):
+    def setUp(self):
+        self.s1 = Snippet.objects.create(title='t1', code="""print("Hello, World.")""")
+        self.s2 = Snippet.objects.create(title='t2', code="""print("Goodbye, World.")""")
+        super(SnippetViewTestCase, self).setUp()
+
+    def test_list(self):
+        response = self.client.get('/hackathon/snippets/')
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        self.assertEqual(len(response.data), 2)
+
+    def test_detail(self):
+        response = self.client.get('/hackathon/snippets/{}/'.format(self.s1.id))
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        self.assertEqual(response.data['id'], self.s1.id)
+
+    def test_create(self):
+        payload = {'title': 't3', 'code': """print("Create, World.")"""}
+        response = self.client.post('/hackathon/snippets/', payload)
+        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+        self.assertEqual(response.data['title'], 't3')
+        self.assertEqual(response.data['code'], """print("Create, World.")""")
+
+    def test_update(self):
+        payload = {'title': 't666', 'code': '2 + 2'}
+        response = self.client.put('/hackathon/snippets/{}/'.format(self.s1.id), payload)
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        self.assertEqual(response.data['title'], 't666')
+        self.assertEqual(response.data['code'], '2 + 2')
+
+    def test_partial_update(self):
+        payload = {'title': 't666'}
+        response = self.client.patch('/hackathon/snippets/{}/'.format(self.s1.id), payload)
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        self.assertEqual(response.data['title'], 't666')
+
+    def test_delete(self):
+        response = self.client.delete('/hackathon/snippets/{}/'.format(self.s1.id))
+        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
+        self.assertEqual(Snippet.objects.count(), 1)