@nx-plugins/testing-library
Version:
The Nx Plugin for Testing Library that contains executors and generators for allowing your workspace to use powerful Testing Library testing capabilities.
71 lines • 3.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.vueTestComponentSchematic = exports.vueTestComponentGenerator = void 0;
const tslib_1 = require("tslib");
const devkit_1 = require("@nrwl/devkit");
const run_tasks_in_serial_1 = require("@nrwl/workspace/src/utilities/run-tasks-in-serial");
const create_files_1 = require("./lib/create-files");
const generator_1 = require("../init/generator");
function vueTestComponentGenerator(host, schema) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const options = yield normalizeOptions(host, schema);
const initTask = yield (0, generator_1.default)(host, Object.assign(Object.assign({}, options), { preset: "vue" }));
(0, create_files_1.createFiles)(host, options);
yield (0, devkit_1.formatFiles)(host);
return (0, run_tasks_in_serial_1.runTasksInSerial)(initTask);
});
}
exports.vueTestComponentGenerator = vueTestComponentGenerator;
function normalizeOptions(host, options) {
var _a;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
assertValidOptions(options);
const { className, fileName } = (0, devkit_1.names)(options.name);
const componentFileName = (_a = options.fileName) !== null && _a !== void 0 ? _a : (options.pascalCaseFiles ? className : fileName);
const project = (0, devkit_1.getProjects)(host).get(options.project);
if (!project) {
devkit_1.logger.error(`Cannot find the ${options.project} project. Please double check the project name.`);
throw new Error();
}
const { sourceRoot: projectSourceRoot } = project;
const directory = yield getDirectory(host, options);
return Object.assign(Object.assign({}, options), { directory,
className, fileName: componentFileName, projectSourceRoot });
});
}
function getDirectory(host, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const genNames = (0, devkit_1.names)(options.name);
const fileName = options.pascalCaseDirectory === true
? genNames.className
: genNames.fileName;
const workspace = (0, devkit_1.getProjects)(host);
let baseDir;
if (options.directory) {
baseDir = options.directory;
}
else {
baseDir =
workspace.get(options.project).projectType === 'application'
? 'app'
: 'lib';
}
return options.flat ? baseDir : (0, devkit_1.joinPathFragments)(baseDir, fileName);
});
}
function assertValidOptions(options) {
const slashes = ['/', '\\'];
slashes.forEach((s) => {
if (options.name.indexOf(s) !== -1) {
const [name, ...rest] = options.name.split(s).reverse();
let suggestion = rest.map((x) => x.toLowerCase()).join(s);
if (options.directory) {
suggestion = `${options.directory}${s}${suggestion}`;
}
throw new Error(`Found "${s}" in the component name. Did you mean to use the --directory option (e.g. \`nx g @nx-plugins/testing-library:react-test-component ${name} --directory ${suggestion}\`)?`);
}
});
}
exports.default = vueTestComponentGenerator;
exports.vueTestComponentSchematic = (0, devkit_1.convertNxGenerator)(vueTestComponentGenerator);
//# sourceMappingURL=generator.js.map