mirror of
https://github.com/sstent/foodplanner.git
synced 2025-12-06 08:01:47 +00:00
tryiong to fix the details page
This commit is contained in:
@@ -333,26 +333,28 @@ function loadWeeklyMenus(weeklyMenus) {
|
|||||||
|
|
||||||
weeklyMenus.forEach(weeklyMenu => {
|
weeklyMenus.forEach(weeklyMenu => {
|
||||||
const row = document.createElement('tr');
|
const row = document.createElement('tr');
|
||||||
row.innerHTML = `
|
let templateBadges = '';
|
||||||
<td><strong>\${weeklyMenu.name}</strong></td>
|
if (weeklyMenu.weekly_menu_days && weeklyMenu.weekly_menu_days.length > 0) {
|
||||||
<td>
|
templateBadges = weeklyMenu.weekly_menu_days.map(wmd =>
|
||||||
\${weeklyMenu.weekly_menu_days && weeklyMenu.weekly_menu_days.length > 0 ?
|
'<span class="badge bg-secondary me-1">' + dayNames[wmd.day_of_week] + ': ' + wmd.template_name + '</span>'
|
||||||
weeklyMenu.weekly_menu_days.map(wmd =>
|
).join('');
|
||||||
\`<span class="badge bg-secondary me-1">\${dayNames[wmd.day_of_week]}: \${wmd.template_name}</span>\`
|
} else {
|
||||||
).join('') : 'No templates assigned'}
|
templateBadges = 'No templates assigned';
|
||||||
</td>
|
}
|
||||||
<td>
|
row.innerHTML =
|
||||||
<button class="btn btn-sm btn-outline-primary me-2" onclick="applyWeeklyMenuModal(\${weeklyMenu.id})">
|
'<td><strong>' + weeklyMenu.name + '</strong></td>' +
|
||||||
<i class="bi bi-play-circle"></i> Apply
|
'<td>' + templateBadges + '</td>' +
|
||||||
</button>
|
'<td>' +
|
||||||
<button class="btn btn-sm btn-outline-secondary me-2" onclick="editWeeklyMenuModal(\${weeklyMenu.id})">
|
'<button class="btn btn-sm btn-outline-primary me-2" onclick="applyWeeklyMenuModal(' + weeklyMenu.id + ')">' +
|
||||||
<i class="bi bi-pencil"></i> Edit
|
'<i class="bi bi-play-circle"></i> Apply' +
|
||||||
</button>
|
'</button>' +
|
||||||
<button class="btn btn-sm btn-outline-danger" onclick="deleteWeeklyMenu(\${weeklyMenu.id})">
|
'<button class="btn btn-sm btn-outline-secondary me-2" onclick="editWeeklyMenuModal(' + weeklyMenu.id + ')">' +
|
||||||
<i class="bi bi-trash"></i> Delete
|
'<i class="bi bi-pencil"></i> Edit' +
|
||||||
</button>
|
'</button>' +
|
||||||
</td>
|
'<button class="btn btn-sm btn-outline-danger" onclick="deleteWeeklyMenu(' + weeklyMenu.id + ')">' +
|
||||||
`;
|
'<i class="bi bi-trash"></i> Delete' +
|
||||||
|
'</button>' +
|
||||||
|
'</td>';
|
||||||
tbody.appendChild(row);
|
tbody.appendChild(row);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,15 +24,6 @@ class TestWeeklyMenuRoutes:
|
|||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert response.json() == {"status": "success", "message": "Weekly menu created successfully"}
|
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):
|
def test_apply_weekly_menu_route(self, client, db_session, sample_weekly_menu):
|
||||||
"""Test POST /weeklymenu/{weekly_menu_id}/apply route"""
|
"""Test POST /weeklymenu/{weekly_menu_id}/apply route"""
|
||||||
@@ -89,7 +80,7 @@ class TestWeeklyMenuCRUD:
|
|||||||
|
|
||||||
menu_day = WeeklyMenuDay(
|
menu_day = WeeklyMenuDay(
|
||||||
weekly_menu_id=weekly_menu.id,
|
weekly_menu_id=weekly_menu.id,
|
||||||
day_of_week=0, # Monday
|
day_of_week=0, # Monday
|
||||||
template_id=sample_template.id
|
template_id=sample_template.id
|
||||||
)
|
)
|
||||||
db_session.add(menu_day)
|
db_session.add(menu_day)
|
||||||
@@ -98,3 +89,67 @@ class TestWeeklyMenuCRUD:
|
|||||||
# Verify relationships
|
# Verify relationships
|
||||||
assert menu_day.weekly_menu.id == weekly_menu.id
|
assert menu_day.weekly_menu.id == weekly_menu.id
|
||||||
assert menu_day.template.id == sample_template.id
|
assert menu_day.template.id == sample_template.id
|
||||||
|
|
||||||
|
|
||||||
|
class TestWeeklyMenuAPI:
|
||||||
|
"""Test weekly menu API endpoints"""
|
||||||
|
|
||||||
|
def test_get_weekly_menu_detail(self, client, sample_weekly_menu):
|
||||||
|
"""Test GET /weeklymenu/{id} endpoint"""
|
||||||
|
response = client.get(f"/weeklymenu/{sample_weekly_menu.id}")
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
data = response.json()
|
||||||
|
assert "id" in data
|
||||||
|
assert "name" in data
|
||||||
|
assert "weekly_menu_days" in data
|
||||||
|
assert data["id"] == sample_weekly_menu.id
|
||||||
|
assert data["name"] == sample_weekly_menu.name
|
||||||
|
|
||||||
|
def test_get_weekly_menus_api(self, client, sample_weekly_menu):
|
||||||
|
"""Test GET /api/weeklymenus endpoint"""
|
||||||
|
response = client.get("/api/weeklymenus")
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
data = response.json()
|
||||||
|
assert isinstance(data, list)
|
||||||
|
assert len(data) >= 1 # Should include our sample weekly menu
|
||||||
|
|
||||||
|
# Find our sample menu in the response
|
||||||
|
sample_menu_found = False
|
||||||
|
for menu in data:
|
||||||
|
if menu["id"] == sample_weekly_menu.id:
|
||||||
|
sample_menu_found = True
|
||||||
|
assert menu["name"] == sample_weekly_menu.name
|
||||||
|
break
|
||||||
|
assert sample_menu_found, "Sample weekly menu should be in API response"
|
||||||
|
|
||||||
|
def test_update_weekly_menu(self, client, sample_weekly_menu, sample_template):
|
||||||
|
"""Test PUT /weeklymenu/{id} endpoint"""
|
||||||
|
form_data = {
|
||||||
|
"name": "Updated Weekly Menu Name",
|
||||||
|
"template_assignments": f"0:{sample_template.id},1:{sample_template.id},2:{sample_template.id}"
|
||||||
|
}
|
||||||
|
response = client.put(f"/weeklymenu/{sample_weekly_menu.id}", data=form_data)
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
data = response.json()
|
||||||
|
assert data["status"] == "success"
|
||||||
|
|
||||||
|
# Verify the update worked by getting the menu again
|
||||||
|
get_response = client.get(f"/weeklymenu/{sample_weekly_menu.id}")
|
||||||
|
assert get_response.status_code == 200
|
||||||
|
updated_data = get_response.json()
|
||||||
|
assert updated_data["name"] == "Updated Weekly Menu Name"
|
||||||
|
|
||||||
|
def test_delete_weekly_menu(self, client, sample_weekly_menu):
|
||||||
|
"""Test DELETE /weeklymenu/{id} endpoint"""
|
||||||
|
response = client.delete(f"/weeklymenu/{sample_weekly_menu.id}")
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
data = response.json()
|
||||||
|
assert data["status"] == "success"
|
||||||
|
|
||||||
|
# Verify the deletion worked by trying to get the menu again
|
||||||
|
get_response = client.get(f"/weeklymenu/{sample_weekly_menu.id}")
|
||||||
|
assert get_response.status_code == 404
|
||||||
|
|||||||
Reference in New Issue
Block a user