Skip to content
Merged
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
38 changes: 21 additions & 17 deletions tests/test_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,9 @@ def _create_pets(self, count: int = 1) -> list:
test_pet = PetFactory()
response = self.client.post(BASE_URL, json=test_pet.serialize())
self.assertEqual(
response.status_code, status.HTTP_201_CREATED, "Could not create test pet"
response.status_code,
status.HTTP_201_CREATED,
"Could not create test pet",
)
new_pet = response.get_json()
test_pet.id = new_pet["id"]
Expand Down Expand Up @@ -233,8 +235,7 @@ def test_query_pet_list_by_category(self):
test_category = pets[0].category
category_pets = [pet for pet in pets if pet.category == test_category]
response = self.client.get(
BASE_URL,
query_string=f"category={quote_plus(test_category)}"
BASE_URL, query_string=f"category={quote_plus(test_category)}"
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.get_json()
Expand All @@ -254,9 +255,7 @@ def test_query_by_availability(self):
logging.debug("Unavailable Pets [%d] %s", unavailable_count, unavailable_pets)

# test for available
response = self.client.get(
BASE_URL, query_string="available=true"
)
response = self.client.get(BASE_URL, query_string="available=true")
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.get_json()
self.assertEqual(len(data), available_count)
Expand All @@ -265,9 +264,7 @@ def test_query_by_availability(self):
self.assertEqual(pet["available"], True)

# test for unavailable
response = self.client.get(
BASE_URL, query_string="available=false"
)
response = self.client.get(BASE_URL, query_string="available=false")
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.get_json()
self.assertEqual(len(data), unavailable_count)
Expand Down Expand Up @@ -296,9 +293,16 @@ def test_query_by_gender(self):
# ----------------------------------------------------------
def test_purchase_a_pet(self):
"""It should Purchase a Pet"""
pets = self._create_pets(10)
available_pets = [pet for pet in pets if pet.available is True]
pet = available_pets[0]
# Create a pet that is available for purchase
pet = PetFactory()
pet.available = True
response = self.client.post(BASE_URL, json=pet.serialize())
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
data = response.get_json()
pet.id = data["id"]
self.assertEqual(data["available"], True)

# Call purchase on the created id and check the results
response = self.client.put(f"{BASE_URL}/{pet.id}/purchase")
self.assertEqual(response.status_code, status.HTTP_200_OK)
response = self.client.get(f"{BASE_URL}/{pet.id}")
Expand Down Expand Up @@ -369,16 +373,16 @@ def test_create_pet_bad_gender(self):
# T E S T M O C K S
######################################################################

@patch('service.routes.Pet.find_by_name')
@patch("service.routes.Pet.find_by_name")
def test_bad_request(self, bad_request_mock):
"""It should return a Bad Request error from Find By Name"""
bad_request_mock.side_effect = DataValidationError()
response = self.client.get(BASE_URL, query_string='name=fido')
response = self.client.get(BASE_URL, query_string="name=fido")
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

@patch('service.routes.Pet.find_by_name')
@patch("service.routes.Pet.find_by_name")
def test_mock_search_data(self, pet_find_mock):
"""It should showing how to mock data"""
pet_find_mock.return_value = [MagicMock(serialize=lambda: {'name': 'fido'})]
response = self.client.get(BASE_URL, query_string='name=fido')
pet_find_mock.return_value = [MagicMock(serialize=lambda: {"name": "fido"})]
response = self.client.get(BASE_URL, query_string="name=fido")
self.assertEqual(response.status_code, status.HTTP_200_OK)