Skip to content

Commit 6344984

Browse files
committed
Added ability to save generator version for future updates
1 parent 6b9e24c commit 6344984

File tree

2 files changed

+43
-33
lines changed

2 files changed

+43
-33
lines changed

generators/app/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ let utils = require('../../utils/all');
44
let prompts = require('./prompts');
55
let path = require('path');
66
let fs = require('fs');
7+
const packageInfo = require('../../package.json');
78

89
// Set the base root directory for our files
910
let baseRootPath = path.dirname(require.resolve('react-webpack-template'));
@@ -47,12 +48,14 @@ module.exports = generator.Base.extend({
4748
this.appName = props.appName;
4849
this.style = props.style;
4950
this.postcss = props.postcss
51+
this.generatedWithVersion = packageInfo.version.split('.').unshift();
5052

5153
// Set needed keys into config
5254
this.config.set('appName', this.appName);
5355
this.config.set('appPath', this.appPath);
5456
this.config.set('style', this.style);
5557
this.config.set('postcss', this.postcss);
58+
this.config.set('generatedWithVersion', this.generatedWithVersion);
5659

5760
this.config.save();
5861

test/generators/app/indexTest.js

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,48 @@ let expect = require('chai').expect;
44
let assert = require('yeoman-assert');
55
let helpers = require('yeoman-test');
66

7+
// Default globals, used in all tests
8+
const defaultPrompts = require('../../../generators/app/prompts.js');
9+
let generator;
10+
const generatorBase = path.join(__dirname, '../../../generators/app');
11+
12+
/**
13+
* Global before load function. Run in the before callbacks
14+
* @param {Object} prompts List of prompts to use
15+
* @param {Function} done Done callback
16+
*/
17+
const beforeLoad = (prompts, done) => {
18+
19+
helpers.run(generatorBase)
20+
.inTmpDir()
21+
.withOptions({
22+
'skip-welcome-message': true,
23+
'skip-install': true
24+
})
25+
.withPrompts(prompts)
26+
.on('ready', (instance) => {
27+
generator = instance;
28+
})
29+
.on('end', done);
30+
};
31+
732
describe('react-webpack:app', () => {
833

9-
let defaultPrompts = require('../../../generators/app/prompts.js');
1034
let prompts = {};
1135
for(let p of defaultPrompts) {
1236
prompts[p.name] = p.default;
1337
}
1438

15-
let generator;
16-
let generatorBase = path.join(__dirname, '../../../generators/app');
17-
1839
before((done) => {
19-
20-
helpers.run(generatorBase)
21-
.inTmpDir()
22-
.withOptions({
23-
'skip-welcome-message': true,
24-
'skip-install': true
25-
})
26-
.withPrompts(prompts)
27-
.on('ready', (instance) => {
28-
generator = instance;
29-
})
30-
.on('end', done);
40+
beforeLoad(prompts, done);
3141
});
3242

3343
describe('#config', () => {
3444

45+
it('should set the generatedWith key to the current generator major version', () => {
46+
expect(generator.config.get('generatedWithVersion')).to.equal(3);
47+
});
48+
3549
it('should use "css" as default style language', () => {
3650
expect(generator.config.get('style')).to.equal('css');
3751
});
@@ -101,39 +115,32 @@ describe('react-webpack:app', () => {
101115
});
102116
});
103117

104-
describe('react-webpack:app non-default-prompts', () => {
118+
describe('react-webpack:app with PostCSS support', () => {
105119

106-
let defaultPrompts = require('../../../generators/app/prompts.js');
107120
let prompts = {};
108121
for(let p of defaultPrompts) {
109122
prompts[p.name] = p.default;
110123
}
111124

112125
prompts.postcss = true;
113126

114-
let generator;
115-
let generatorBase = path.join(__dirname, '../../../generators/app');
116-
117127
before((done) => {
118-
119-
helpers.run(generatorBase)
120-
.inTmpDir()
121-
.withOptions({
122-
'skip-welcome-message': true,
123-
'skip-install': true
124-
})
125-
.withPrompts(prompts)
126-
.on('ready', (instance) => {
127-
generator = instance;
128-
})
129-
.on('end', done);
128+
beforeLoad(prompts, done);
130129
});
131130

132131
describe('#config', () => {
133132

133+
it('should set the generatedWith key to the current generator major version', () => {
134+
expect(generator.config.get('generatedWithVersion')).to.equal(3);
135+
});
136+
134137
it('should use "css" as default style language', () => {
135138
expect(generator.config.get('style')).to.equal('css');
136139
});
140+
141+
it('should enable "PostCSS"', () => {
142+
expect(generator.config.get('postcss')).to.equal(true);
143+
});
137144
});
138145

139146
describe('#createFiles', () => {

0 commit comments

Comments
 (0)