feat(dashboard): GET /api/dashboard endpoint
Task 2 of #583. Minimal login-gated blueprint returning build_dashboard(uid); registered in the app factory. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,7 @@ from fabledassistant.routes.profile import profile_bp
|
||||
from fabledassistant.routes.knowledge import knowledge_bp
|
||||
from fabledassistant.routes.rulebooks import rulebooks_bp
|
||||
from fabledassistant.routes.trash import trash_bp
|
||||
from fabledassistant.routes.dashboard import dashboard_bp
|
||||
from fabledassistant.mcp import mount_mcp
|
||||
|
||||
STATIC_DIR = Path(__file__).parent / "static"
|
||||
@@ -87,6 +88,7 @@ def create_app() -> Quart:
|
||||
app.register_blueprint(knowledge_bp)
|
||||
app.register_blueprint(rulebooks_bp)
|
||||
app.register_blueprint(trash_bp)
|
||||
app.register_blueprint(dashboard_bp)
|
||||
|
||||
@app.before_request
|
||||
async def before_request():
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Dashboard REST endpoint — the aggregated landing payload."""
|
||||
from quart import Blueprint, g, jsonify
|
||||
|
||||
from fabledassistant.auth import login_required
|
||||
from fabledassistant.services.dashboard import build_dashboard
|
||||
|
||||
dashboard_bp = Blueprint("dashboard", __name__, url_prefix="/api/dashboard")
|
||||
|
||||
|
||||
@dashboard_bp.get("")
|
||||
@login_required
|
||||
async def get_dashboard():
|
||||
return jsonify(await build_dashboard(g.user.id))
|
||||
@@ -0,0 +1,18 @@
|
||||
"""Structural tests for the dashboard blueprint."""
|
||||
|
||||
|
||||
def test_dashboard_blueprint_registered():
|
||||
from fabledassistant.routes.dashboard import dashboard_bp
|
||||
assert dashboard_bp.name == "dashboard"
|
||||
assert dashboard_bp.url_prefix == "/api/dashboard"
|
||||
|
||||
|
||||
def test_dashboard_blueprint_registered_in_app():
|
||||
from fabledassistant.app import create_app
|
||||
app = create_app()
|
||||
assert "dashboard" in app.blueprints
|
||||
|
||||
|
||||
def test_dashboard_handler_callable():
|
||||
from fabledassistant.routes import dashboard as dashboard_routes
|
||||
assert callable(dashboard_routes.get_dashboard)
|
||||
Reference in New Issue
Block a user