Validación y tests¶
Antes de considerar un módulo terminado, tiene que pasar los validadores del contrato y traer tests.
module-doctor¶
Valida el contrato declarativo:
module.jsones JSON válido con los campos obligatorios (name,version,edition,coreVersionRequired,tablePrefix,apiNamespace).editionescommunity(los módulos nunca son enterprise). Excepción: losmodule.jsonmarketplace-style (los que traenvendor/isolation/http/didacta, validados por el schema strict del host) no llevanedition— el doctor lo exime y marca como error las keys legacyedition/category/requiredLicenseFeature, que romperían el install conMANIFEST_SCHEMA_INVALID.tablePrefixsigue la convenciónmod_<slug-en-snake>_yapiNamespacees/modules/<slug>.- Existe
README.mdcon las 9 secciones obligatorias. - Si el módulo lleva schema Prisma propio, todas las
@@mapusan el prefijo.
El README del módulo¶
Las 9 secciones obligatorias (el ejemplar canónico es modules/access-groups/README.md):
# mod.mi-modulo
## Edición
## Estado
## Resumen funcional
## Modelo de datos
## API pública
## Eventos
## Configuración
## Dependencias
ee-fence¶
Garantiza el modelo open-core: ningún fichero .ee.* puede vivir en modules/* (todos los módulos son Community), y los ficheros EE del core llevan la cabecera de licencia correcta. Corre en CI y bloquea el PR.
Tests¶
- Unit en
modules/<slug>/tests/con Vitest — la lógica pura del paquete se testea sin infraestructura. Incluye uncontract.test.tsque registra el módulo en unModuleRegistryreal (valida manifest + lifecycle). - Coverage mínimo 70% en services y handlers (regla del proyecto).
- Integración para el host (BD efímera de
docker-compose.test.yml), y E2E de Playwright para el flujo de usuario entregado: si no existe spec de tu funcionalidad, créala.
pnpm --filter @didacta/mod-mi-modulo test # unit del paquete
bash scripts/test-local.sh # suite completa autorizada
Ver Tests en local.
Checklist final¶
- [ ]
pnpm lintypnpm typechecken verde. - [ ]
pnpm tsx scripts/ee-fence.tssin errores. - [ ]
pnpm tsx scripts/module-doctor.ts modules/mi-modulosin errores. - [ ]
module.jsonysrc/manifest.tscoherentes entre sí. - [ ] Tests unit del paquete + integración del host + E2E del flujo.
- [ ] README con las 9 secciones.
- [ ] Migración versionada aplicable con
migrate deploy(nuncadb push).