@@ -12,6 +12,7 @@ import StaticConfigLib = require("../lib/config");
12
12
import NpmLib = require( "../lib/node-package-manager" ) ;
13
13
import HttpClientLib = require( "../lib/common/http-client" ) ;
14
14
import fsLib = require( "../lib/common/file-system" ) ;
15
+ import platformServiceLib = require( "../lib/services/platform-service" ) ;
15
16
16
17
import path = require( "path" ) ;
17
18
import temp = require( "temp" ) ;
@@ -65,7 +66,7 @@ class ProjectIntegrationTest {
65
66
var projectDir = path . join ( tempFolder , projectName ) ;
66
67
var appDirectoryPath = path . join ( projectDir , "app" ) ;
67
68
var platformsDirectoryPath = path . join ( projectDir , "platforms" ) ;
68
- var tnsProjectFilePath = path . join ( projectDir , "package.json" ) ;
69
+ let tnsProjectFilePath = path . join ( projectDir , "package.json" ) ;
69
70
70
71
assert . isTrue ( fs . exists ( appDirectoryPath ) . wait ( ) ) ;
71
72
assert . isTrue ( fs . exists ( platformsDirectoryPath ) . wait ( ) ) ;
@@ -142,55 +143,133 @@ describe("Project Service Tests", () => {
142
143
} ) ;
143
144
} ) ;
144
145
145
-
146
- function createOldProjectFile ( testInjector : IInjector , tempFolder : string , projectData : any ) : void {
147
- testInjector . resolve ( "fs" ) . writeJson ( path . join ( tempFolder , ".tnsproject" ) , projectData ) . wait ( ) ;
148
- }
149
-
150
146
function createTestInjector ( ) {
151
147
var testInjector = new yok . Yok ( ) ;
152
148
153
- this . testInjector . register ( "errors" , stubs . ErrorsStub ) ;
154
- this . testInjector . register ( 'logger' , stubs . LoggerStub ) ;
155
- this . testInjector . register ( "projectService" , ProjectServiceLib . ProjectService ) ;
156
- this . testInjector . register ( "projectHelper" , ProjectHelperLib . ProjectHelper ) ;
157
- this . testInjector . register ( "projectTemplatesService" , stubs . ProjectTemplatesService ) ;
158
- this . testInjector . register ( "projectNameValidator" , mockProjectNameValidator ) ;
159
-
160
- this . testInjector . register ( "fs" , fsLib . FileSystem ) ;
161
- this . testInjector . register ( "projectDataService" , ProjectDataServiceLib . ProjectDataService ) ; this . testInjector . register ( )
149
+ testInjector . register ( "errors" , stubs . ErrorsStub ) ;
150
+ testInjector . register ( 'logger' , stubs . LoggerStub ) ;
151
+ testInjector . register ( "projectService" , ProjectServiceLib . ProjectService ) ;
152
+ testInjector . register ( "projectHelper" , ProjectHelperLib . ProjectHelper ) ;
153
+ testInjector . register ( "projectTemplatesService" , stubs . ProjectTemplatesService ) ;
154
+ testInjector . register ( "projectNameValidator" , mockProjectNameValidator ) ;
155
+
156
+ testInjector . register ( "fs" , fsLib . FileSystem ) ;
157
+ testInjector . register ( "projectDataService" , ProjectDataServiceLib . ProjectDataService ) ;
162
158
163
- this . testInjector . register ( "staticConfig" , StaticConfigLib . StaticConfig ) ;
159
+ testInjector . register ( "staticConfig" , StaticConfigLib . StaticConfig ) ;
164
160
165
- this . testInjector . register ( "npm" , NpmLib . NodePackageManager ) ;
166
- this . testInjector . register ( "httpClient" , HttpClientLib . HttpClient ) ;
167
- this . testInjector . register ( "config" , { } ) ;
168
- this . testInjector . register ( "lockfile" , stubs . LockFile ) ;
161
+ testInjector . register ( "npm" , NpmLib . NodePackageManager ) ;
162
+ testInjector . register ( "httpClient" , HttpClientLib . HttpClient ) ;
163
+ testInjector . register ( "config" , { } ) ;
164
+ testInjector . register ( "lockfile" , stubs . LockFile ) ;
165
+
166
+ testInjector . register ( 'projectData' , ProjectDataLib . ProjectData ) ;
169
167
170
168
return testInjector ;
171
169
}
172
170
173
171
describe ( "project upgrade procedure tests" , ( ) => {
174
172
it ( "should throw error when no nativescript project folder specified" , ( ) => {
173
+ var testInjector = createTestInjector ( ) ;
175
174
var tempFolder = temp . mkdirSync ( "project upgrade" ) ;
176
175
options . path = tempFolder ;
176
+ var isErrorThrown = false ;
177
+
178
+ try {
179
+ testInjector . resolve ( "projectData" ) ; // This should trigger upgrade procedure
180
+ } catch ( err ) {
181
+ isErrorThrown = true ;
182
+ var expectedErrorMessage = "No project found at or above '%s' and neither was a --path specified.," + tempFolder ;
183
+ assert . equal ( expectedErrorMessage , err . toString ( ) ) ;
184
+ }
185
+
186
+ assert . isTrue ( isErrorThrown ) ;
177
187
} ) ;
178
- it ( "should upgrade project when .tnsproject file exists and package.json doesn't exist" , ( ) => {
188
+ it ( "should upgrade project when .tnsproject file exists but package.json file doesn't exist" , ( ) => {
179
189
var testInjector = createTestInjector ( ) ;
190
+ var fs : IFileSystem = testInjector . resolve ( "fs" ) ;
191
+
192
+ var tempFolder = temp . mkdirSync ( "projectUpgradeTest2" ) ;
193
+ options . path = tempFolder ;
180
194
var tnsProjectData = {
181
195
"id" : "org.nativescript.Test" ,
182
196
"tns-ios" : {
183
197
"version" : "1.0.0"
184
198
}
185
199
} ;
186
- var projectData = testInjector . resolve ( projectDataLib . ProjectData )
187
- createOldProjectFile ( testInjector , tempFolder , tnsProjectData ) ;
188
- options . path = tempFolder ;
189
- } ) ;
190
- it ( "should upgrade project when .tnsproject and package.json exist and nativescript key is not presented in package.json file" , ( ) => {
200
+ var tnsProjectFilePath = path . join ( tempFolder , ".tnsproject" ) ;
201
+ fs . writeJson ( tnsProjectFilePath , tnsProjectData ) . wait ( ) ;
202
+
203
+ testInjector . resolve ( "projectData" ) ; // This should trigger upgrade procedure
204
+
205
+ var packageJsonFilePath = path . join ( tempFolder , "package.json" ) ;
206
+ var packageJsonFileContent = require ( packageJsonFilePath ) ;
207
+ assert . isTrue ( fs . exists ( packageJsonFilePath ) . wait ( ) ) ;
208
+ assert . isFalse ( fs . exists ( tnsProjectFilePath ) . wait ( ) ) ;
209
+ assert . deepEqual ( tnsProjectData , packageJsonFileContent [ "nativescript" ] ) ;
210
+ } ) ;
211
+ it ( "should upgrade project when .tnsproject and package.json exist but nativescript key is not presented in package.json file" , ( ) => {
212
+ var testInjector = createTestInjector ( ) ;
213
+ var fs : IFileSystem = testInjector . resolve ( "fs" ) ;
214
+
215
+ var tempFolder = temp . mkdirSync ( "projectUpgradeTest3" ) ;
216
+ options . path = tempFolder ;
217
+ var tnsProjectData = {
218
+ "id" : "org.nativescript.Test" ,
219
+ "tns-ios" : {
220
+ "version" : "1.0.1"
221
+ }
222
+ } ;
223
+ var packageJsonData = {
224
+ "name" : "testModuleName" ,
225
+ "version" : "0.0.0" ,
226
+ "dependencies" : {
227
+ "myFirstDep" : "0.0.1"
228
+ }
229
+ }
230
+ let tnsProjectFilePath = path . join ( tempFolder , ".tnsproject" ) ;
231
+ fs . writeJson ( tnsProjectFilePath , tnsProjectData ) . wait ( ) ;
232
+
233
+ var packageJsonFilePath = path . join ( tempFolder , "package.json" ) ;
234
+ fs . writeJson ( packageJsonFilePath , packageJsonData ) . wait ( ) ;
235
+
236
+ testInjector . resolve ( "projectData" ) ; // This should trigger upgrade procedure
191
237
238
+ var packageJsonFileContent = require ( packageJsonFilePath ) ;
239
+ var expectedPackageJsonContent : any = packageJsonData ;
240
+ expectedPackageJsonContent [ "nativescript" ] = tnsProjectData ;
241
+ assert . deepEqual ( expectedPackageJsonContent , packageJsonFileContent ) ;
192
242
} ) ;
193
243
it ( "shouldn't upgrade project when .tnsproject and package.json exist and nativescript key is presented in package.json file" , ( ) => {
244
+ var testInjector = createTestInjector ( ) ;
245
+ var fs : IFileSystem = testInjector . resolve ( "fs" ) ;
246
+
247
+ var tempFolder = temp . mkdirSync ( "projectUpgradeTest4" ) ;
248
+ options . path = tempFolder ;
249
+ var tnsProjectData = {
250
+
251
+ } ;
252
+ var packageJsonData = {
253
+ "name" : "testModuleName" ,
254
+ "version" : "0.0.0" ,
255
+ "dependencies" : {
256
+ "myFirstDep" : "0.0.2"
257
+ } ,
258
+ "nativescript" : {
259
+ "id" : "org.nativescript.Test" ,
260
+ "tns-ios" : {
261
+ "version" : "1.0.2"
262
+ }
263
+ }
264
+ }
265
+
266
+ fs . writeJson ( path . join ( tempFolder , ".tnsproject" ) , tnsProjectData ) . wait ( ) ;
267
+ fs . writeJson ( path . join ( tempFolder , "package.json" ) , packageJsonData ) . wait ( ) ;
268
+ testInjector . resolve ( "projectData" ) ; // This should trigger upgrade procedure
269
+
270
+ var packageJsonFilePath = path . join ( tempFolder , "package.json" ) ;
271
+ var packageJsonFileContent = require ( packageJsonFilePath ) ;
194
272
273
+ assert . deepEqual ( packageJsonData , packageJsonFileContent ) ;
195
274
} ) ;
196
- } ) ;
275
+ } ) ;
0 commit comments