Fixe (partially) gift tests and api
This commit is contained in:
@@ -27,7 +27,6 @@ def gift_category_data(mock_event, mock_user):
|
||||
"description": "Animal-themed toys for Emma",
|
||||
"icon": "toy-icon",
|
||||
"color": "#FF5733",
|
||||
"event_id": str(mock_event.id),
|
||||
"created_by": str(mock_user.id)
|
||||
}
|
||||
|
||||
@@ -130,13 +129,21 @@ class TestGiftsRouter:
|
||||
assert any(gift["event_id"] == str(mock_event.id) for gift in response.json())
|
||||
|
||||
# Gift Category Tests
|
||||
def test_create_gift_category_success(self, gift_category_data):
|
||||
response = self.client.post(f"{self.endpoint}/categories/", json=gift_category_data)
|
||||
def test_create_gift_category_success(self, gift_category_data, mock_event):
|
||||
# Need to provide event_id as a query parameter
|
||||
response = self.client.post(
|
||||
f"{self.endpoint}/categories/",
|
||||
json=gift_category_data,
|
||||
params={"event_id": str(mock_event.id)}
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["name"] == gift_category_data["name"]
|
||||
assert data["icon"] == gift_category_data["icon"]
|
||||
assert data["color"] == gift_category_data["color"]
|
||||
# Check that display_order and is_visible are set with default values
|
||||
assert data["display_order"] == 0
|
||||
assert data["is_visible"] == True
|
||||
|
||||
def test_read_gift_category_success(self):
|
||||
response = self.client.get(f"{self.endpoint}/categories/{self.gift_category.id}")
|
||||
@@ -174,21 +181,33 @@ class TestGiftsRouter:
|
||||
assert response.json()["color"] == "#00FF00"
|
||||
|
||||
def test_delete_gift_category_success(self):
|
||||
response = self.client.delete(f"{self.endpoint}/categories/{self.gift_category.id}")
|
||||
response = self.client.delete(
|
||||
f"{self.endpoint}/categories/{self.gift_category.id}",
|
||||
params={"force": True}
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.json()["id"] == str(self.gift_category.id)
|
||||
|
||||
def test_get_categories_by_event_success(self, mock_event, gift_category_data):
|
||||
# Create a new category associated with the mock event
|
||||
gift_category_data["event_id"] = str(mock_event.id)
|
||||
self.client.post(f"{self.endpoint}/categories/", json=gift_category_data)
|
||||
self.client.post(
|
||||
f"{self.endpoint}/categories/",
|
||||
json=gift_category_data,
|
||||
params={"event_id": str(mock_event.id)}
|
||||
)
|
||||
|
||||
# Get categories for the event
|
||||
response = self.client.get(f"{self.endpoint}/categories/event/{mock_event.id}")
|
||||
assert response.status_code == 200
|
||||
assert isinstance(response.json(), list)
|
||||
assert len(response.json()) >= 1
|
||||
assert any(cat["event_id"] == str(mock_event.id) for cat in response.json())
|
||||
|
||||
# Check that at least one category has display_order and is_visible set
|
||||
# These properties come from the EventGiftCategory association
|
||||
assert any(
|
||||
cat.get("display_order") is not None and cat.get("is_visible") is not None
|
||||
for cat in response.json()
|
||||
)
|
||||
|
||||
# Gift Purchase Tests
|
||||
def test_create_gift_purchase_success(self, gift_purchase_data):
|
||||
@@ -268,4 +287,4 @@ class TestGiftsRouter:
|
||||
params=reservation_data
|
||||
)
|
||||
assert response.status_code == 400
|
||||
assert response.json()["detail"] == "Gift is not available for reservation"
|
||||
assert response.json()["detail"] == "Gift is not available for reservation"
|
||||
|
||||
@@ -25,7 +25,7 @@ pytest_plugins = ["pytest_asyncio"]
|
||||
def db_session():
|
||||
"""
|
||||
Creates a fresh SQLite in-memory database for each test function.
|
||||
|
||||
|
||||
Yields a SQLAlchemy session that can be used for testing.
|
||||
"""
|
||||
# Set up the database
|
||||
@@ -340,17 +340,27 @@ def gift_category_fixture(db_session, mock_user, mock_event):
|
||||
"""
|
||||
Fixture to create and return a GiftCategory instance.
|
||||
"""
|
||||
# Create the category without event_id and display_order
|
||||
gift_category = GiftCategory(
|
||||
id=uuid.uuid4(),
|
||||
name="Electronics",
|
||||
description="Category for electronic gifts",
|
||||
event_id=mock_event.id,
|
||||
created_by=mock_user.id,
|
||||
display_order=0,
|
||||
is_visible=True
|
||||
created_by=mock_user.id
|
||||
)
|
||||
db_session.add(gift_category)
|
||||
db_session.commit()
|
||||
|
||||
# Create the association between the category and the event
|
||||
from app.models.gift import EventGiftCategory
|
||||
event_gift_category = EventGiftCategory(
|
||||
event_id=mock_event.id,
|
||||
category_id=gift_category.id,
|
||||
display_order=0,
|
||||
is_visible=True
|
||||
)
|
||||
db_session.add(event_gift_category)
|
||||
db_session.commit()
|
||||
|
||||
return gift_category
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user