Files
InsanityLab-web/.superpowers/sdd/task-6-report.md
T
Adriano b913a2bf90 registri dei piani in git (AI-OS#309)
Refs gitea:Adriano/AI-OS#310

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:36:26 +02:00

2.4 KiB

Task 6: GUID esposto — resolve, componenti e GET singolo — REPORT

Stato: completato. Test verdi (62/62), build senza warning.

TDD: aggiunti test in tests/content.test.ts (guid da resolveContent) e tests/content-api.test.ts (GET singolo). Falliti come atteso prima dell'implementazione (guid assente / modulo mancante), verdi dopo.

Due scostamenti dal brief, entrambi necessari per far girare i test contro dati reali:

  • Il tag di esempio home.hero.title non esiste nel seed reale (esistono home.hero.title-line-1/2/3, home.hero.cta, ecc.). Sostituito con home.hero.cta in entrambi i test.
  • require('../src/lib/content') falliva con Cannot find module sotto vitest/vite (risoluzione ESM). Sostituito con import { resolveContent } in testa al file, stessa asserzione.

Variante di routing scelta: B — GET spostato dentro [tag].ts.

Come previsto dal brief, ho prima creato l'endpoint come src/pages/api/admin/content/[tag]/index.ts (variante A) e verificato con npm run build. Astro ha emesso il warning:

[WARN] [router] The route "/api/admin/content/[tag]" is defined in both
"src/pages/api/admin/content/[tag]/index.ts" and
"src/pages/api/admin/content/[tag].ts" using SSR mode. A dynamic SSR route
cannot be defined more than once.
[WARN] [router] A collision will result in a hard error in following versions of Astro.

Collisione confermata → applicata la contingenza: GET spostato dentro src/pages/api/admin/content/[tag].ts (accanto al PUT esistente, stessa logica di query/404/styleOptions), file [tag]/index.ts eliminato. Rilanciato npm run build: nessun warning di routing. Test del GET (che ora importa ../src/pages/api/admin/content/[tag]) verde con la variante finale.

File toccati:

  • src/lib/content.ts — Entry.guid, query con guid, resolve() ritorna guid.
  • src/components/content/T.astro — data-guid su entrambi i rami.
  • src/components/content/TImg.astro — riscritto per usare resolveContent (non più getImageOverride) e propagare data-guid su entrambi i rami.
  • src/pages/api/admin/content/[tag].ts — aggiunto GET (variante finale).
  • tests/content.test.ts, tests/content-api.test.ts — nuovi test.

Verifica: npm test → 12 file, 62 test, tutti verdi. npm run build → completa senza warning di routing.

Commit: 5ce10da — feat(content): guid in resolve/componenti + GET /api/admin/content/[tag]