@@ -2,7 +2,7 @@ import * as stubs from "./../stubs";
2
2
import * as yok from "../../lib/common/yok" ;
3
3
import { UpdateController } from "../../lib/controllers/update-controller" ;
4
4
import { assert } from "chai" ;
5
- import * as sinon from ' sinon' ;
5
+ import * as sinon from " sinon" ;
6
6
import * as path from "path" ;
7
7
import { Options } from "../../lib/options" ;
8
8
import { StaticConfig } from "../../lib/config" ;
@@ -21,7 +21,7 @@ function createTestInjector(
21
21
checkConsent : async ( ) : Promise < void > => undefined ,
22
22
trackFeature : async ( ) : Promise < void > => undefined
23
23
} ) ;
24
- testInjector . register ( ' errors' , stubs . ErrorsStub ) ;
24
+ testInjector . register ( " errors" , stubs . ErrorsStub ) ;
25
25
testInjector . register ( "staticConfig" , StaticConfig ) ;
26
26
testInjector . register ( "projectData" , {
27
27
projectDir,
@@ -32,29 +32,29 @@ function createTestInjector(
32
32
testInjector . register ( "migrateController" , {
33
33
shouldMigrate : ( ) => { return false ; } ,
34
34
} ) ;
35
- testInjector . register ( 'fs' , stubs . FileSystemStub ) ;
36
- testInjector . register ( ' platformCommandHelper' , {
35
+ testInjector . register ( "fs" , stubs . FileSystemStub ) ;
36
+ testInjector . register ( " platformCommandHelper" , {
37
37
getCurrentPlatformVersion : ( ) => {
38
38
return "5.2.0" ;
39
39
}
40
40
} ) ;
41
41
42
- testInjector . register ( ' packageManager' , {
42
+ testInjector . register ( " packageManager" , {
43
43
getTagVersion : ( ) => {
44
44
return "2.3.0" ;
45
45
}
46
46
} ) ;
47
47
testInjector . register ( "addPlatformService" , {
48
- setPlatformVersion : ( ) => { /**/ }
48
+ setPlatformVersion : ( ) => { /**/ }
49
49
} ) ;
50
50
testInjector . register ( "pluginsService" , {
51
- addToPackageJson : ( ) => { /**/ }
51
+ addToPackageJson : ( ) => { /**/ }
52
52
} ) ;
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 ) ;
56
56
testInjector . register ( "pacoteService" , stubs . PacoteServiceStub ) ;
57
- testInjector . register ( ' projectDataService' , stubs . ProjectDataService ) ;
57
+ testInjector . register ( " projectDataService" , stubs . ProjectDataService ) ;
58
58
testInjector . register ( "updateController" , UpdateController ) ;
59
59
60
60
return testInjector ;
@@ -78,7 +78,7 @@ describe("update controller method tests", () => {
78
78
sandbox . stub ( fs , "copyFile" ) . throws ( ) ;
79
79
const updateController = testInjector . resolve ( "updateController" ) ;
80
80
81
- await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
81
+ await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
82
82
83
83
assert . isTrue ( deleteDirectory . calledWith ( path . join ( projectFolder , UpdateController . backupFolder ) ) ) ;
84
84
assert . isFalse ( deleteDirectory . calledWith ( path . join ( projectFolder , "platforms" ) ) ) ;
@@ -90,7 +90,7 @@ describe("update controller method tests", () => {
90
90
const copyFileStub = sandbox . stub ( fs , "copyFile" ) ;
91
91
const updateController = testInjector . resolve ( "updateController" ) ;
92
92
93
- await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
93
+ await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
94
94
95
95
assert . isTrue ( copyFileStub . calledWith ( path . join ( projectFolder , "package.json" ) ) ) ;
96
96
for ( const folder of UpdateController . folders ) {
@@ -108,11 +108,94 @@ describe("update controller method tests", () => {
108
108
const updateController = testInjector . resolve ( "updateController" ) ;
109
109
const tempDir = path . join ( projectFolder , UpdateController . backupFolder ) ;
110
110
111
- await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
111
+ await updateController . update ( { projectDir : projectFolder , version : "3.3.0" } ) ;
112
112
113
113
assert . isTrue ( copyFileStub . calledWith ( path . join ( tempDir , "package.json" ) , projectFolder ) ) ;
114
114
for ( const folder of UpdateController . folders ) {
115
115
assert . isTrue ( copyFileStub . calledWith ( path . join ( tempDir , folder ) , projectFolder ) ) ;
116
116
}
117
117
} ) ;
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
+ }
118
201
} ) ;
0 commit comments