예제 #1
0
 def test_status_code_post_valid_rate(self):
     for rate in self.valid_rates:
         with APITestCase.subTest(self, f"rate: {rate}"):
             response = self.client.post(self.valid_urls['car-models-rate'],
                                         data={'rate': rate})
             self.assertEqual(response.status_code, status.HTTP_200_OK,
                              response.data or response)
예제 #2
0
 def test_status_code_post_invalid_rate(self):
     for msg, rate in self.invalid_rates.items():
         with APITestCase.subTest(self, f"rate: {msg}"):
             response = self.client.post(self.valid_urls['car-models-rate'],
                                         data={'rate': rate})
             self.assertEqual(response.status_code,
                              status.HTTP_400_BAD_REQUEST, response.data
                              or response)
예제 #3
0
 def test_status_code_get_invalid_car(self):
     for msg, urls in self.invalid_urls.items():
         for view, url in urls.items():
             with APITestCase.subTest(self, f"{msg} url: {url}"):
                 response = self.client.get(url)
                 self.assertEqual(response.status_code,
                                  status.HTTP_404_NOT_FOUND, response.data
                                  or response)
예제 #4
0
 def test_patch_invalid_data_payload_raw(self, base_obj=None, payload_data=None):
     if self.client and self.detail_view_name:
         for msg, data in (payload_data or self.invalid_partial_data).items():
             with APITestCase.subTest(self, msg):
                 response = self.client.patch(
                     reverse(self.detail_view_name, kwargs=self.get_kwargs(base_obj)), data=data)
                 self.assertEqual(
                     response.status_code, status.HTTP_400_BAD_REQUEST, f"{response.data}")
                 # check if self.obj was not changed
                 self.test_get_obj_data(obj=base_obj, msg=msg)
     else:
         APITestCase.skipTest(self, 'Lack of data')
예제 #5
0
 def test_post_invalid_data_payload_raw(self, payload_data=None):
     if self.client and self.list_view_name:
         records = [_.pk for _ in self.model.objects.all()]
         for msg, data in (payload_data or self.invalid_post_data_payload).items():
             with APITestCase.subTest(self, msg):
                 response = self.client.post(reverse(self.list_view_name), data=data)
                 self.assertEqual(
                     response.status_code, status.HTTP_400_BAD_REQUEST, f"{response.data}")
                 # double check records' pks
                 self.assertEqual(records, [_.pk for _ in self.model.objects.all()])
     else:
         APITestCase.skipTest(self, 'Lack of data')
예제 #6
0
 def test_status_code_post_invalid_car(self):
     for make_msg, make in self.invalid_car_data['make_data'].items():
         for model_msg, model in self.invalid_car_data['model_data'].items(
         ):
             with APITestCase.subTest(
                     self, f"make: {make_msg}; model: {model_msg}"):
                 response = self.client.post(self.valid_urls['cars-list'],
                                             data={
                                                 **make,
                                                 **model
                                             })
                 self.assertEqual(response.status_code,
                                  status.HTTP_400_BAD_REQUEST, response.data
                                  or response)
예제 #7
0
 def test_put_invalid_data_payload_json(self, base_obj=None, payload_data=None):
     if self.client and self.detail_view_name:
         for msg, data in (payload_data or self.invalid_put_data_payload).items():
             with APITestCase.subTest(self, msg):
                 response = self.client.put(
                     reverse(self.detail_view_name, kwargs=self.get_kwargs(base_obj)),
                     data=json.dumps(data),
                     content_type='application/json')
                 self.assertEqual(
                     response.status_code, status.HTTP_400_BAD_REQUEST, f"{response.data}")
                 # check if self.obj was not changed
                 self.test_get_obj_data(obj=base_obj, msg=msg)
     else:
         APITestCase.skipTest(self, 'Lack of data')
예제 #8
0
 def test_post_data_payload_raw(self, payload_data=None):
     if self.client and self.list_view_name:
         for msg, data in (payload_data or self.valid_post_data_payload).items():
             with APITestCase.subTest(self, msg):
                 response = self.client.post(reverse(self.list_view_name), data=data)
                 self.assertEqual(response.status_code, status.HTTP_201_CREATED, f"{response.data}")
                 # try to get created model instance
                 obj = self.get_obj(data)
                 self.assertIsNotNone(obj)
                 # check response code with get method
                 self.test_get_obj_code(obj=obj, msg=msg)
                 # check data integrity of data sent and serialized instance
                 self.assertJSONEqual(
                     json.dumps(response.data), self.serializer(instance=obj, context=self.context).data)
     else:
         APITestCase.skipTest(self, 'Lack of data')
예제 #9
0
 def test_patch_data_payload_raw(self, base_obj=None, payload_data=None):
     if self.client and self.detail_view_name:
         obj = base_obj
         for msg, data in (payload_data or self.valid_partial_data).items():
             with APITestCase.subTest(self, msg):
                 response = self.client.patch(
                     reverse(self.detail_view_name, kwargs=self.get_kwargs(obj)), data=data)
                 self.assertEqual(response.status_code, status.HTTP_200_OK, f"{response.data}")
                 # try to get updated model instance
                 obj = self.get_obj_by_pk(self.obj.pk)
                 self.assertIsNotNone(obj)
                 # check response code with get method
                 self.test_get_obj_code(obj=obj, msg=msg)
                 # check data integrity of data sent and serialized instance
                 if self.serializer:
                     self.assertJSONEqual(
                         json.dumps(response.data), self.serializer(instance=obj, context=self.context).data)
     else:
         APITestCase.skipTest(self, 'Lack of data')
예제 #10
0
 def test_status_code_get_valid(self):
     for view, url in self.valid_urls.items():
         with APITestCase.subTest(self, f"url: {url}"):
             response = self.client.get(url)
             self.assertEqual(response.status_code, status.HTTP_200_OK,
                              response.data or response)