From 4596462f295193815b189d3a50ecea17a14639ab Mon Sep 17 00:00:00 2001 From: stylesuxx Date: Sun, 22 Nov 2015 03:45:27 +0100 Subject: [PATCH] Test: Check that the base config is rewritten if PostCSS is enabled - #163 --- test/generators/app/indexTest.js | 110 +++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/test/generators/app/indexTest.js b/test/generators/app/indexTest.js index 2547dc5..923bbf9 100644 --- a/test/generators/app/indexTest.js +++ b/test/generators/app/indexTest.js @@ -100,3 +100,113 @@ describe('react-webpack:app', () => { }); }); }); + +describe('react-webpack:app non-default-prompts', () => { + + let defaultPrompts = require('../../../generators/app/prompts.js'); + let prompts = {}; + for(let p of defaultPrompts) { + prompts[p.name] = p.default; + } + + prompts.postcss = true; + + let generator; + let generatorBase = path.join(__dirname, '../../../generators/app'); + + before((done) => { + + helpers.run(generatorBase) + .inTmpDir() + .withOptions({ + 'skip-welcome-message': true, + 'skip-install': true + }) + .withPrompts(prompts) + .on('ready', (instance) => { + generator = instance; + }) + .on('end', done); + }); + + describe('#config', () => { + + it('should use "css" as default style language', () => { + expect(generator.config.get('style')).to.equal('css'); + }); + }); + + describe('#createFiles', () => { + + it('should generate dot files', () => { + + assert.file([ + '.editorconfig', + '.eslintrc', + '.gitignore', + '.npmignore', + '.yo-rc.json' + ]); + }); + + it('should generate project configuration files', () => { + + assert.file([ + 'LICENSE', + 'package.json' + ]); + }); + + it('should generate the webpack configuration', () => { + + assert.file([ + 'cfg/base.js', + 'cfg/dev.js', + 'cfg/dist.js', + 'cfg/test.js', + 'server.js', + 'webpack.config.js' + ]); + }); + + it('should append the postcss loader to the style pipes', () => { + + assert.fileContent('cfg/base.js', 'loader: \'style!css!postcss-loader\''); + //assert.fileContent('cfg/base.js', 'loader: \'style-loader!css-loader!postcss-loader\''); + assert.fileContent('cfg/base.js', 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded&indentedSyntax\''); + assert.fileContent('cfg/base.js', 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded\''); + assert.fileContent('cfg/base.js', 'loader: \'style-loader!css-loader!postcss-loader!less-loader\''); + assert.fileContent('cfg/base.js', 'loader: \'style-loader!css-loader!postcss-loader!stylus-loader\''); + }); + + it('should append the postcss function to the base config', () => { + + assert.fileContent('cfg/base.js', ',\n postcss: function () {\n return [];\n }'); + }); + + it('should generate required source files', () => { + + assert.file([ + 'src/actions/README.md', + 'src/components/Main.js', + 'src/components/run.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' + ]); + }); + }); +});