@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
84 lines • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const assert = require("assert");
const init_1 = require("../../../init");
const fs = require("fs");
const util_1 = require("util");
const path = require("path");
const sdk_generator_1 = require("../../../generators/sdk/sdk-generator");
const YeomanEnvironment = require("yeoman-environment");
const chai_1 = require("chai");
const studio_integration_1 = require("../../../common/studio/studio-integration");
const modelPath = require.resolve('../../fixtures/mpg-projectModel.json');
const rimraf = (0, util_1.promisify)(require('rimraf'));
const SDK_DIR = `src/test/generated/sdk`;
const SDK_ALL_DIR = path.join(process.cwd(), `${SDK_DIR}/all`);
const SDK_MODEL_DIR = path.join(process.cwd(), `${SDK_DIR}/model`);
describe('sdk generator test', () => {
before(() => {
console.log('cleanup', SDK_DIR);
rimraf(`${SDK_DIR}/*`);
});
it('should generate sdk:all', () => rimraf(`${SDK_ALL_DIR}/*`)
.then(() => (0, init_1.generate)('sdk', 'all', {
model: modelPath,
dest: SDK_ALL_DIR,
debug: true
}))
.then(() => {
assert.ok(fs.existsSync(`services.ts`));
assert.ok(fs.existsSync(`queries.ts`));
assert.ok(fs.existsSync(`enums/enums.ts`));
assert.ok(fs.existsSync(`entities/base`));
}));
it('should generate sdk:model', () => rimraf(`${SDK_MODEL_DIR}/*`)
.then(() => (0, init_1.generate)('sdk', 'model', {
model: modelPath,
dest: SDK_MODEL_DIR,
debug: true
}))
.then(() => {
assert.ok(fs.existsSync(`enums/enums.ts`));
assert.ok(fs.existsSync(`entities/base`));
//services and queries should NOT be generated for sdk:model mode
assert.ok(!fs.existsSync(`services.ts`));
assert.ok(!fs.existsSync(`queries.ts`));
}));
it('should generates sdk for empty model', () => {
//TODO
});
it('should fail writing if no model provided', (done) => {
const Gen = class extends sdk_generator_1.SdkModelGenerator {
// noinspection JSUnusedGlobalSymbols
testing() {
this.writing();
}
};
runGenerator(Gen, e => {
(0, chai_1.expect)(e.message).eq('Skip sdk generation - no project model provided');
done();
});
});
it('should fail if CUBA not connected', (done) => {
const Gen = class extends sdk_generator_1.SdkAllGenerator {
// noinspection JSUnusedGlobalSymbols
testing() {
this.prompting();
}
};
runGenerator(Gen, e => {
(0, chai_1.expect)(e.message).eq(studio_integration_1.ERR_STUDIO_NOT_CONNECTED);
done();
});
});
});
function runGenerator(genClass, onError) {
const env = new YeomanEnvironment();
env.registerStub(genClass, 'Gen');
// @ts-ignore
env.on('error', e => {
onError(e);
});
env.run('Gen');
}
//# sourceMappingURL=sdk-generator.test.js.map