feat: admin scenario PDF download + business plan export tests
Add /scenarios/<id>/pdf admin route for direct PDF generation via WeasyPrint. Fix plan.html Jinja template: .items → ['items'] to avoid dict method collision. Add scenario fixture in conftest.py and comprehensive test suite for business plan sections, PDF generation, worker handler, and export routes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -141,6 +141,25 @@ def create_subscription(db):
|
||||
return _create
|
||||
|
||||
|
||||
# ── Scenarios ────────────────────────────────────────────────
|
||||
|
||||
@pytest.fixture
|
||||
async def scenario(db, test_user):
|
||||
"""User scenario with valid planner state for PDF generation."""
|
||||
import json
|
||||
from padelnomics.planner.calculator import validate_state
|
||||
state = validate_state({"dblCourts": 4, "sglCourts": 2})
|
||||
now = datetime.utcnow().isoformat()
|
||||
async with db.execute(
|
||||
"""INSERT INTO scenarios (user_id, name, state_json, created_at)
|
||||
VALUES (?, 'Test Scenario', ?, ?)""",
|
||||
(test_user["id"], json.dumps(state), now),
|
||||
) as cursor:
|
||||
scenario_id = cursor.lastrowid
|
||||
await db.commit()
|
||||
return {"id": scenario_id, "state": state, "user_id": test_user["id"]}
|
||||
|
||||
|
||||
# ── Config ───────────────────────────────────────────────────
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
|
||||
Reference in New Issue
Block a user