UNPKG

stackpress

Version:

Incept is a content management framework.

60 lines (59 loc) 2.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = generate; const helpers_js_1 = require("../../helpers.js"); const actions_js_1 = __importDefault(require("./actions.js")); const events_js_1 = __importDefault(require("./events.js")); function generate(directory, registry) { (0, actions_js_1.default)(directory, registry); (0, events_js_1.default)(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 = (0, helpers_js_1.sequence)(models); source.addFunction({ isDefaultExport: true, name: 'tests', parameters: [{ name: 'server', type: 'HttpServer' }], statements: order.reverse().map(model => `${model.camel}Tests(server);`) }); } ;