@@ -420,13 +420,16 @@ describe("Project Service Tests", () => {
420420 } ) ;
421421
422422 describe ( "isValidNativeScriptProject" , ( ) => {
423- const getTestInjector = ( ) : IInjector => {
423+ const getTestInjector = ( projectData ?: any ) : IInjector => {
424424 const testInjector = new yok . Yok ( ) ;
425425 testInjector . register ( "npm" , { } ) ;
426426 testInjector . register ( "errors" , { } ) ;
427427 testInjector . register ( "fs" , { } ) ;
428428 testInjector . register ( "logger" , { } ) ;
429- testInjector . register ( "projectDataService" , { } ) ;
429+ testInjector . register ( "projectDataService" , {
430+ getProjectData : ( projectDir ?: string ) : IProjectData => projectData
431+ } ) ;
432+ testInjector . register ( "projectData" , { } ) ;
430433 testInjector . register ( "projectNameService" , { } ) ;
431434 testInjector . register ( "projectTemplatesService" , { } ) ;
432435 testInjector . register ( "staticConfig" , { } ) ;
@@ -437,44 +440,66 @@ describe("Project Service Tests", () => {
437440 return testInjector ;
438441 } ;
439442
440- it ( "returns true when initialize project data does not throw, projectDir and projectId are valid" , ( ) => {
441- const testInjector = getTestInjector ( ) ;
442- testInjector . register ( "projectData" , {
443+ it ( "returns true when getProjectData does not throw, projectDir and projectId are valid" , ( ) => {
444+ const testInjector = getTestInjector ( {
443445 projectDir : "projectDir" ,
444- projectId : "projectId" ,
445- initializeProjectData : ( ) : void => undefined
446+ projectId : "projectId"
446447 } ) ;
447448
448449 const projectService : IProjectService = testInjector . resolve ( ProjectServiceLib . ProjectService ) ;
449450 assert . isTrue ( projectService . isValidNativeScriptProject ( "some-dir" ) ) ;
450451 } ) ;
451452
452- it ( "returns false when initialize project data throws " , ( ) => {
453+ it ( "returns correct data when multiple calls are executed " , ( ) => {
453454 const testInjector = getTestInjector ( ) ;
454- testInjector . register ( "projectData" , {
455- initializeProjectData : ( ) : void => { throw new Error ( "err" ) ; }
455+ const projectDataService = testInjector . resolve < IProjectDataService > ( "projectDataService" ) ;
456+ const projectData : any = {
457+ projectDir : "projectDir" ,
458+ projectId : "projectId"
459+ } ;
460+
461+ let returnedProjectData : any = null ;
462+ projectDataService . getProjectData = ( projectDir ?: string ) : IProjectData => {
463+ projectData . projectDir = projectDir ;
464+ returnedProjectData = projectData ;
465+ return returnedProjectData ;
466+ } ;
467+
468+ const projectService : IProjectService = testInjector . resolve ( ProjectServiceLib . ProjectService ) ;
469+ assert . isTrue ( projectService . isValidNativeScriptProject ( "some-dir" ) ) ;
470+ assert . equal ( returnedProjectData . projectDir , "some-dir" ) ;
471+ assert . isTrue ( projectService . isValidNativeScriptProject ( "some-dir-2" ) ) ;
472+ assert . equal ( returnedProjectData . projectDir , "some-dir-2" ) ;
473+
474+ projectDataService . getProjectData = ( projectDir ?: string ) : IProjectData => {
475+ throw new Error ( "Err" ) ;
476+ } ;
477+
478+ assert . isFalse ( projectService . isValidNativeScriptProject ( "some-dir-2" ) ) ;
479+ } ) ;
480+
481+ it ( "returns false when getProjectData throws" , ( ) => {
482+ const testInjector = getTestInjector ( null ) ;
483+ testInjector . register ( "projectDataService" , {
484+ getProjectData : ( ) : void => { throw new Error ( "err" ) ; }
456485 } ) ;
457486
458487 const projectService : IProjectService = testInjector . resolve ( ProjectServiceLib . ProjectService ) ;
459488 assert . isFalse ( projectService . isValidNativeScriptProject ( "some-dir" ) ) ;
460489 } ) ;
461490
462- it ( "returns false when initializeProjectData does not throw, but there's no projectDir set" , ( ) => {
463- const testInjector = getTestInjector ( ) ;
464- testInjector . register ( "projectData" , {
465- projectId : "projectId" ,
466- initializeProjectData : ( ) : void => undefined
491+ it ( "returns false when getProjectData does not throw, but there's no projectDir set" , ( ) => {
492+ const testInjector = getTestInjector ( {
493+ projectId : "projectId"
467494 } ) ;
468495
469496 const projectService : IProjectService = testInjector . resolve ( ProjectServiceLib . ProjectService ) ;
470497 assert . isFalse ( projectService . isValidNativeScriptProject ( "some-dir" ) ) ;
471498 } ) ;
472499
473- it ( "returns false when initializeProjectData does not throw, but there's no projectId set" , ( ) => {
474- const testInjector = getTestInjector ( ) ;
475- testInjector . register ( "projectData" , {
476- projectDir : "projectDir" ,
477- initializeProjectData : ( ) : void => undefined
500+ it ( "returns false when getProjectData does not throw, but there's no projectId set" , ( ) => {
501+ const testInjector = getTestInjector ( {
502+ projectDir : "projectDir"
478503 } ) ;
479504
480505 const projectService : IProjectService = testInjector . resolve ( ProjectServiceLib . ProjectService ) ;
0 commit comments