Files
foodplanner/tests/test_weekly_menu.py
2025-09-29 11:49:31 -07:00

101 lines
3.7 KiB
Python

"""
Tests for Weekly Menu operations
"""
import pytest
class TestWeeklyMenuRoutes:
"""Test weekly menu-related routes"""
def test_get_weekly_menu_page(self, client):
"""Test GET /weeklymenu page"""
response = client.get("/weeklymenu")
assert response.status_code == 200
assert b"Weekly" in response.content or b"weekly" in response.content or b"Menu" in response.content
def test_create_weekly_menu_route(self, client, sample_template):
"""Test POST /weeklymenu/create route"""
form_data = {
"name": "My New Weekly Menu",
"template_assignments": f"0:{sample_template.id},1:{sample_template.id}"
}
response = client.post("/weeklymenu/create", data=form_data)
assert response.status_code == 200
assert response.json() == {"status": "success", "message": "Weekly menu created successfully"}
def test_create_weekly_menu_route(self, client, sample_template):
"""Test POST /weeklymenu/create route"""
form_data = {
"name": "My New Weekly Menu",
"template_assignments": f"0:{sample_template.id},1:{sample_template.id}"
}
response = client.post("/weeklymenu/create", data=form_data)
assert response.status_code == 200
assert response.json() == {"status": "success", "message": "Weekly menu created successfully"}
def test_apply_weekly_menu_route(self, client, db_session, sample_weekly_menu):
"""Test POST /weeklymenu/{weekly_menu_id}/apply route"""
from datetime import date, timedelta
today = date.today()
# Find Monday of current week
week_start_date = (today - timedelta(days=today.weekday())).isoformat()
form_data = {
"person": "Sarah",
"week_start_date": week_start_date,
"confirm_overwrite": "false"
}
response = client.post(f"/weeklymenu/{sample_weekly_menu.id}/apply", data=form_data)
assert response.status_code == 200
assert response.json() == {"status": "success", "message": "Weekly menu applied successfully."}
class TestWeeklyMenuCRUD:
"""Test weekly menu CRUD operations"""
def test_create_weekly_menu(self, client, db_session, sample_template):
"""Test creating a weekly menu"""
from main import WeeklyMenu, WeeklyMenuDay
weekly_menu = WeeklyMenu(name="Test Weekly Menu")
db_session.add(weekly_menu)
db_session.commit()
db_session.refresh(weekly_menu)
# Add days to weekly menu
for day in range(7):
menu_day = WeeklyMenuDay(
weekly_menu_id=weekly_menu.id,
day_of_week=day,
template_id=sample_template.id
)
db_session.add(menu_day)
db_session.commit()
assert weekly_menu.id is not None
assert len(weekly_menu.weekly_menu_days) == 7
def test_weekly_menu_relationships(self, client, db_session, sample_template):
"""Test weekly menu relationships"""
from main import WeeklyMenu, WeeklyMenuDay
weekly_menu = WeeklyMenu(name="Relationship Test Menu")
db_session.add(weekly_menu)
db_session.commit()
db_session.refresh(weekly_menu)
menu_day = WeeklyMenuDay(
weekly_menu_id=weekly_menu.id,
day_of_week=0, # Monday
template_id=sample_template.id
)
db_session.add(menu_day)
db_session.commit()
# Verify relationships
assert menu_day.weekly_menu.id == weekly_menu.id
assert menu_day.template.id == sample_template.id