From cd4dcf0dc9a48ee1d3d5b41eb2c9c8dbcc751809 Mon Sep 17 00:00:00 2001 From: Mike Brocchi Date: Tue, 19 Apr 2016 20:39:08 -0400 Subject: [PATCH] chore: force component and route names to have dashes --- addon/ng2/blueprints/component/index.js | 16 +++++++++++++++ tests/acceptance/generate-component.spec.js | 22 +++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/addon/ng2/blueprints/component/index.js b/addon/ng2/blueprints/component/index.js index 60e3c200de9b..8c4340e5170e 100644 --- a/addon/ng2/blueprints/component/index.js +++ b/addon/ng2/blueprints/component/index.js @@ -4,6 +4,17 @@ var dynamicPathParser = require('../../utilities/dynamic-path-parser'); var addBarrelRegistration = require('../../utilities/barrel-management'); var getFiles = Blueprint.prototype.files; +function validateName(name) { + if (name.indexOf('-') >= 0) { + return true; + } else if (name === name.toUpperCase()) { + return false; + } else if (name === name.toLowerCase()) { + return false; + } + return true; +} + module.exports = { description: '', @@ -16,6 +27,11 @@ module.exports = { var parsedPath = dynamicPathParser(this.project, entityName); this.dynamicPath = parsedPath; + + if (!validateName(parsedPath.name)) { + throw 'Names must contain a dash either include a dash or multiCase name. (i.e. multiCase -> multi-case)'; + } + return parsedPath.name; }, diff --git a/tests/acceptance/generate-component.spec.js b/tests/acceptance/generate-component.spec.js index 04574cd9070c..204f17a0eb9a 100644 --- a/tests/acceptance/generate-component.spec.js +++ b/tests/acceptance/generate-component.spec.js @@ -137,4 +137,26 @@ describe('Acceptance: ng generate component', function () { expect(existsSync(testPath)).to.equal(false); }); }); + + it('ng generate component mycomp will fail: no dashes in name', () => { + return ng(['generate', 'component', 'mycomp']) + .then((exitCode) => { + expect(exitCode).to.equal(1); + }); + }); + + it('ng generate component MYCOMP will fail: no dashes in name', () => { + return ng(['generate', 'component', 'MYCOMP']) + .then((exitCode) => { + expect(exitCode).to.equal(1); + }); + }); + + it('ng generate component myComp will succeed', () => { + return ng(['generate', 'component', 'myComp']) + .then(() => { + var testPath = path.join(root, 'tmp', 'foo', 'src', 'client', 'app', 'my-comp', 'my-comp.component.ts'); + expect(existsSync(testPath)).to.equal(true); + }); + }); });