generator-init
Version:
A generator for INIT.
244 lines (180 loc) • 4.89 kB
JavaScript
/*global describe, beforeEach, it*/
;
var path = require('path');
var helpers = require('yeoman-generator').test;
var assert = require('assert');
var expected = [
// Project files
'.jshintrc',
'.editorconfig',
'.htaccess',
// Bower
'.bowerrc',
'bower.json',
// Pkg
'package.json',
// Git
'.gitattributes',
'.gitignore',
// Travis
'.travis.yml',
// Robots
'robots.txt',
// HTML
'templates/header.html',
'templates/index.html',
'templates/footer.html',
'pages.json',
// Karma
'karma.conf.js',
// Humans
'humans.txt',
// Grunt
'Gruntfile.js',
'tasks/config.js',
'tasks/options/clean.js',
'tasks/options/concat.js',
'tasks/options/connect.js',
'tasks/options/copy.js',
'tasks/options/imagemin.js',
'tasks/options/jshint.js',
'tasks/options/karma.js',
'tasks/options/modernizr.js',
'tasks/options/replace.js',
'tasks/options/requirejs.js',
'tasks/options/sass.js',
'tasks/options/watch.js',
// Javascript
'js/modules/module.js',
'js/plugins/console.js',
'js/config.js',
'js/main.js',
// Authors
'AUTHORS',
// Ico
'apple-touch-icon-precomposed.png',
'favicon.ico',
// Contribuiting
'CONTRIBUTING.md',
// Cossdomain
'crossdomain.xml',
// 404
'404.html',
// Test
'test/specs/example.spec.js',
'test/spec.js',
'test/test-main.js'
];
// ---- Main generator
describe('main generator', function () {
beforeEach(function (done) {
helpers.testDirectory(path.join(__dirname, 'temp'), function (err) {
if (err) {
return done(err);
}
this.app = helpers.createGenerator('init:app', [
'../../app'
]);
done();
}.bind(this));
});
it('the generator can be required without throwing', function () {
// not testing the actual run of generators yet
var app = require('../app');
assert(app !== undefined);
});
it('creates expected files for SCSS preprocessor', function (done) {
helpers.mockPrompt(this.app, {
'cssPreprocessor': 'Compass'
});
var expectedSCSS = [
'scss/main.scss',
'scss/elements/_typography.scss',
'scss/helpers/_helpers.scss',
'scss/helpers/_variables.scss',
'scss/media/_print.scss',
'scss/modules/_box.scss',
'scss/page/_base.scss',
'scss/page/_footer.scss',
'scss/page/_header.scss',
'scss/page/_main.scss'
];
expectedSCSS.concat(expectedSCSS, expected);
this.app.options['skip-install'] = true;
this.app.run({}, function () {
helpers.assertFiles(expectedSCSS);
done();
});
});
it('creates expected files for LESS preprocessor', function (done) {
helpers.mockPrompt(this.app, {
'cssPreprocessor': 'LESS',
'name': 'John Doe'
});
var expectedLESS = [
'less/main.less',
'less/elements/_typography.less',
'less/helpers/_helpers.less',
'less/helpers/_variables.less',
'less/media/_print.less',
'less/modules/_box.less',
'less/page/_base.less',
'less/page/_footer.less',
'less/page/_header.less',
'less/page/_main.less'
];
expectedLESS.concat(expectedLESS, expected);
this.app.options['skip-install'] = true;
this.app.run({}, function () {
helpers.assertFiles(expectedLESS);
done();
});
});
});
// ---- Page sub-generator
describe('page sub-generator', function () {
it('creates expected files for the page sub-generator', function (done) {
this.app = helpers.createGenerator('init:page', ['../../page'], ['test-page']);
var expected = [
'templates/test-page.html'
];
this.app.options['skip-install'] = true;
this.app.run({}, function () {
helpers.assertFiles(expected);
done();
});
});
});
// ---- Module sub-generator
describe('module sub-generator', function () {
it('creates expected files for the module sub-generator', function (done) {
var deps = ['../../module'];
var args = ['test'];
var opts = { 'force': true };
this.app = helpers.createGenerator('init:module', deps, args, opts);
var expected = [
'js/modules/test.js',
'test/specs/test.spec.js',
'test/spec.js'
];
this.app.options['skip-install'] = true;
this.app.run({}, function () {
helpers.assertFiles(expected);
done();
});
});
});
// ---- Jqueryplugin sub-generator
describe('jqueryplugin sub-generator', function () {
it('creates expected files for the jqueryplugin sub-generator', function (done) {
this.app = helpers.createGenerator('init:jqueryplugin', ['../../jqueryplugin'], ['test']);
var expected = [
'js/plugins/jquery.test.js'
];
this.app.options['skip-install'] = true;
this.app.run({}, function () {
helpers.assertFiles(expected);
done();
});
});
});