mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-17 19:13:34 +08:00
187 lines
7.0 KiB
JavaScript
187 lines
7.0 KiB
JavaScript
'use strict';
|
|
|
|
var fs = require('fs-extra');
|
|
var ng = require('../helpers/ng');
|
|
var existsSync = require('exists-sync');
|
|
var expect = require('chai').expect;
|
|
var path = require('path');
|
|
var tmp = require('../helpers/tmp');
|
|
var root = process.cwd();
|
|
var conf = require('ember-cli/tests/helpers/conf');
|
|
var Promise = require('ember-cli/lib/ext/promise');
|
|
var SilentError = require('silent-error');
|
|
const denodeify = require('denodeify');
|
|
|
|
const readFile = denodeify(fs.readFile);
|
|
|
|
|
|
describe('Acceptance: ng generate component', function () {
|
|
before(conf.setup);
|
|
|
|
after(conf.restore);
|
|
|
|
beforeEach(function () {
|
|
this.timeout(10000);
|
|
return tmp.setup('./tmp').then(function () {
|
|
process.chdir('./tmp');
|
|
}).then(function () {
|
|
return ng(['new', 'foo', '--skip-npm', '--skip-bower']);
|
|
});
|
|
});
|
|
|
|
afterEach(function () {
|
|
this.timeout(10000);
|
|
return tmp.teardown('./tmp');
|
|
});
|
|
|
|
it('my-comp', function () {
|
|
const testPath = path.join(root, 'tmp/foo/src/app/my-comp/my-comp.component.ts');
|
|
const appModule = path.join(root, 'tmp/foo/src/app/app.module.ts');
|
|
return ng(['generate', 'component', 'my-comp'])
|
|
.then(() => expect(existsSync(testPath)).to.equal(true))
|
|
.then(() => readFile(appModule, 'utf-8'))
|
|
.then(content => {
|
|
// Expect that the app.module contains a reference to my-comp and its import.
|
|
expect(content).matches(/import.*MyCompComponent.*from '.\/my-comp\/my-comp.component';/);
|
|
expect(content).matches(/declarations:\s*\[[^\]]+?,\n\s+MyCompComponent\n/m);
|
|
});
|
|
});
|
|
|
|
it('test' + path.sep + 'my-comp', function () {
|
|
fs.mkdirsSync(path.join(root, 'tmp', 'foo', 'src', 'app', 'test'));
|
|
return ng(['generate', 'component', 'test' + path.sep + 'my-comp']).then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'test', 'my-comp', 'my-comp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
});
|
|
});
|
|
|
|
it('test' + path.sep + '..' + path.sep + 'my-comp', function () {
|
|
return ng(['generate', 'component', 'test' + path.sep + '..' + path.sep + 'my-comp'])
|
|
.then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'my-comp', 'my-comp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
});
|
|
});
|
|
|
|
it('my-comp from a child dir', () => {
|
|
fs.mkdirsSync(path.join(root, 'tmp', 'foo', 'src', 'app', '1'));
|
|
return new Promise(function (resolve) {
|
|
process.chdir('./src');
|
|
resolve();
|
|
})
|
|
.then(() => process.chdir('./app'))
|
|
.then(() => process.chdir('./1'))
|
|
.then(() => {
|
|
return ng(['generate', 'component', 'my-comp'])
|
|
})
|
|
.then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', '1', 'my-comp', 'my-comp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
});
|
|
});
|
|
|
|
it('child-dir' + path.sep + 'my-comp from a child dir', () => {
|
|
fs.mkdirsSync(path.join(root, 'tmp', 'foo', 'src', 'app', '1', 'child-dir'));
|
|
return new Promise(function (resolve) {
|
|
process.chdir('./src');
|
|
resolve();
|
|
})
|
|
.then(() => process.chdir('./app'))
|
|
.then(() => process.chdir('./1'))
|
|
.then(() => {
|
|
return ng(['generate', 'component', 'child-dir' + path.sep + 'my-comp'])
|
|
})
|
|
.then(() => {
|
|
var testPath = path.join(
|
|
root, 'tmp', 'foo', 'src', 'app', '1', 'child-dir', 'my-comp', 'my-comp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
});
|
|
});
|
|
|
|
it('child-dir' + path.sep + '..' + path.sep + 'my-comp from a child dir', () => {
|
|
fs.mkdirsSync(path.join(root, 'tmp', 'foo', 'src', 'app', '1'));
|
|
return Promise.resolve()
|
|
.then(() => process.chdir(path.normalize('./src/app/1')))
|
|
.then(() => {
|
|
return ng([
|
|
'generate', 'component', 'child-dir' + path.sep + '..' + path.sep + 'my-comp'
|
|
])
|
|
})
|
|
.then(() => {
|
|
var testPath =
|
|
path.join(root, 'tmp', 'foo', 'src', 'app', '1', 'my-comp', 'my-comp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
});
|
|
});
|
|
|
|
it(path.sep + 'my-comp from a child dir, gens under ' + path.join('src', 'app'), () => {
|
|
fs.mkdirsSync(path.join(root, 'tmp', 'foo', 'src', 'app', '1'));
|
|
return Promise.resolve()
|
|
.then(() => process.chdir(path.normalize('./src/app/1')))
|
|
.then(() => {
|
|
return ng(['generate', 'component', path.sep + 'my-comp'])
|
|
})
|
|
.then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'my-comp', 'my-comp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
});
|
|
});
|
|
|
|
it('..' + path.sep + 'my-comp from root dir will fail', () => {
|
|
return ng(['generate', 'component', '..' + path.sep + 'my-comp']).then(() => {
|
|
throw new SilentError(`ng generate component ..${path.sep}my-comp from root dir should fail.`);
|
|
}, (err) => {
|
|
expect(err).to.equal(`Invalid path: "..${path.sep}my-comp" cannot be above the "src${path.sep}app" directory`);
|
|
});
|
|
});
|
|
|
|
it('mycomp will prefix selector', () => {
|
|
return ng(['generate', 'component', 'mycomp'])
|
|
.then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'mycomp', 'mycomp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
var contents = fs.readFileSync(testPath, 'utf8');
|
|
expect(contents.indexOf('selector: \'app-mycomp\'') === -1).to.equal(false);
|
|
});
|
|
});
|
|
|
|
it('mycomp --no-prefix will not prefix selector', () => {
|
|
return ng(['generate', 'component', 'mycomp', '--no-prefix'])
|
|
.then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'mycomp', 'mycomp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
var contents = fs.readFileSync(testPath, 'utf8');
|
|
expect(contents.indexOf('selector: \'mycomp\'') === -1).to.equal(false);
|
|
});
|
|
});
|
|
|
|
it('myComp will succeed', () => {
|
|
return ng(['generate', 'component', 'myComp'])
|
|
.then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'my-comp', 'my-comp.component.ts');
|
|
expect(existsSync(testPath)).to.equal(true);
|
|
});
|
|
});
|
|
|
|
it('my-comp --inline-template', function () {
|
|
return ng(['generate', 'component', 'my-comp', '--inline-template']).then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'my-comp', 'my-comp.component.html');
|
|
expect(existsSync(testPath)).to.equal(false);
|
|
});
|
|
});
|
|
|
|
it('my-comp --inline-style', function () {
|
|
return ng(['generate', 'component', 'my-comp', '--inline-style']).then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'my-comp', 'my-comp.component.css');
|
|
expect(existsSync(testPath)).to.equal(false);
|
|
});
|
|
});
|
|
|
|
it('my-comp --no-spec', function() {
|
|
return ng(['generate', 'component', 'my-comp', '--no-spec']).then(() => {
|
|
var testPath = path.join(root, 'tmp', 'foo', 'src', 'app', 'my-comp', 'my-comp.component.spec.ts');
|
|
expect(existsSync(testPath)).to.equal(false);
|
|
});
|
|
});
|
|
});
|