Renumber the 15 reference docs into pillar groups (recipe -> anatomy): - 01 Build Recipe (entry), 02 Composition Root - domains: 10 Layering Rules - contract: 20 Spec-First Routing, 21 CRUD Template, 22 Auth Integration - interfaces/infra: 30 Infra Adapters - UI: 40 UI: Auto-Rendered Admin & Custom Pages (new; @aetoskia packages, client template, x- catalog via react-openapi MCP module) - pipelines: 50 Pipeline Scaffold, 51 Worker & Progress, 52 Human-in-the-Loop - delivery/meta: 90 Drone Pipelines, 91 Versioning & Changelog, 92 Genericity Matrix, 93 Library Registry, 94 Repository Inventory MCP module names are unchanged (NN_ prefix stripped); all cross-references (wiki, templates, hooks, registry) updated; lib index rewritten pillar-first; build recipe bootstraps the client template. Bundle + HTML sites regenerated.
33 lines
766 B
Python
33 lines
766 B
Python
import importlib
|
|
|
|
from openapi_first.app import OpenAPIFirstApp
|
|
|
|
import interfaces.openapi as routes_module
|
|
|
|
|
|
def test_openapi_app_builds():
|
|
"""The spec-first app must build and plant each route handler."""
|
|
module = importlib.import_module(routes_module.__name__)
|
|
for operation in (
|
|
"health",
|
|
"list_items",
|
|
"create_item",
|
|
"get_item",
|
|
"update_item",
|
|
"delete_item",
|
|
"list_jobs",
|
|
"create_job",
|
|
"get_job",
|
|
"update_job",
|
|
"delete_job",
|
|
):
|
|
assert hasattr(module, operation)
|
|
|
|
app = OpenAPIFirstApp(
|
|
openapi_path="openapi.yaml",
|
|
routes_module=module,
|
|
title="App Template API",
|
|
version="0.1.0",
|
|
)
|
|
assert app is not None
|