sync - build workin

This commit is contained in:
2025-09-29 11:49:31 -07:00
parent 72059afe47
commit 494320c8f3
4 changed files with 172 additions and 72 deletions

View File

@@ -1,70 +0,0 @@
import pytest
from fastapi.testclient import TestClient
from main import app, get_db
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import StaticPool
from datetime import date
import os
# Use an in-memory SQLite database for testing
SQLALCHEMY_DATABASE_URL = "sqlite:///:memory:"
engine = create_engine(
SQLALCHEMY_DATABASE_URL,
connect_args={"check_same_thread": False},
poolclass=StaticPool,
)
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# Create tables
from main import Base, Template, Meal, TemplateMeal
Base.metadata.create_all(bind=engine)
def override_get_db():
try:
db = TestingSessionLocal()
yield db
finally:
db.close()
app.dependency_overrides[get_db] = override_get_db
client = TestClient(app)
def test_templates_page_renders_without_error():
"""Test that the /templates page renders without a TypeError."""
# Create a test template and meal
db = TestingSessionLocal()
meal = Meal(name="Test Meal", meal_type="breakfast", meal_time="Breakfast")
db.add(meal)
db.commit()
db.refresh(meal)
template = Template(name="Test Template")
db.add(template)
db.commit()
db.refresh(template)
template_meal = TemplateMeal(template_id=template.id, meal_id=meal.id, meal_time="Breakfast")
db.add(template_meal)
db.commit()
db.close()
# Test the HTML page
response = client.get("/templates")
assert response.status_code == 200
assert "text/html" in response.headers["content-type"]
# Test the API endpoint
response = client.get("/api/templates")
assert response.status_code == 200
assert response.headers["content-type"] == "application/json"
data = response.json()
assert len(data) == 1
assert data[0]["name"] == "Test Template"
assert len(data[0]["template_meals"]) == 1
assert data[0]["template_meals"][0]["meal_name"] == "Test Meal"

View File

@@ -14,6 +14,44 @@ class TestWeeklyMenuRoutes:
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"""