Skip to content

Commit b99b802

Browse files
Return only product data by name and add test
1 parent 79a3088 commit b99b802

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

app/routes.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -906,15 +906,7 @@ def get_product_by_name(name):
906906
product = Product.query.filter(Product.name == name).first()
907907
if product is None:
908908
abort(404)
909-
910-
try:
911-
product_json = product.to_json()
912-
subcategories = Subcategory.query.filter(Subcategory.id.in_(product_json["subcategories"]))
913-
c_ids = set(c.id for sc in subcategories for c in sc.categories)
914-
product_json["categories"] = list(c_ids)
915-
return product_json, 200
916-
except:
917-
return "Error occured", 500
909+
return jsonify(product.to_json()), 200
918910

919911

920912
@app.route('/products', methods=['GET'])

tests/test_product.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from urllib.parse import quote
2+
13
import pytest
24

35
from app.models import Product
@@ -114,6 +116,25 @@ def test_delete_product(self, create_authenticated_headers, create_product):
114116
assert get_resp.status_code == 404
115117
self._verify_product_in_db("ToDelete", should_exist=False)
116118

119+
def test_get_product_by_name(self, create_product):
120+
product_name = "Test Product With Spaces"
121+
response = create_product(product_name, "A test product with spaces")
122+
assert response.status_code == 201
123+
data = response.get_json()
124+
p_id = data["id"]
125+
126+
encoded_name = quote(product_name)
127+
get_resp = self.client.get(f"/product/{encoded_name}")
128+
assert get_resp.status_code == 200
129+
prod_data = get_resp.get_json()
130+
assert prod_data["id"] == p_id
131+
assert prod_data["name"] == product_name
132+
assert prod_data["description"] == "A test product with spaces"
133+
134+
encoded_name = quote("Non Existent Product")
135+
not_found_resp = self.client.get(f"/product/{encoded_name}")
136+
assert not_found_resp.status_code == 404
137+
117138
@pytest.mark.parametrize(
118139
"get_headers, expected_code",
119140
[

0 commit comments

Comments
 (0)