def test_no_json_method(self, mock_logger, external_api_mock): external_api_mock.return_value = MockNoJsonMethodError() request = self.factory.get('/flights/search') response = SearchFlights().get(request) self.assertEqual(response.status_code, 200) json_response = json.loads(response.content) self.assertEqual(json_response.get("count"), 0) self.assertEqual(json_response.get("results"), [])
def test_unexpected_data_type_returned(self, mock_logger, external_api_mock): external_api_mock.return_value = MockJsonDecodeError() request = self.factory.get('/flights/search') response = SearchFlights().get(request) self.assertEqual(response.status_code, 200) json_response = json.loads(response.content) self.assertEqual(json_response.get("count"), 0) self.assertEqual(json_response.get("results"), [])
def test_valid_data_returned(self, external_api_mock): external_api_mock.return_value = MockValidData() request = self.factory.get('/flights/search') response = SearchFlights().get(request) self.assertEqual(response.status_code, 200) json_response = json.loads(response.content) self.assertEqual(json_response.get("count"), len(SEARCHRUNNER_SCRAPER_API_ENDPOINTS) * len(MockValidData().json().get("results"))) items = json_response.get("results") previous_agony = None for item in items: current_agony = item.get("agony") if previous_agony: self.assertLessEqual(previous_agony, current_agony) previous_agony = current_agony
"""search_flights URL Configuration""" from django.urls import path from app.views import SearchFlights urlpatterns = [ path(r'flights/search', SearchFlights.as_view(), name='SearchFlights') ]
def test_too_many_redirects_error(self, mock_logger, _): request = self.factory.get('/flights/search') response = SearchFlights().get(request) self.assertJSONEqual(str(response.content, encoding='utf8'), {'count': 0, 'results': []})