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.knowledge import knowledge_bp
|
||||||
from fabledassistant.routes.rulebooks import rulebooks_bp
|
from fabledassistant.routes.rulebooks import rulebooks_bp
|
||||||
from fabledassistant.routes.trash import trash_bp
|
from fabledassistant.routes.trash import trash_bp
|
||||||
|
from fabledassistant.routes.dashboard import dashboard_bp
|
||||||
from fabledassistant.mcp import mount_mcp
|
from fabledassistant.mcp import mount_mcp
|
||||||
|
|
||||||
STATIC_DIR = Path(__file__).parent / "static"
|
STATIC_DIR = Path(__file__).parent / "static"
|
||||||
@@ -87,6 +88,7 @@ def create_app() -> Quart:
|
|||||||
app.register_blueprint(knowledge_bp)
|
app.register_blueprint(knowledge_bp)
|
||||||
app.register_blueprint(rulebooks_bp)
|
app.register_blueprint(rulebooks_bp)
|
||||||
app.register_blueprint(trash_bp)
|
app.register_blueprint(trash_bp)
|
||||||
|
app.register_blueprint(dashboard_bp)
|
||||||
|
|
||||||
@app.before_request
|
@app.before_request
|
||||||
async def 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