@@ -29,6 +29,29 @@ let originalIsInteractive = helpers.isInteractive;
2929
3030temp . track ( ) ;
3131
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+
3255class ProjectIntegrationTest {
3356 public testInjector : IInjector ;
3457
@@ -146,85 +169,12 @@ describe("Project Service Tests", () => {
146169
147170 before ( async ( ) => {
148171 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 ) ;
226172
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" } ) ;
228178 } ) ;
229179
230180 it ( "creates valid project from default template" , async ( ) => {
@@ -340,28 +290,32 @@ describe("Project Service Tests", () => {
340290 let projectIntegrationTest = new ProjectIntegrationTest ( ) ;
341291 let tempFolder = temp . mkdirSync ( "projectLocalDir" ) ;
342292 let projectName = "myapp" ;
293+ const template = "https://github.com/NativeScript/template-hello-world/tarball/master" ;
343294
344295 await projectIntegrationTest . createProject ( {
345296 projectName : projectName ,
346- template : "https://github.com/NativeScript/template-hello-world/tarball/master" ,
297+ template,
347298 pathToProject : tempFolder
348299 } ) ;
349300
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 ) ;
351303 } ) ;
352304
353305 it ( "creates valid project from git url" , async ( ) => {
354306 let projectIntegrationTest = new ProjectIntegrationTest ( ) ;
355307 let tempFolder = temp . mkdirSync ( "projectLocalDir" ) ;
356308 let projectName = "myapp" ;
309+ const template = "https://github.com/NativeScript/template-hello-world.git" ;
357310
358311 await projectIntegrationTest . createProject ( {
359312 projectName : projectName ,
360- template : "https://github.com/NativeScript/template-hello-world.git" ,
313+ template,
361314 pathToProject : tempFolder
362315 } ) ;
363316
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 ) ;
365319 } ) ;
366320
367321 it ( "creates valid project with specified id from default template" , async ( ) => {
0 commit comments