@@ -6,27 +6,23 @@ let helpers = require('yeoman-test');
66
77// Default globals, used in all tests
88const defaultPrompts = require ( '../../../generators/app/prompts.js' ) ;
9- let generator ;
109const generatorBase = path . join ( __dirname , '../../../generators/app' ) ;
1110
1211/**
1312 * Global before load function. Run in the before callbacks
14- * @param {Object } prompts List of prompts to use
15- * @param { Function } done Done callback
13+ * @param {Object } prompts List of prompts to use
14+ * @return { Promise }
1615 */
17- const beforeLoad = ( prompts , done ) => {
16+ const beforeLoad = ( prompts ) => {
1817
19- helpers . run ( generatorBase )
18+ return helpers . run ( generatorBase )
2019 . inTmpDir ( )
2120 . withOptions ( {
2221 'skip-welcome-message' : true ,
2322 'skip-install' : true
2423 } )
2524 . withPrompts ( prompts )
26- . on ( 'ready' , ( instance ) => {
27- generator = instance ;
28- } )
29- . on ( 'end' , done ) ;
25+ . toPromise ( ) ;
3026} ;
3127
3228describe ( 'react-webpack:app' , ( ) => {
@@ -36,81 +32,93 @@ describe('react-webpack:app', () => {
3632 prompts [ p . name ] = p . default ;
3733 }
3834
39- before ( ( done ) => {
40- beforeLoad ( prompts , done ) ;
41- } ) ;
42-
4335 describe ( '#config' , ( ) => {
4436
4537 it ( 'should set the generatedWith key to the current generator major version' , ( ) => {
46- expect ( generator . config . get ( 'generatedWithVersion' ) ) . to . equal ( 3 ) ;
38+ beforeLoad ( prompts ) . then ( ( generator ) => {
39+ expect ( generator . config . get ( 'generatedWithVersion' ) ) . to . equal ( 3 ) ;
40+ } ) ;
4741 } ) ;
4842
4943 it ( 'should use "css" as default style language' , ( ) => {
50- expect ( generator . config . get ( 'style' ) ) . to . equal ( 'css' ) ;
44+ beforeLoad ( prompts ) . then ( ( generator ) => {
45+ expect ( generator . config . get ( 'style' ) ) . to . equal ( 'css' ) ;
46+ } ) ;
5147 } ) ;
5248
5349 it ( 'should not enable "PostCSS" by default' , ( ) => {
54- expect ( generator . config . get ( 'postcss' ) ) . to . equal ( false ) ;
50+ beforeLoad ( prompts ) . then ( ( generator ) => {
51+ expect ( generator . config . get ( 'postcss' ) ) . to . equal ( false ) ;
52+ } ) ;
5553 } ) ;
5654 } ) ;
5755
5856 describe ( '#createFiles' , ( ) => {
5957
6058 it ( 'should generate dot files' , ( ) => {
6159
62- assert . file ( [
63- '.babelrc' ,
64- '.editorconfig' ,
65- '.eslintrc' ,
66- '.gitignore' ,
67- '.yo-rc.json'
68- ] ) ;
60+ beforeLoad ( prompts ) . then ( ( ) => {
61+ assert . file ( [
62+ '.babelrc' ,
63+ '.editorconfig' ,
64+ '.eslintrc' ,
65+ '.gitignore' ,
66+ '.yo-rc.json'
67+ ] ) ;
68+ } ) ;
6969 } ) ;
7070
7171 it ( 'should generate project configuration files' , ( ) => {
7272
73- assert . file ( [
74- 'package.json'
75- ] ) ;
73+ beforeLoad ( prompts ) . then ( ( ) => {
74+ assert . file ( [
75+ 'package.json'
76+ ] ) ;
77+ } ) ;
7678 } ) ;
7779
7880 it ( 'should generate the webpack configuration' , ( ) => {
7981
80- assert . file ( [
81- 'cfg/base.js' ,
82- 'cfg/defaults.js' ,
83- 'cfg/dev.js' ,
84- 'cfg/dist.js' ,
85- 'cfg/test.js' ,
86- 'server.js' ,
87- 'webpack.config.js'
88- ] ) ;
82+ beforeLoad ( prompts ) . then ( ( ) => {
83+ assert . file ( [
84+ 'cfg/base.js' ,
85+ 'cfg/defaults.js' ,
86+ 'cfg/dev.js' ,
87+ 'cfg/dist.js' ,
88+ 'cfg/test.js' ,
89+ 'server.js' ,
90+ 'webpack.config.js'
91+ ] ) ;
92+ } ) ;
8993 } ) ;
9094
9195 it ( 'should generate required source files' , ( ) => {
9296
93- assert . file ( [
94- 'src/actions/README.md' ,
95- 'src/index.js' ,
96- 'src/components/Main.js' ,
97- 'src/favicon.ico' ,
98- 'src/images/yeoman.png' ,
99- 'src/index.html' ,
100- 'src/sources/README.md' ,
101- 'src/stores/README.md' ,
102- 'src/styles/App.css'
103- ] ) ;
97+ beforeLoad ( prompts ) . then ( ( ) => {
98+ assert . file ( [
99+ 'src/actions/README.md' ,
100+ 'src/index.js' ,
101+ 'src/components/Main.js' ,
102+ 'src/favicon.ico' ,
103+ 'src/images/yeoman.png' ,
104+ 'src/index.html' ,
105+ 'src/sources/README.md' ,
106+ 'src/stores/README.md' ,
107+ 'src/styles/App.css'
108+ ] ) ;
109+ } ) ;
104110 } ) ;
105111
106112 it ( 'should generate test configuration and basic tests' , ( ) => {
107113
108- assert . file ( [
109- 'karma.conf.js' ,
110- 'test/components/MainTest.js' ,
111- 'test/helpers/shallowRenderHelper.js' ,
112- 'test/loadtests.js'
113- ] ) ;
114+ beforeLoad ( prompts ) . then ( ( ) => {
115+ assert . file ( [
116+ 'karma.conf.js' ,
117+ 'test/components/MainTest.js' ,
118+ 'test/helpers/shallowRenderHelper.js' ,
119+ 'test/loadtests.js'
120+ ] ) ;
121+ } ) ;
114122 } ) ;
115123 } ) ;
116124} ) ;
@@ -124,95 +132,111 @@ describe('react-webpack:app with PostCSS support', () => {
124132
125133 prompts . postcss = true ;
126134
127- before ( ( done ) => {
128- beforeLoad ( prompts , done ) ;
129- } ) ;
130-
131135 describe ( '#config' , ( ) => {
132136
133137 it ( 'should set the generatedWith key to the current generator major version' , ( ) => {
134- expect ( generator . config . get ( 'generatedWithVersion' ) ) . to . equal ( 3 ) ;
138+ beforeLoad ( prompts ) . then ( ( generator ) => {
139+ expect ( generator . config . get ( 'generatedWithVersion' ) ) . to . equal ( 3 ) ;
140+ } ) ;
135141 } ) ;
136142
137143 it ( 'should use "css" as default style language' , ( ) => {
138- expect ( generator . config . get ( 'style' ) ) . to . equal ( 'css' ) ;
144+ beforeLoad ( prompts ) . then ( ( generator ) => {
145+ expect ( generator . config . get ( 'style' ) ) . to . equal ( 'css' ) ;
146+ } ) ;
139147 } ) ;
140148
141149 it ( 'should enable "PostCSS"' , ( ) => {
142- expect ( generator . config . get ( 'postcss' ) ) . to . equal ( true ) ;
150+ beforeLoad ( prompts ) . then ( ( generator ) => {
151+ expect ( generator . config . get ( 'postcss' ) ) . to . equal ( true ) ;
152+ } ) ;
143153 } ) ;
144154 } ) ;
145155
146156 describe ( '#createFiles' , ( ) => {
147157
148158 it ( 'should generate dot files' , ( ) => {
149159
150- assert . file ( [
151- '.babelrc' ,
152- '.editorconfig' ,
153- '.eslintrc' ,
154- '.gitignore' ,
155- '.yo-rc.json'
156- ] ) ;
160+ beforeLoad ( prompts ) . then ( ( ) => {
161+ assert . file ( [
162+ '.babelrc' ,
163+ '.editorconfig' ,
164+ '.eslintrc' ,
165+ '.gitignore' ,
166+ '.yo-rc.json'
167+ ] ) ;
168+ } ) ;
157169 } ) ;
158170
159171 it ( 'should generate project configuration files' , ( ) => {
160172
161- assert . file ( [
162- 'package.json'
163- ] ) ;
173+ beforeLoad ( prompts ) . then ( ( ) => {
174+ assert . file ( [
175+ 'package.json'
176+ ] ) ;
177+ } ) ;
164178 } ) ;
165179
166180 it ( 'should generate the webpack configuration' , ( ) => {
167181
168- assert . file ( [
169- 'cfg/base.js' ,
170- 'cfg/defaults.js' ,
171- 'cfg/dev.js' ,
172- 'cfg/dist.js' ,
173- 'cfg/test.js' ,
174- 'server.js' ,
175- 'webpack.config.js'
176- ] ) ;
182+ beforeLoad ( prompts ) . then ( ( ) => {
183+ assert . file ( [
184+ 'cfg/base.js' ,
185+ 'cfg/defaults.js' ,
186+ 'cfg/dev.js' ,
187+ 'cfg/dist.js' ,
188+ 'cfg/test.js' ,
189+ 'server.js' ,
190+ 'webpack.config.js'
191+ ] ) ;
192+ } ) ;
177193 } ) ;
178194
179195 it ( 'should insert the postcss loader into the style pipes' , ( ) => {
180196
181- assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader\'' ) ;
182- assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded&indentedSyntax\'' ) ;
183- assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded\'' ) ;
184- assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!less-loader\'' ) ;
185- assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!stylus-loader\'' ) ;
197+ beforeLoad ( prompts ) . then ( ( ) => {
198+ assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader\'' ) ;
199+ assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded&indentedSyntax\'' ) ;
200+ assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded\'' ) ;
201+ assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!less-loader\'' ) ;
202+ assert . fileContent ( 'cfg/defaults.js' , 'loader: \'style-loader!css-loader!postcss-loader!stylus-loader\'' ) ;
203+ } ) ;
186204 } ) ;
187205
188206 it ( 'should append the postcss function to the base config' , ( ) => {
189207
190- assert . fileContent ( 'cfg/defaults.js' , ',\n postcss: function () {\n return [];\n }' ) ;
208+ beforeLoad ( prompts ) . then ( ( ) => {
209+ assert . fileContent ( 'cfg/defaults.js' , ',\n postcss: function () {\n return [];\n }' ) ;
210+ } ) ;
191211 } ) ;
192212
193213 it ( 'should generate required source files' , ( ) => {
194214
195- assert . file ( [
196- 'src/actions/README.md' ,
197- 'src/index.js' ,
198- 'src/components/Main.js' ,
199- 'src/favicon.ico' ,
200- 'src/images/yeoman.png' ,
201- 'src/index.html' ,
202- 'src/sources/README.md' ,
203- 'src/stores/README.md' ,
204- 'src/styles/App.css'
205- ] ) ;
215+ beforeLoad ( prompts ) . then ( ( ) => {
216+ assert . file ( [
217+ 'src/actions/README.md' ,
218+ 'src/index.js' ,
219+ 'src/components/Main.js' ,
220+ 'src/favicon.ico' ,
221+ 'src/images/yeoman.png' ,
222+ 'src/index.html' ,
223+ 'src/sources/README.md' ,
224+ 'src/stores/README.md' ,
225+ 'src/styles/App.css'
226+ ] ) ;
227+ } ) ;
206228 } ) ;
207229
208230 it ( 'should generate test configuration and basic tests' , ( ) => {
209231
210- assert . file ( [
211- 'karma.conf.js' ,
212- 'test/components/MainTest.js' ,
213- 'test/helpers/shallowRenderHelper.js' ,
214- 'test/loadtests.js'
215- ] ) ;
232+ beforeLoad ( prompts ) . then ( ( ) => {
233+ assert . file ( [
234+ 'karma.conf.js' ,
235+ 'test/components/MainTest.js' ,
236+ 'test/helpers/shallowRenderHelper.js' ,
237+ 'test/loadtests.js'
238+ ] ) ;
239+ } ) ;
216240 } ) ;
217241 } ) ;
218242} ) ;
0 commit comments