From cc0172086f1463b72afe04dd5c7c81404910b95c Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 17 May 2016 08:02:17 +0200 Subject: [PATCH] Chore: Added new version of dependencies --- CHANGELOG.md | 4 + package.json | 2 +- test/generators/app/indexTest.js | 226 +++++++++++++++++-------------- 3 files changed, 130 insertions(+), 102 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cbe93b..60a1d24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # generator-react-webpack - Changelog +## 3.3.1 + +1. Added new version of yeoman-generator, adjusted unit tests + ## 3.3.0 1. Added new yeoman key "generatedWithVersion". Will be used for backwards compatibility of new major releases. diff --git a/package.json b/package.json index 39a497d..ce6526b 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "dependencies": { "react-webpack-template": "^1.0.0", "underscore.string": "^3.2.2", - "yeoman-generator": "^0.22.0", + "yeoman-generator": "^0.23.0", "yeoman-welcome": "^1.0.1", "esprima": "^2.7.0", "esprima-walk": "^0.1.0", diff --git a/test/generators/app/indexTest.js b/test/generators/app/indexTest.js index d7a9ef9..9bdefc0 100644 --- a/test/generators/app/indexTest.js +++ b/test/generators/app/indexTest.js @@ -6,27 +6,23 @@ let helpers = require('yeoman-test'); // Default globals, used in all tests const defaultPrompts = require('../../../generators/app/prompts.js'); -let generator; const generatorBase = path.join(__dirname, '../../../generators/app'); /** * Global before load function. Run in the before callbacks - * @param {Object} prompts List of prompts to use - * @param {Function} done Done callback + * @param {Object} prompts List of prompts to use + * @return {Promise} */ -const beforeLoad = (prompts, done) => { +const beforeLoad = (prompts) => { - helpers.run(generatorBase) + return helpers.run(generatorBase) .inTmpDir() .withOptions({ 'skip-welcome-message': true, 'skip-install': true }) .withPrompts(prompts) - .on('ready', (instance) => { - generator = instance; - }) - .on('end', done); + .toPromise(); }; describe('react-webpack:app', () => { @@ -36,22 +32,24 @@ describe('react-webpack:app', () => { prompts[p.name] = p.default; } - before((done) => { - beforeLoad(prompts, done); - }); - describe('#config', () => { it('should set the generatedWith key to the current generator major version', () => { - expect(generator.config.get('generatedWithVersion')).to.equal(3); + beforeLoad(prompts).then((generator) => { + expect(generator.config.get('generatedWithVersion')).to.equal(3); + }); }); it('should use "css" as default style language', () => { - expect(generator.config.get('style')).to.equal('css'); + beforeLoad(prompts).then((generator) => { + expect(generator.config.get('style')).to.equal('css'); + }); }); it('should not enable "PostCSS" by default', () => { - expect(generator.config.get('postcss')).to.equal(false); + beforeLoad(prompts).then((generator) => { + expect(generator.config.get('postcss')).to.equal(false); + }); }); }); @@ -59,58 +57,68 @@ describe('react-webpack:app', () => { it('should generate dot files', () => { - assert.file([ - '.babelrc', - '.editorconfig', - '.eslintrc', - '.gitignore', - '.yo-rc.json' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + '.babelrc', + '.editorconfig', + '.eslintrc', + '.gitignore', + '.yo-rc.json' + ]); + }); }); it('should generate project configuration files', () => { - assert.file([ - 'package.json' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'package.json' + ]); + }); }); it('should generate the webpack configuration', () => { - assert.file([ - 'cfg/base.js', - 'cfg/defaults.js', - 'cfg/dev.js', - 'cfg/dist.js', - 'cfg/test.js', - 'server.js', - 'webpack.config.js' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'cfg/base.js', + 'cfg/defaults.js', + 'cfg/dev.js', + 'cfg/dist.js', + 'cfg/test.js', + 'server.js', + 'webpack.config.js' + ]); + }); }); it('should generate required source files', () => { - assert.file([ - 'src/actions/README.md', - 'src/index.js', - 'src/components/Main.js', - 'src/favicon.ico', - 'src/images/yeoman.png', - 'src/index.html', - 'src/sources/README.md', - 'src/stores/README.md', - 'src/styles/App.css' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'src/actions/README.md', + 'src/index.js', + 'src/components/Main.js', + 'src/favicon.ico', + 'src/images/yeoman.png', + 'src/index.html', + 'src/sources/README.md', + 'src/stores/README.md', + 'src/styles/App.css' + ]); + }); }); it('should generate test configuration and basic tests', () => { - assert.file([ - 'karma.conf.js', - 'test/components/MainTest.js', - 'test/helpers/shallowRenderHelper.js', - 'test/loadtests.js' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'karma.conf.js', + 'test/components/MainTest.js', + 'test/helpers/shallowRenderHelper.js', + 'test/loadtests.js' + ]); + }); }); }); }); @@ -124,22 +132,24 @@ describe('react-webpack:app with PostCSS support', () => { prompts.postcss = true; - before((done) => { - beforeLoad(prompts, done); - }); - describe('#config', () => { it('should set the generatedWith key to the current generator major version', () => { - expect(generator.config.get('generatedWithVersion')).to.equal(3); + beforeLoad(prompts).then((generator) => { + expect(generator.config.get('generatedWithVersion')).to.equal(3); + }); }); it('should use "css" as default style language', () => { - expect(generator.config.get('style')).to.equal('css'); + beforeLoad(prompts).then((generator) => { + expect(generator.config.get('style')).to.equal('css'); + }); }); it('should enable "PostCSS"', () => { - expect(generator.config.get('postcss')).to.equal(true); + beforeLoad(prompts).then((generator) => { + expect(generator.config.get('postcss')).to.equal(true); + }); }); }); @@ -147,72 +157,86 @@ describe('react-webpack:app with PostCSS support', () => { it('should generate dot files', () => { - assert.file([ - '.babelrc', - '.editorconfig', - '.eslintrc', - '.gitignore', - '.yo-rc.json' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + '.babelrc', + '.editorconfig', + '.eslintrc', + '.gitignore', + '.yo-rc.json' + ]); + }); }); it('should generate project configuration files', () => { - assert.file([ - 'package.json' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'package.json' + ]); + }); }); it('should generate the webpack configuration', () => { - assert.file([ - 'cfg/base.js', - 'cfg/defaults.js', - 'cfg/dev.js', - 'cfg/dist.js', - 'cfg/test.js', - 'server.js', - 'webpack.config.js' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'cfg/base.js', + 'cfg/defaults.js', + 'cfg/dev.js', + 'cfg/dist.js', + 'cfg/test.js', + 'server.js', + 'webpack.config.js' + ]); + }); }); it('should insert the postcss loader into the style pipes', () => { - assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader\''); - assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded&indentedSyntax\''); - assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded\''); - assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!less-loader\''); - assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!stylus-loader\''); + beforeLoad(prompts).then(() => { + assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader\''); + assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded&indentedSyntax\''); + assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded\''); + assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!less-loader\''); + assert.fileContent('cfg/defaults.js', 'loader: \'style-loader!css-loader!postcss-loader!stylus-loader\''); + }); }); it('should append the postcss function to the base config', () => { - assert.fileContent('cfg/defaults.js', ',\n postcss: function () {\n return [];\n }'); + beforeLoad(prompts).then(() => { + assert.fileContent('cfg/defaults.js', ',\n postcss: function () {\n return [];\n }'); + }); }); it('should generate required source files', () => { - assert.file([ - 'src/actions/README.md', - 'src/index.js', - 'src/components/Main.js', - 'src/favicon.ico', - 'src/images/yeoman.png', - 'src/index.html', - 'src/sources/README.md', - 'src/stores/README.md', - 'src/styles/App.css' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'src/actions/README.md', + 'src/index.js', + 'src/components/Main.js', + 'src/favicon.ico', + 'src/images/yeoman.png', + 'src/index.html', + 'src/sources/README.md', + 'src/stores/README.md', + 'src/styles/App.css' + ]); + }); }); it('should generate test configuration and basic tests', () => { - assert.file([ - 'karma.conf.js', - 'test/components/MainTest.js', - 'test/helpers/shallowRenderHelper.js', - 'test/loadtests.js' - ]); + beforeLoad(prompts).then(() => { + assert.file([ + 'karma.conf.js', + 'test/components/MainTest.js', + 'test/helpers/shallowRenderHelper.js', + 'test/loadtests.js' + ]); + }); }); }); });