UNPKG

jest-test-gen

Version:

Generator of jest unit test with all imports mocked and tests stub for every class and function exported

48 lines (47 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.run = void 0; const fs_1 = require("fs"); const path = require("path"); const os = require("os"); const ts = require("typescript"); const parse_source_file_1 = require("./parse-source-file"); const generate_unit_test_1 = require("./generate-unit-test"); function run(args, opts) { if (!args._.length) { // tslint:disable-next-line:no-console console.error('missing path argument'); console.error('USAGE: jest-test-gen <path-to-file> --outputDir ./my/custom/output --fileSuffix .generated.test'); process.exit(1); } const inputPath = args._[0]; const inputFileExtension = path.extname(inputPath); const inputFilenameNoExt = path.basename(inputPath, inputFileExtension); let finalOutputDir = path.dirname(inputPath); if (args.outputDir) { const homeDir = os.homedir(); const resolvedConfigOutputDir = args.outputDir.replace(/^~(?=$|\/|\\)/, homeDir); if (path.isAbsolute(resolvedConfigOutputDir)) { finalOutputDir = resolvedConfigOutputDir; } else { finalOutputDir = path.resolve(finalOutputDir, args.outputDir); } } let fileSuffix = '.generated.test'; if (args.fileSuffix) { fileSuffix = args.fileSuffix; } const specFileName = path.join(finalOutputDir, `${inputFilenameNoExt}${fileSuffix}${inputFileExtension}`); const sourceCode = (0, fs_1.readFileSync)(inputPath).toString(); const sourceFile = ts.createSourceFile(inputPath, sourceCode, ts.ScriptTarget.Latest, true); const input = (0, parse_source_file_1.parseSourceFile)(sourceFile); const output = (0, generate_unit_test_1.generateUnitTest)(inputPath, sourceCode, input); if (opts === null || opts === void 0 ? void 0 : opts.returnOutput) { return output; } console.log('Writing generated test file: ', specFileName); (0, fs_1.writeFileSync)(specFileName, output); return specFileName; } exports.run = run;