Skip to content

Commit

Permalink
chore(tests): refactor subgens tests
Browse files Browse the repository at this point in the history
Split up test for subgenerators in their own files
  • Loading branch information
SBoudrias authored and eddiemonge committed Feb 17, 2016
1 parent 7436702 commit ccc75da
Show file tree
Hide file tree
Showing 14 changed files with 364 additions and 210 deletions.
1 change: 0 additions & 1 deletion test/app-with-appname.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');


describe('angular:app appName', function () {
beforeEach(function (done) {
helpers
Expand Down
83 changes: 83 additions & 0 deletions test/app-with-apppath.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
'use strict';

var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');
var _ = require('underscore.string');

describe('Angular generator appPath option', function () {
var appPath = 'customAppPath';
var expected = [
appPath + '/404.html',
appPath + '/favicon.ico',
appPath + '/robots.txt',
appPath + '/styles/main.scss',
appPath + '/views/main.html',
appPath + '/index.html',
'.bowerrc',
'.editorconfig',
'.gitignore',
'.jshintrc',
'Gruntfile.js',
'package.json',
'bower.json'
];

beforeEach(function () {
this.angular = helpers
.run(require.resolve('../app'))
.withGenerators([
require.resolve('../common'),
require.resolve('../controller'),
require.resolve('../main'),
[helpers.createDummyGenerator(), 'karma:app']
])
.withOptions({
'appPath': appPath,
'skip-welcome-message': true,
'skip-message': true
})
.withArguments(['upperCaseBug'])
.withPrompts({
compass: true,
bootstrap: true,
compassBootstrap: true,
modules: []
});
});

describe('default settings', function () {
beforeEach(function (done) {
this.angular.on('end', done);
});

it('generates base files inside the appPath', function () {
assert.file(expected);
});

it('creates JS files in appPath', function () {
assert.file([
'.jscsrc',
appPath + '/scripts/app.js',
appPath + '/scripts/controllers/main.js',
'test/spec/controllers/main.js'
]);
});
});

describe('--coffee', function () {
beforeEach(function (done) {
this.angular.withOptions({
coffee: true
}).on('end', done);
});

it('creates CoffeeScript files', function () {
assert.file([].concat(expected, [
appPath + '/scripts/app.coffee',
appPath + '/scripts/controllers/main.coffee',
'test/spec/controllers/main.coffee'
]));
});
});
});
22 changes: 22 additions & 0 deletions test/constant.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';
var fs = require('fs');
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

describe('angular:constant', function () {
beforeEach(function (done) {
helpers
.run(require.resolve('../constant'))
.withArguments('foo')
.on('end', done);
});

it('generates a new constant', function () {
assert.file('test/spec/services/foo.js');
assert.fileContent(
path.join('app/scripts/services/foo.js'),
/constant\('foo'/
);
});
});
28 changes: 28 additions & 0 deletions test/controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
'use strict';
var fs = require('fs');
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

describe('angular:controller', function () {
beforeEach(function (done) {
helpers
.run(require.resolve('../controller'))
.withArguments('foo')
.inTmpDir(function (dir) {
fs.writeFileSync(
path.join(dir, 'bower.json'),
'{"appPath": "app"}'
);
})
.on('end', done);
});

it('generates a new controller', function () {
assert.file('test/spec/controllers/foo.js');
assert.fileContent(
path.join('app/scripts/controllers/foo.js'),
/controller\('FooCtrl'/
);
});
});
28 changes: 28 additions & 0 deletions test/directive.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
'use strict';
var fs = require('fs');
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

describe('angular:directive', function () {
beforeEach(function (done) {
helpers
.run(require.resolve('../directive'))
.withArguments('foo')
.inTmpDir(function (dir) {
fs.writeFileSync(
path.join(dir, 'bower.json'),
'{"appPath": "app"}'
);
})
.on('end', done);
});

it('generates a new directive', function () {
assert.file('test/spec/directives/foo.js');
assert.fileContent(
path.join('app/scripts/directives/foo.js'),
/directive\('foo'/
);
});
});
22 changes: 22 additions & 0 deletions test/factory.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';
var fs = require('fs');
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

describe('angular:factory', function () {
beforeEach(function (done) {
helpers
.run(require.resolve('../factory'))
.withArguments('foo')
.on('end', done);
});

it('generates a new factory', function () {
assert.file('test/spec/services/foo.js');
assert.fileContent(
path.join('app/scripts/services/foo.js'),
/factory\('foo'/
);
});
});
28 changes: 28 additions & 0 deletions test/filter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
'use strict';
var fs = require('fs');
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

describe('angular:filter', function () {
beforeEach(function (done) {
helpers
.run(require.resolve('../filter'))
.withArguments('foo')
.inTmpDir(function (dir) {
fs.writeFileSync(
path.join(dir, 'bower.json'),
'{"appPath": "app"}'
);
})
.on('end', done);
});

it('generates a new filter', function () {
assert.file('test/spec/filters/foo.js');
assert.fileContent(
path.join('app/scripts/filters/foo.js'),
/filter\('foo'/
);
});
});
22 changes: 22 additions & 0 deletions test/provider.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';
var fs = require('fs');
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

describe('angular:provider', function () {
beforeEach(function (done) {
helpers
.run(require.resolve('../provider'))
.withArguments('foo')
.on('end', done);
});

it('generates a new provider', function () {
assert.file('test/spec/services/foo.js');
assert.fileContent(
path.join('app/scripts/services/foo.js'),
/provider\('foo'/
);
});
});
57 changes: 19 additions & 38 deletions test/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,30 @@
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

function generateFullProject(cb) {
helpers.run(require.resolve('../app'))
.withGenerators([
require.resolve('../common'),
require.resolve('../controller'),
require.resolve('../main'),
require.resolve('../route'),
require.resolve('../view'),
[ helpers.createDummyGenerator(), 'karma:app']
])
.withOptions({
'appPath': 'app',
'skip-welcome-message': true,
'skip-message': true
})
.withPrompts({
compass: true,
bootstrap: true,
compassBootstrap: true,
modules: ['routeModule']
})
.on('end', cb);
}
var generateFullProject = require('./utils').generateFullProject;

describe('angular:route', function () {
beforeEach(function (done) {
generateFullProject(function () {
this.angularRoute = helpers.run(require.resolve('../route'))
.withGenerators([
require.resolve('../controller'),
require.resolve('../view')
])
.withOptions({
appPath: 'app'
})
.withArguments(['simpleroute']);
generateFullProject()
.withPrompts({
modules: ['routeModule']
})
.on('end', function () {
this.angularRoute = helpers.run(require.resolve('../route'))
.withGenerators([
require.resolve('../controller'),
require.resolve('../view')
])
.withOptions({
appPath: 'app'
})
.withArguments(['simpleroute']);

// Hack to not clear the directory
this.angularRoute.inDirSet = true;
// Hack to not clear the directory
this.angularRoute.inDirSet = true;

done();
}.bind(this));
done();
}.bind(this));
});

it('generates default route items', function (done) {
Expand Down
28 changes: 28 additions & 0 deletions test/service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
'use strict';
var fs = require('fs');
var path = require('path');
var helpers = require('yeoman-test');
var assert = require('yeoman-assert');

describe('angular:service', function () {
beforeEach(function (done) {
helpers
.run(require.resolve('../service'))
.withArguments('foo')
.inTmpDir(function (dir) {
fs.writeFileSync(
path.join(dir, 'bower.json'),
'{"appPath": "app"}'
);
})
.on('end', done);
});

it('generates a new service', function () {
assert.file('test/spec/services/foo.js');
assert.fileContent(
path.join('app/scripts/services/foo.js'),
/service\('foo'/
);
});
});
Loading

0 comments on commit ccc75da

Please sign in to comment.