stackpress
Version:
Incept is a content management framework.
60 lines (59 loc) • 2.23 kB
JavaScript
"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);`)
});
}
;