@@ -2,7 +2,7 @@ import * as stubs from "./../stubs";
22import * as yok from "../../lib/common/yok" ;
33import { UpdateController } from "../../lib/controllers/update-controller" ;
44import { assert } from "chai" ;
5- import * as sinon from ' sinon' ;
5+ import * as sinon from " sinon" ;
66import * as path from "path" ;
77import { Options } from "../../lib/options" ;
88import { StaticConfig } from "../../lib/config" ;
@@ -21,7 +21,7 @@ function createTestInjector(
2121 checkConsent : async ( ) : Promise < void > => undefined ,
2222 trackFeature : async ( ) : Promise < void > => undefined
2323 } ) ;
24- testInjector . register ( ' errors' , stubs . ErrorsStub ) ;
24+ testInjector . register ( " errors" , stubs . ErrorsStub ) ;
2525 testInjector . register ( "staticConfig" , StaticConfig ) ;
2626 testInjector . register ( "projectData" , {
2727 projectDir,
@@ -32,29 +32,29 @@ function createTestInjector(
3232 testInjector . register ( "migrateController" , {
3333 shouldMigrate : ( ) => { return false ; } ,
3434 } ) ;
35- testInjector . register ( 'fs' , stubs . FileSystemStub ) ;
36- testInjector . register ( ' platformCommandHelper' , {
35+ testInjector . register ( "fs" , stubs . FileSystemStub ) ;
36+ testInjector . register ( " platformCommandHelper" , {
3737 getCurrentPlatformVersion : ( ) => {
3838 return "5.2.0" ;
3939 }
4040 } ) ;
4141
42- testInjector . register ( ' packageManager' , {
42+ testInjector . register ( " packageManager" , {
4343 getTagVersion : ( ) => {
4444 return "2.3.0" ;
4545 }
4646 } ) ;
4747 testInjector . register ( "addPlatformService" , {
48- setPlatformVersion : ( ) => { /**/ }
48+ setPlatformVersion : ( ) => { /**/ }
4949 } ) ;
5050 testInjector . register ( "pluginsService" , {
51- addToPackageJson : ( ) => { /**/ }
51+ addToPackageJson : ( ) => { /**/ }
5252 } ) ;
53- testInjector . register ( ' devicePlatformsConstants' , DevicePlatformsConstants ) ;
54- testInjector . register ( ' packageInstallationManager' , stubs . PackageInstallationManagerStub ) ;
55- testInjector . register ( ' platformsDataService' , stubs . NativeProjectDataStub ) ;
53+ testInjector . register ( " devicePlatformsConstants" , DevicePlatformsConstants ) ;
54+ testInjector . register ( " packageInstallationManager" , stubs . PackageInstallationManagerStub ) ;
55+ testInjector . register ( " platformsDataService" , stubs . NativeProjectDataStub ) ;
5656 testInjector . register ( "pacoteService" , stubs . PacoteServiceStub ) ;
57- testInjector . register ( ' projectDataService' , stubs . ProjectDataService ) ;
57+ testInjector . register ( " projectDataService" , stubs . ProjectDataService ) ;
5858 testInjector . register ( "updateController" , UpdateController ) ;
5959
6060 return testInjector ;
@@ -78,7 +78,7 @@ describe("update controller method tests", () => {
7878 sandbox . stub ( fs , "copyFile" ) . throws ( ) ;
7979 const updateController = testInjector . resolve ( "updateController" ) ;
8080
81- await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
81+ await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
8282
8383 assert . isTrue ( deleteDirectory . calledWith ( path . join ( projectFolder , UpdateController . backupFolder ) ) ) ;
8484 assert . isFalse ( deleteDirectory . calledWith ( path . join ( projectFolder , "platforms" ) ) ) ;
@@ -90,7 +90,7 @@ describe("update controller method tests", () => {
9090 const copyFileStub = sandbox . stub ( fs , "copyFile" ) ;
9191 const updateController = testInjector . resolve ( "updateController" ) ;
9292
93- await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
93+ await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
9494
9595 assert . isTrue ( copyFileStub . calledWith ( path . join ( projectFolder , "package.json" ) ) ) ;
9696 for ( const folder of UpdateController . folders ) {
@@ -108,11 +108,94 @@ describe("update controller method tests", () => {
108108 const updateController = testInjector . resolve ( "updateController" ) ;
109109 const tempDir = path . join ( projectFolder , UpdateController . backupFolder ) ;
110110
111- await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
111+ await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
112112
113113 assert . isTrue ( copyFileStub . calledWith ( path . join ( tempDir , "package.json" ) , projectFolder ) ) ;
114114 for ( const folder of UpdateController . folders ) {
115115 assert . isTrue ( copyFileStub . calledWith ( path . join ( tempDir , folder ) , projectFolder ) ) ;
116116 }
117117 } ) ;
118+
119+ for ( const projectType of [ "Angular" , "React" ] ) {
120+ it ( `should update dependencies from project type: ${ projectType } ` , async ( ) => {
121+ const testInjector = createTestInjector ( ) ;
122+ testInjector . resolve ( "platformCommandHelper" ) . removePlatforms = ( ) => {
123+ throw new Error ( ) ;
124+ } ;
125+
126+ const fs = testInjector . resolve ( "fs" ) ;
127+ const copyFileStub = sandbox . stub ( fs , "copyFile" ) ;
128+ const updateController = testInjector . resolve ( "updateController" ) ;
129+ const tempDir = path . join ( projectFolder , UpdateController . backupFolder ) ;
130+
131+ const projectDataService = testInjector . resolve < IProjectDataService > ( "projectDataService" ) ;
132+ projectDataService . getProjectData = ( projectDir : string ) => {
133+ return < any > {
134+ projectDir,
135+ projectType,
136+ dependencies : {
137+ "tns-core-modules" : "0.1.0" ,
138+ } ,
139+ devDependencies : {
140+ "nativescript-dev-webpack" : "1.1.3"
141+ }
142+ } ;
143+ } ;
144+
145+ const packageInstallationManager = testInjector . resolve < IPackageInstallationManager > ( "packageInstallationManager" ) ;
146+ const latestCompatibleVersion = "1.1.1" ;
147+ packageInstallationManager . getLatestCompatibleVersionSafe = async ( packageName : string , referenceVersion ?: string ) : Promise < string > => {
148+ assert . isString ( packageName ) ;
149+ assert . isFalse ( _ . isEmpty ( packageName ) ) ;
150+ return latestCompatibleVersion ;
151+ } ;
152+
153+ const pacoteService = testInjector . resolve < IPacoteService > ( "pacoteService" ) ;
154+ pacoteService . manifest = async ( packageName : string , options ?: IPacoteManifestOptions ) : Promise < any > => {
155+ assert . isString ( packageName ) ;
156+ assert . isFalse ( _ . isEmpty ( packageName ) ) ;
157+
158+ return {
159+ dependencies : {
160+ "tns-core-modules" : "1.0.0" ,
161+ "dep2" : "1.1.0"
162+ } ,
163+ devDependencies : {
164+ "devDep1" : "1.2.0" ,
165+ "nativescript-dev-webpack" : "1.3.0"
166+ } ,
167+ name : "template1"
168+ } ;
169+ } ;
170+
171+ const pluginsService = testInjector . resolve < IPluginsService > ( "pluginsService" ) ;
172+ const dataAddedToPackageJson : IDictionary < any > = {
173+ dependencies : { } ,
174+ devDependencies : { }
175+ } ;
176+ pluginsService . addToPackageJson = ( plugin : string , version : string , isDev : boolean , projectDir : string ) : void => {
177+ if ( isDev ) {
178+ dataAddedToPackageJson . devDependencies [ plugin ] = version ;
179+ } else {
180+ dataAddedToPackageJson . dependencies [ plugin ] = version ;
181+ }
182+ } ;
183+
184+ await updateController . update ( { projectDir : projectFolder } ) ;
185+
186+ assert . isTrue ( copyFileStub . calledWith ( path . join ( tempDir , "package.json" ) , projectFolder ) ) ;
187+ for ( const folder of UpdateController . folders ) {
188+ assert . isTrue ( copyFileStub . calledWith ( path . join ( tempDir , folder ) , projectFolder ) ) ;
189+ }
190+
191+ assert . deepEqual ( dataAddedToPackageJson , {
192+ dependencies : {
193+ "tns-core-modules" : "1.0.0" ,
194+ } ,
195+ devDependencies : {
196+ "nativescript-dev-webpack" : "1.3.0"
197+ }
198+ } ) ;
199+ } ) ;
200+ }
118201} ) ;
0 commit comments