@@ -29,6 +29,29 @@ let originalIsInteractive = helpers.isInteractive;
29
29
30
30
temp . track ( ) ;
31
31
32
+ async function prepareTestingPath ( testInjector : IInjector , packageToInstall : string , packageName : string , options ?: INpmInstallOptions ) : Promise < string > {
33
+ options = options || { dependencyType : "save" } ;
34
+ const fs = testInjector . resolve < IFileSystem > ( "fs" ) ;
35
+
36
+ let npmInstallationManager = testInjector . resolve < INpmInstallationManager > ( "npmInstallationManager" ) ;
37
+ let defaultTemplateDir = temp . mkdirSync ( "project-service" ) ;
38
+ fs . writeJson ( path . join ( defaultTemplateDir , constants . PACKAGE_JSON_FILE_NAME ) , {
39
+ "name" : "defaultTemplate" ,
40
+ "version" : "1.0.0" ,
41
+ "description" : "dummy" ,
42
+ "license" : "MIT" ,
43
+ "readme" : "dummy" ,
44
+ "repository" : "dummy"
45
+ } ) ;
46
+
47
+ await npmInstallationManager . install ( packageToInstall , defaultTemplateDir , options ) ;
48
+ const defaultTemplatePath = path . join ( defaultTemplateDir , constants . NODE_MODULES_FOLDER_NAME , packageName ) ;
49
+
50
+ fs . deleteDirectory ( path . join ( defaultTemplatePath , constants . NODE_MODULES_FOLDER_NAME ) ) ;
51
+
52
+ return defaultTemplatePath ;
53
+ }
54
+
32
55
class ProjectIntegrationTest {
33
56
public testInjector : IInjector ;
34
57
@@ -146,85 +169,12 @@ describe("Project Service Tests", () => {
146
169
147
170
before ( async ( ) => {
148
171
let projectIntegrationTest = new ProjectIntegrationTest ( ) ;
149
- let fs : IFileSystem = projectIntegrationTest . testInjector . resolve ( "fs" ) ;
150
- let npmInstallationManager : INpmInstallationManager = projectIntegrationTest . testInjector . resolve ( "npmInstallationManager" ) ;
151
-
152
- let defaultTemplateDir = temp . mkdirSync ( "defaultTemplate" ) ;
153
- fs . writeJson ( path . join ( defaultTemplateDir , "package.json" ) , {
154
- "name" : "defaultTemplate" ,
155
- "version" : "1.0.0" ,
156
- "description" : "dummy" ,
157
- "license" : "MIT" ,
158
- "readme" : "dummy" ,
159
- "repository" : "dummy"
160
- } ) ;
161
-
162
- await npmInstallationManager . install ( constants . RESERVED_TEMPLATE_NAMES [ "default" ] , defaultTemplateDir , { dependencyType : "save" } ) ;
163
- defaultTemplatePath = path . join ( defaultTemplateDir , "node_modules" , constants . RESERVED_TEMPLATE_NAMES [ "default" ] ) ;
164
-
165
- fs . deleteDirectory ( path . join ( defaultTemplatePath , "node_modules" ) ) ;
166
-
167
- let defaultSpecificVersionTemplateDir = temp . mkdirSync ( "defaultTemplateSpeciffic" ) ;
168
- fs . writeJson ( path . join ( defaultSpecificVersionTemplateDir , "package.json" ) , {
169
- "name" : "defaultTemplateSpecialVersion" ,
170
- "version" : "1.0.0" ,
171
- "description" : "dummy" ,
172
- "license" : "MIT" ,
173
- "readme" : "dummy" ,
174
- "repository" : "dummy"
175
- } ) ;
176
-
177
- await npmInstallationManager . install ( constants . RESERVED_TEMPLATE_NAMES [ "default" ] , defaultSpecificVersionTemplateDir , { version : "1.4.0" , dependencyType : "save" } ) ;
178
- defaultSpecificVersionTemplatePath = path . join ( defaultSpecificVersionTemplateDir , "node_modules" , constants . RESERVED_TEMPLATE_NAMES [ "default" ] ) ;
179
-
180
- fs . deleteDirectory ( path . join ( defaultSpecificVersionTemplatePath , "node_modules" ) ) ;
181
-
182
- let angularTemplateDir = temp . mkdirSync ( "angularTemplate" ) ;
183
- fs . writeJson ( path . join ( angularTemplateDir , "package.json" ) , {
184
- "name" : "angularTemplate" ,
185
- "version" : "1.0.0" ,
186
- "description" : "dummy" ,
187
- "license" : "MIT" ,
188
- "readme" : "dummy" ,
189
- "repository" : "dummy"
190
- } ) ;
191
-
192
- await npmInstallationManager . install ( constants . RESERVED_TEMPLATE_NAMES [ "angular" ] , angularTemplateDir , { dependencyType : "save" } ) ;
193
- angularTemplatePath = path . join ( angularTemplateDir , "node_modules" , constants . RESERVED_TEMPLATE_NAMES [ "angular" ] ) ;
194
-
195
- fs . deleteDirectory ( path . join ( angularTemplatePath , "node_modules" ) ) ;
196
-
197
- let typescriptTemplateDir = temp . mkdirSync ( "typescriptTemplate" ) ;
198
- fs . writeJson ( path . join ( typescriptTemplateDir , "package.json" ) , {
199
- "name" : "typescriptTemplate" ,
200
- "version" : "1.0.0" ,
201
- "description" : "dummy" ,
202
- "license" : "MIT" ,
203
- "readme" : "dummy" ,
204
- "repository" : "dummy"
205
- } ) ;
206
-
207
- await npmInstallationManager . install ( constants . RESERVED_TEMPLATE_NAMES [ "typescript" ] , typescriptTemplateDir , { dependencyType : "save" } ) ;
208
- typescriptTemplatePath = path . join ( typescriptTemplateDir , "node_modules" , constants . RESERVED_TEMPLATE_NAMES [ "typescript" ] ) ;
209
-
210
- fs . deleteDirectory ( path . join ( typescriptTemplatePath , "node_modules" ) ) ;
211
- let noAppResourcesTemplateDir = temp . mkdirSync ( "noAppResources" ) ;
212
- fs . writeJson ( path . join ( noAppResourcesTemplateDir , "package.json" ) , {
213
- "name" : "blankTemplate" ,
214
- "version" : "1.0.0" ,
215
- "description" : "dummy" ,
216
- "license" : "MIT" ,
217
- "readme" : "dummy" ,
218
- "repository" : "dummy"
219
- } ) ;
220
-
221
- await npmInstallationManager . install ( noAppResourcesTemplateName , noAppResourcesTemplateDir , {
222
- dependencyType : "save" ,
223
- version : "2.0.0"
224
- } ) ;
225
- noAppResourcesTemplatePath = path . join ( noAppResourcesTemplateDir , "node_modules" , noAppResourcesTemplateName ) ;
226
172
227
- fs . deleteDirectory ( path . join ( noAppResourcesTemplatePath , "node_modules" ) ) ;
173
+ defaultTemplatePath = await prepareTestingPath ( projectIntegrationTest . testInjector , constants . RESERVED_TEMPLATE_NAMES [ "default" ] , constants . RESERVED_TEMPLATE_NAMES [ "default" ] ) ;
174
+ defaultSpecificVersionTemplatePath = await prepareTestingPath ( projectIntegrationTest . testInjector , constants . RESERVED_TEMPLATE_NAMES [ "default" ] , constants . RESERVED_TEMPLATE_NAMES [ "default" ] , { version : "1.4.0" , dependencyType : "save" } ) ;
175
+ angularTemplatePath = await prepareTestingPath ( projectIntegrationTest . testInjector , constants . RESERVED_TEMPLATE_NAMES [ "angular" ] , constants . RESERVED_TEMPLATE_NAMES [ "angular" ] ) ;
176
+ typescriptTemplatePath = await prepareTestingPath ( projectIntegrationTest . testInjector , constants . RESERVED_TEMPLATE_NAMES [ "typescript" ] , constants . RESERVED_TEMPLATE_NAMES [ "typescript" ] ) ;
177
+ noAppResourcesTemplatePath = await prepareTestingPath ( projectIntegrationTest . testInjector , noAppResourcesTemplateName , noAppResourcesTemplateName , { dependencyType : "save" , version : "2.0.0" } ) ;
228
178
} ) ;
229
179
230
180
it ( "creates valid project from default template" , async ( ) => {
@@ -340,28 +290,32 @@ describe("Project Service Tests", () => {
340
290
let projectIntegrationTest = new ProjectIntegrationTest ( ) ;
341
291
let tempFolder = temp . mkdirSync ( "projectLocalDir" ) ;
342
292
let projectName = "myapp" ;
293
+ const template = "https://github.com/NativeScript/template-hello-world/tarball/master" ;
343
294
344
295
await projectIntegrationTest . createProject ( {
345
296
projectName : projectName ,
346
- template : "https://github.com/NativeScript/template-hello-world/tarball/master" ,
297
+ template,
347
298
pathToProject : tempFolder
348
299
} ) ;
349
300
350
- await projectIntegrationTest . assertProject ( tempFolder , projectName , "org.nativescript.myapp" , defaultTemplatePath ) ;
301
+ const projectSourceDirectory = await prepareTestingPath ( projectIntegrationTest . testInjector , template , constants . RESERVED_TEMPLATE_NAMES [ "default" ] ) ;
302
+ await projectIntegrationTest . assertProject ( tempFolder , projectName , "org.nativescript.myapp" , projectSourceDirectory ) ;
351
303
} ) ;
352
304
353
305
it ( "creates valid project from git url" , async ( ) => {
354
306
let projectIntegrationTest = new ProjectIntegrationTest ( ) ;
355
307
let tempFolder = temp . mkdirSync ( "projectLocalDir" ) ;
356
308
let projectName = "myapp" ;
309
+ const template = "https://github.com/NativeScript/template-hello-world.git" ;
357
310
358
311
await projectIntegrationTest . createProject ( {
359
312
projectName : projectName ,
360
- template : "https://github.com/NativeScript/template-hello-world.git" ,
313
+ template,
361
314
pathToProject : tempFolder
362
315
} ) ;
363
316
364
- await projectIntegrationTest . assertProject ( tempFolder , projectName , "org.nativescript.myapp" , defaultTemplatePath ) ;
317
+ const projectSourceDirectory = await prepareTestingPath ( projectIntegrationTest . testInjector , template , constants . RESERVED_TEMPLATE_NAMES [ "default" ] ) ;
318
+ await projectIntegrationTest . assertProject ( tempFolder , projectName , "org.nativescript.myapp" , projectSourceDirectory ) ;
365
319
} ) ;
366
320
367
321
it ( "creates valid project with specified id from default template" , async ( ) => {
0 commit comments