generator-easy
Version:
An EASY stack generator, Express Angular Stylus Yeoman
169 lines (153 loc) • 4.78 kB
JavaScript
/*global describe, before, it, beforeEach */
;
var fs = require('fs');
var assert = require('assert');
var path = require('path');
var util = require('util');
var generators = require('yeoman-generator');
var helpers = require('yeoman-generator').test;
describe('Angular generator', function () {
var angular;
beforeEach(function (done) {
var deps = [
'../../app',
'../../common',
'../../controller',
'../../main', [
helpers.createDummyGenerator(),
'karma:app'
]
];
helpers.testDirectory(path.join(__dirname, 'temp'), function (err) {
if (err) {
done(err);
}
angular = helpers.createGenerator('angular:app', deps);
angular.options['skip-install'] = true;
done();
});
});
it('should generate dotfiles', function (done) {
helpers.mockPrompt(angular, {
bootstrap: true,
compassBoostrap: true,
modules: []
});
angular.run({}, function () {
helpers.assertFiles(['.bowerrc', '.gitignore', '.editorconfig', '.jshintrc']);
done();
});
});
it('creates expected files', function (done) {
var expected = ['app/.htaccess',
'app/404.html',
'app/favicon.ico',
'app/robots.txt',
'app/styles/main.css',
'app/views/main.html',
['.bowerrc', /"directory": "app\/bower_components"/],
'Gruntfile.js',
'package.json',
['bower.json', /"name":\s+"temp"/],
'app/scripts/app.js',
'app/index.html',
'app/scripts/controllers/main.js',
'test/spec/controllers/main.js'
];
helpers.mockPrompt(angular, {
bootstrap: true,
compassBoostrap: true,
modules: []
});
angular.run({}, function() {
helpers.assertFiles(expected);
done();
});
});
it('creates coffeescript files', function (done) {
var expected = ['app/.htaccess',
'app/404.html',
'app/favicon.ico',
'app/robots.txt',
'app/styles/main.css',
'app/views/main.html',
['.bowerrc', /"directory": "app\/bower_components"/],
'Gruntfile.js',
'package.json',
['bower.json', /"name":\s+"temp"/],
'app/scripts/app.coffee',
'app/index.html',
'app/scripts/controllers/main.coffee',
'test/spec/controllers/main.coffee'
];
helpers.mockPrompt(angular, {
bootstrap: true,
compassBoostrap: true,
modules: []
});
angular.env.options.coffee = true;
angular.run([], function () {
helpers.assertFiles(expected);
done();
});
});
describe('Controller', function () {
it('should generate a new controller', function (done) {
var angularCtrl;
var deps = ['../../controller'];
angularCtrl = helpers.createGenerator('angular:controller', deps, ['foo']);
helpers.mockPrompt(angular, {
bootstrap: true,
compassBoostrap: true,
modules: []
});
angular.run([], function () {
angularCtrl.run([], function () {
helpers.assertFiles([
['app/scripts/controllers/foo.js', /controller\('FooCtrl'/],
['test/spec/controllers/foo.js', /describe\('Controller: FooCtrl'/]
]);
done();
});
});
});
});
describe('View', function () {
it('should generate a new view', function (done) {
var angularView;
var deps = ['../../view'];
angularView = helpers.createGenerator('angular:view', deps, ['foo']);
helpers.mockPrompt(angular, {
bootstrap: true,
compassBoostrap: true,
modules: []
});
angular.run([], function (){
angularView.run([], function () {
helpers.assertFiles([
['app/views/foo.html']
]);
done();
});
});
});
it('should generate a new view in subdirectories', function (done) {
var angularView;
var deps = ['../../view'];
angularView = helpers.createGenerator('angular:view', deps, ['foo/bar']);
helpers.mockPrompt(angular, {
bootstrap: true,
compassBoostrap: true,
modules: []
});
angular.run([], function (){
angularView.run([], function () {
helpers.assertFiles([
['app/views/foo/bar.html']
]);
done();
});
});
});
});
});