From 6344984d652757c3b4b1e65120c69aedee68febf Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 29 Mar 2016 23:00:55 +0200 Subject: [PATCH] Added ability to save generator version for future updates --- generators/app/index.js | 3 ++ test/generators/app/indexTest.js | 73 +++++++++++++++++--------------- 2 files changed, 43 insertions(+), 33 deletions(-) diff --git a/generators/app/index.js b/generators/app/index.js index 8afadab..2f22912 100644 --- a/generators/app/index.js +++ b/generators/app/index.js @@ -4,6 +4,7 @@ let utils = require('../../utils/all'); let prompts = require('./prompts'); let path = require('path'); let fs = require('fs'); +const packageInfo = require('../../package.json'); // Set the base root directory for our files let baseRootPath = path.dirname(require.resolve('react-webpack-template')); @@ -47,12 +48,14 @@ module.exports = generator.Base.extend({ this.appName = props.appName; this.style = props.style; this.postcss = props.postcss + this.generatedWithVersion = packageInfo.version.split('.').unshift(); // Set needed keys into config this.config.set('appName', this.appName); this.config.set('appPath', this.appPath); this.config.set('style', this.style); this.config.set('postcss', this.postcss); + this.config.set('generatedWithVersion', this.generatedWithVersion); this.config.save(); diff --git a/test/generators/app/indexTest.js b/test/generators/app/indexTest.js index 2f0d1b1..d7a9ef9 100644 --- a/test/generators/app/indexTest.js +++ b/test/generators/app/indexTest.js @@ -4,34 +4,48 @@ let expect = require('chai').expect; let assert = require('yeoman-assert'); 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 + */ +const beforeLoad = (prompts, done) => { + + helpers.run(generatorBase) + .inTmpDir() + .withOptions({ + 'skip-welcome-message': true, + 'skip-install': true + }) + .withPrompts(prompts) + .on('ready', (instance) => { + generator = instance; + }) + .on('end', done); +}; + describe('react-webpack:app', () => { - let defaultPrompts = require('../../../generators/app/prompts.js'); let prompts = {}; for(let p of defaultPrompts) { prompts[p.name] = p.default; } - 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); + 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); + }); + it('should use "css" as default style language', () => { expect(generator.config.get('style')).to.equal('css'); }); @@ -101,9 +115,8 @@ describe('react-webpack:app', () => { }); }); -describe('react-webpack:app non-default-prompts', () => { +describe('react-webpack:app with PostCSS support', () => { - let defaultPrompts = require('../../../generators/app/prompts.js'); let prompts = {}; for(let p of defaultPrompts) { prompts[p.name] = p.default; @@ -111,29 +124,23 @@ describe('react-webpack:app non-default-prompts', () => { 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); + 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); + }); + it('should use "css" as default style language', () => { expect(generator.config.get('style')).to.equal('css'); }); + + it('should enable "PostCSS"', () => { + expect(generator.config.get('postcss')).to.equal(true); + }); }); describe('#createFiles', () => {