UNPKG

stackpress

Version:

Incept is a content management framework.

54 lines (53 loc) 1.93 kB
import { sequence } from '../../helpers.js'; import generateActions from './actions.js'; import generateEvents from './events.js'; export default function generate(directory, registry) { generateActions(directory, registry); generateEvents(directory, registry); for (const model of registry.model.values()) { const source = directory.createSourceFile(`${model.name}/tests/index.ts`, '', { overwrite: true }); source.addImportDeclaration({ isTypeOnly: true, moduleSpecifier: '@stackpress/ingest', namedImports: ['HttpServer'] }); source.addImportDeclaration({ moduleSpecifier: './actions.js', defaultImport: 'actions' }); source.addImportDeclaration({ moduleSpecifier: './events.js', defaultImport: 'events' }); source.addFunction({ isDefaultExport: true, name: 'tests', parameters: [{ name: 'server', type: 'HttpServer' }], statements: (` actions(server.plugin('database')); events(server); `) }); } const source = directory.createSourceFile('tests.ts', '', { overwrite: true }); source.addImportDeclaration({ isTypeOnly: true, moduleSpecifier: '@stackpress/ingest', namedImports: ['HttpServer'] }); for (const model of registry.model.values()) { source.addImportDeclaration({ moduleSpecifier: `./${model.name}/tests/index.js`, defaultImport: `${model.camel}Tests` }); } const models = Array.from(registry.model.values()); const order = sequence(models); source.addFunction({ isDefaultExport: true, name: 'tests', parameters: [{ name: 'server', type: 'HttpServer' }], statements: order.reverse().map(model => `${model.camel}Tests(server);`) }); } ;