UNPKG

@simplrjs/test-generator-cli

Version:
59 lines 8.7 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const path = require("path"); const fs = require("fs-extra"); const fast_glob_1 = require("fast-glob"); const handlebars = require("handlebars"); const tests_helpers_1 = require("./tests-helpers"); const logger_1 = require("./utils/logger"); function TestsGenerator(testsCasesPath) { return __awaiter(this, void 0, void 0, function* () { const defaultTemplatePath = tests_helpers_1.FixSep(path.join(testsCasesPath, "..", tests_helpers_1.DEFAULT_TEMPLATE_FILE_NAME)); if (!(yield fs.pathExists(defaultTemplatePath))) { logger_1.Logger.Error(`Not found package default template. Expected file location: "${defaultTemplatePath}"`); return; } const casesDirPaths = yield fast_glob_1.default([ `${testsCasesPath}/*` ], { onlyDirs: true, ignore: [`**/${tests_helpers_1.GENERATED_TESTS_DIR_NAME}/**`] }); const targetDirectory = path.join(testsCasesPath, tests_helpers_1.GENERATED_TESTS_DIR_NAME); yield fs.ensureDir(targetDirectory); tests_helpers_1.RegisterJSONStringifyHandlebarHelper(); for (const caseDirPath of casesDirPaths) { const { name } = path.parse(caseDirPath); const caseTemplatePath = tests_helpers_1.FixSep(path.join(caseDirPath, tests_helpers_1.CASE_TEMPLATE_FILE_NAME)); let templatePath; if (yield fs.pathExists(caseTemplatePath)) { templatePath = caseTemplatePath; } else { templatePath = defaultTemplatePath; } const testConfigPath = tests_helpers_1.FixSep(path.join(caseDirPath, tests_helpers_1.TESTS_CONFIG_FILE_NAME)); const testConfig = yield fs.readJSON(testConfigPath); const source = yield fs.readFile(templatePath, "utf8"); const template = handlebars.compile(source); const data = { "caseName": name, "projectDirectory": caseDirPath, "testConfig": testConfig }; const testDescribe = template(data); const targetFilePathName = path.join(targetDirectory, `${name}.test.ts`); yield fs.writeFile(targetFilePathName, testDescribe); } }); } exports.TestsGenerator = TestsGenerator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3RzLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQix5Q0FBaUM7QUFDakMseUNBQXlDO0FBRXpDLG1EQU95QjtBQUN6QiwyQ0FBd0M7QUFNeEMsd0JBQXFDLGNBQXNCOztRQUN2RCxNQUFNLG1CQUFtQixHQUFHLHNCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLDBDQUEwQixDQUFDLENBQUMsQ0FBQztRQUNoRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7WUFDNUMsZUFBTSxDQUFDLEtBQUssQ0FBQyxnRUFBZ0UsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1lBQ3JHLE1BQU0sQ0FBQztRQUNYLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLG1CQUFRLENBQ2hDO1lBQ0ksR0FBRyxjQUFjLElBQUk7U0FDeEIsRUFDRDtZQUNJLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFLENBQUMsTUFBTSx3Q0FBd0IsS0FBSyxDQUFDO1NBQ2hELENBQUMsQ0FBQztRQUVQLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLHdDQUF3QixDQUFDLENBQUM7UUFDNUUsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBDLG9EQUFvQyxFQUFFLENBQUM7UUFFdkMsR0FBRyxDQUFDLENBQUMsTUFBTSxXQUFXLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV6QyxNQUFNLGdCQUFnQixHQUFHLHNCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsdUNBQXVCLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksWUFBb0IsQ0FBQztZQUN6QixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQztZQUNwQyxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osWUFBWSxHQUFHLG1CQUFtQixDQUFDO1lBQ3ZDLENBQUM7WUFFRCxNQUFNLGNBQWMsR0FBRyxzQkFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHNDQUFzQixDQUFDLENBQUMsQ0FBQztZQUM5RSxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFrQixDQUFDO1lBRXRFLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxNQUFNLElBQUksR0FBRztnQkFDVCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsa0JBQWtCLEVBQUUsV0FBVztnQkFDL0IsWUFBWSxFQUFFLFVBQVU7YUFDM0IsQ0FBQztZQUNGLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVwQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQztZQUN6RSxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNMLENBQUM7Q0FBQTtBQS9DRCx3Q0ErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XHJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xyXG5pbXBvcnQgZmFzdEdsb2IgZnJvbSBcImZhc3QtZ2xvYlwiO1xyXG5pbXBvcnQgKiBhcyBoYW5kbGViYXJzIGZyb20gXCJoYW5kbGViYXJzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRml4U2VwLFxyXG4gICAgR0VORVJBVEVEX1RFU1RTX0RJUl9OQU1FLFxyXG4gICAgVEVTVFNfQ09ORklHX0ZJTEVfTkFNRSxcclxuICAgIERFRkFVTFRfVEVNUExBVEVfRklMRV9OQU1FLFxyXG4gICAgQ0FTRV9URU1QTEFURV9GSUxFX05BTUUsXHJcbiAgICBSZWdpc3RlckpTT05TdHJpbmdpZnlIYW5kbGViYXJIZWxwZXJcclxufSBmcm9tIFwiLi90ZXN0cy1oZWxwZXJzXCI7XHJcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuL3V0aWxzL2xvZ2dlclwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uIHtcclxuICAgIEVudHJ5RmlsZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gVGVzdHNHZW5lcmF0b3IodGVzdHNDYXNlc1BhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgZGVmYXVsdFRlbXBsYXRlUGF0aCA9IEZpeFNlcChwYXRoLmpvaW4odGVzdHNDYXNlc1BhdGgsIFwiLi5cIiwgREVGQVVMVF9URU1QTEFURV9GSUxFX05BTUUpKTtcclxuICAgIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhkZWZhdWx0VGVtcGxhdGVQYXRoKSkge1xyXG4gICAgICAgIExvZ2dlci5FcnJvcihgTm90IGZvdW5kIHBhY2thZ2UgZGVmYXVsdCB0ZW1wbGF0ZS4gRXhwZWN0ZWQgZmlsZSBsb2NhdGlvbjogXCIke2RlZmF1bHRUZW1wbGF0ZVBhdGh9XCJgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2FzZXNEaXJQYXRocyA9IGF3YWl0IGZhc3RHbG9iKFxyXG4gICAgICAgIFtcclxuICAgICAgICAgICAgYCR7dGVzdHNDYXNlc1BhdGh9LypgXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG9ubHlEaXJzOiB0cnVlLFxyXG4gICAgICAgICAgICBpZ25vcmU6IFtgKiovJHtHRU5FUkFURURfVEVTVFNfRElSX05BTUV9LyoqYF1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0YXJnZXREaXJlY3RvcnkgPSBwYXRoLmpvaW4odGVzdHNDYXNlc1BhdGgsIEdFTkVSQVRFRF9URVNUU19ESVJfTkFNRSk7XHJcbiAgICBhd2FpdCBmcy5lbnN1cmVEaXIodGFyZ2V0RGlyZWN0b3J5KTtcclxuXHJcbiAgICBSZWdpc3RlckpTT05TdHJpbmdpZnlIYW5kbGViYXJIZWxwZXIoKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNhc2VEaXJQYXRoIG9mIGNhc2VzRGlyUGF0aHMpIHtcclxuICAgICAgICBjb25zdCB7IG5hbWUgfSA9IHBhdGgucGFyc2UoY2FzZURpclBhdGgpO1xyXG5cclxuICAgICAgICBjb25zdCBjYXNlVGVtcGxhdGVQYXRoID0gRml4U2VwKHBhdGguam9pbihjYXNlRGlyUGF0aCwgQ0FTRV9URU1QTEFURV9GSUxFX05BTUUpKTtcclxuICAgICAgICBsZXQgdGVtcGxhdGVQYXRoOiBzdHJpbmc7XHJcbiAgICAgICAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMoY2FzZVRlbXBsYXRlUGF0aCkpIHtcclxuICAgICAgICAgICAgdGVtcGxhdGVQYXRoID0gY2FzZVRlbXBsYXRlUGF0aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZVBhdGggPSBkZWZhdWx0VGVtcGxhdGVQYXRoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGVzdENvbmZpZ1BhdGggPSBGaXhTZXAocGF0aC5qb2luKGNhc2VEaXJQYXRoLCBURVNUU19DT05GSUdfRklMRV9OQU1FKSk7XHJcbiAgICAgICAgY29uc3QgdGVzdENvbmZpZyA9IGF3YWl0IGZzLnJlYWRKU09OKHRlc3RDb25maWdQYXRoKSBhcyBDb25maWd1cmF0aW9uO1xyXG5cclxuICAgICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCBmcy5yZWFkRmlsZSh0ZW1wbGF0ZVBhdGgsIFwidXRmOFwiKTtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IGhhbmRsZWJhcnMuY29tcGlsZShzb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgIFwiY2FzZU5hbWVcIjogbmFtZSxcclxuICAgICAgICAgICAgXCJwcm9qZWN0RGlyZWN0b3J5XCI6IGNhc2VEaXJQYXRoLFxyXG4gICAgICAgICAgICBcInRlc3RDb25maWdcIjogdGVzdENvbmZpZ1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgdGVzdERlc2NyaWJlID0gdGVtcGxhdGUoZGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRhcmdldEZpbGVQYXRoTmFtZSA9IHBhdGguam9pbih0YXJnZXREaXJlY3RvcnksIGAke25hbWV9LnRlc3QudHNgKTtcclxuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUodGFyZ2V0RmlsZVBhdGhOYW1lLCB0ZXN0RGVzY3JpYmUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==