From 6ad6cfdadfb74dd0716099d1e9fbfd30c03566e4 Mon Sep 17 00:00:00 2001 From: Pranay-Bandari Date: Wed, 25 Mar 2026 12:48:05 -0400 Subject: [PATCH] fixed all test --- schemas.py | 2 +- test_pet.py | 18 +++++++++++++----- test_store.py | 36 ++++++++++++++++++++++++++++++++++-- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/schemas.py b/schemas.py index 946cb6cc..760be600 100644 --- a/schemas.py +++ b/schemas.py @@ -6,7 +6,7 @@ "type": "integer" }, "name": { - "type": "integer" + "type": "string" }, "type": { "type": "string", diff --git a/test_pet.py b/test_pet.py index e2156781..52f1edc1 100644 --- a/test_pet.py +++ b/test_pet.py @@ -26,7 +26,7 @@ def test_pet_schema(): 3) Validate the 'status' property in the response is equal to the expected status 4) Validate the schema for each object in the response ''' -@pytest.mark.parametrize("status", [("available")]) +@pytest.mark.parametrize("status", ["available", "sold", "pending"]) def test_find_by_status_200(status): test_endpoint = "/pets/findByStatus" params = { @@ -34,13 +34,21 @@ def test_find_by_status_200(status): } response = api_helpers.get_api_data(test_endpoint, params) - # TODO... + + assert response.status_code == 200 + pets = response.json() + assert isinstance(pets, list), "Response should be list" + for pet in pets: + assert_that(pet['status'], is_(status)) + validate(instance=pet, schema=schemas.pet) ''' TODO: Finish this test by... 1) Testing and validating the appropriate 404 response for /pets/{pet_id} 2) Parameterizing the test for any edge cases ''' -def test_get_by_id_404(): - # TODO... - pass \ No newline at end of file +@pytest.mark.parametrize("pet_id", [9999, -1, 99999, 3]) +def test_get_by_id_404(pet_id): + test_endpoint = f"/pets/{pet_id}" + response = api_helpers.get_api_data(test_endpoint) + assert response.status_code == 404 \ No newline at end of file diff --git a/test_store.py b/test_store.py index 186bd792..297228c4 100644 --- a/test_store.py +++ b/test_store.py @@ -4,6 +4,24 @@ import api_helpers from hamcrest import assert_that, contains_string, is_ +@pytest.fixture +def create_order(): + """Fixture to create a test order and return the order ID""" + # Find an available pet dynamically + response = api_helpers.get_api_data("/pets/findByStatus", {"status": "available"}) + available_pets = response.json() + + assert len(available_pets) > 0, "No available pets to create an order" + + # Create an order for the first available pet + order_data = { + "pet_id": available_pets[0]['id'] + } + response = api_helpers.post_api_data("/store/order", order_data) + assert response.status_code == 201 + order = response.json() + return order['id'] + ''' TODO: Finish this test by... 1) Creating a function to test the PATCH request /store/order/{order_id} @@ -12,5 +30,19 @@ 3) Validate the response codes and values 4) Validate the response message "Order and pet status updated successfully" ''' -def test_patch_order_by_id(): - pass +@pytest.mark.parametrize("new_status", ["sold", "available", "pending"]) +def test_patch_order_by_id(create_order, new_status): + order_id = create_order + + # PATCH the order with new status + update_data = { + "status": new_status + } + response = api_helpers.patch_api_data(f"/store/order/{order_id}", update_data) + + # Validate response code + assert response.status_code == 200 + + # Validate the response message + response_data = response.json() + assert_that(response_data['message'], is_("Order and pet status updated successfully")) \ No newline at end of file