16
16
#import " CCUnitTestAssertions.h"
17
17
#import " CCDirector.h"
18
18
#import " AppDelegate.h"
19
+ #import " CCPackageCocos2dEnabler.h"
20
+ #import " CCPackageManager_private.h"
19
21
20
22
21
23
static NSString *const PACKAGE_BASE_URL = @" http://manager.test" ;
@@ -271,11 +273,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
271
273
272
274
_packageManager.installedPackagesPath = customInstallPath;
273
275
274
- CCPackage *package = [[CCPackage alloc ] initWithName: @" testpackage"
275
- resolution: @" phonehd"
276
- os: @" iOS"
277
- remoteURL: [[NSURL URLWithString: PACKAGE_BASE_URL]
278
- URLByAppendingPathComponent: @" testpackage-iOS-phonehd.zip" ]];
276
+ CCPackage *package = [self testPackage ];
279
277
280
278
[_packageManager downloadPackage: package enableAfterDownload: NO ];
281
279
@@ -286,31 +284,117 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
286
284
XCTAssertEqual (package.status , CCPackageStatusInstalledDisabled);
287
285
}
288
286
289
- /*
290
- - (void)testLoadPackages
287
+ - (void )testEnablePackage
291
288
{
292
- XCTFail(@"Not implemented yet.");
289
+ CCPackage *package = [self testPackage ];
290
+
291
+ NSString *pathToPackage = [[[NSBundle mainBundle ] bundlePath ] stringByAppendingPathComponent: @" Resources-shared/Packages/testpackage-iOS-phonehd_unzipped" ];
292
+ package.installURL = [[NSURL fileURLWithPath: pathToPackage] URLByAppendingPathComponent: @" testpackage-iOS-phonehd" ];
293
+ package.status = CCPackageStatusInstalledDisabled;
294
+
295
+ NSError *error;
296
+ BOOL success = [_packageManager enablePackage: package error: &error];
297
+
298
+ XCTAssertTrue (success);
299
+ XCTAssertNil (error);
300
+ XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
301
+ XCTAssertEqual (package.status , CCPackageStatusInstalledEnabled);
302
+ }
303
+
304
+ - (void )testEnableNonDisabledPackage
305
+ {
306
+ CCPackage *package = [self testPackageWithStatus: CCPackageStatusDownloaded];
307
+
308
+ NSError *error;
309
+ BOOL success = [_packageManager enablePackage: package error: &error];
310
+
311
+ XCTAssertFalse (success);
312
+ XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_ENABLE_NON_DISABLED_PACKAGE);
313
+ XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
314
+ XCTAssertEqual (package.status , CCPackageStatusDownloaded);
293
315
}
294
316
295
317
- (void )testDisablePackage
296
318
{
297
- XCTFail(@"Not implemented yet.");
319
+ CCPackage *package = [self testPackageWithStatus: CCPackageStatusInstalledEnabled];
320
+
321
+ NSError *error;
322
+ BOOL success = [_packageManager disablePackage: package error: &error];
323
+
324
+ XCTAssertTrue (success);
325
+ XCTAssertNil (error);
326
+ XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
327
+ XCTAssertEqual (package.status , CCPackageStatusInstalledDisabled);
298
328
}
299
329
300
- - (void)testEnablePackage
330
+ - (void )testDisableNonEnabledPackage
301
331
{
302
- XCTFail(@"Not implemented yet.");
332
+ CCPackage *package = [self testPackageWithStatus: CCPackageStatusUnzipped];
333
+
334
+ NSError *error;
335
+ BOOL success = [_packageManager disablePackage: package error: &error];
336
+
337
+ XCTAssertFalse (success);
338
+ XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_DISABLE_NON_ENABLED_PACKAGE);
339
+ XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
340
+ XCTAssertEqual (package.status , CCPackageStatusUnzipped);
303
341
}
304
342
305
- - (void)testDeletePackage
343
+ - (void )testDeleteInstalledPackage
306
344
{
307
- XCTFail(@"Not implemented yet.");
345
+ CCPackage *package = [self testPackageWithStatus: CCPackageStatusInstalledEnabled];
346
+ [_packageManager.packages addObject: package];
347
+
348
+ NSError *error;
349
+ BOOL success = [_packageManager deletePackage: package error: &error];
350
+
351
+ XCTAssertTrue (success);
352
+
353
+ BOOL isInSearchPath = NO ;
354
+ for (NSString *aSearchPath in [CCFileUtils sharedFileUtils ].searchPath )
355
+ {
356
+ if ([aSearchPath isEqualToString: package.installURL.path])
357
+ {
358
+ isInSearchPath = YES ;
359
+ }
360
+ }
361
+
362
+ XCTAssertFalse (isInSearchPath);
363
+
364
+ NSFileManager *fileManager = [NSFileManager defaultManager ];
365
+ XCTAssertFalse ([fileManager fileExistsAtPath: package.installURL.path]);
366
+ XCTAssertNil ([_packageManager packageWithName: @" testpackage" ]);
308
367
}
309
368
369
+ - (void )testDeleteUnzippingPackage
370
+ {
371
+ CCPackage *package = [self testPackage ];
372
+ package.status = CCPackageStatusUnzipping;
373
+ [_packageManager.packages addObject: package];
374
+
375
+ NSError *error;
376
+ BOOL success = [_packageManager deletePackage: package error: &error];
377
+
378
+ XCTAssertFalse (success);
379
+ XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_DELETE_UNZIPPING_PACKAGE);
380
+ XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
381
+ }
382
+
383
+ - (void )testDeleteDownloadingPackage
384
+ {
385
+
386
+ }
387
+
388
+ /*
310
389
- (void)testCancelDownload
311
390
{
312
391
XCTFail(@"Not implemented yet.");
313
392
}
393
+
394
+ - (void)testLoadPackages
395
+ {
396
+ XCTFail(@"Not implemented yet.");
397
+ }
314
398
*/
315
399
316
400
- (void )testAllOtherDownloadRelatedMethods
@@ -367,7 +451,45 @@ - (NSString *)customFolderName:(CCPackage *)package packageContents:(NSArray *)p
367
451
368
452
369
453
370
- #pragma mark - helper
454
+
455
+ #pragma mark - Fixtures
456
+
457
+ - (CCPackage *)testPackage
458
+ {
459
+ return [self testPackageWithStatus: CCPackageStatusInitial];
460
+ }
461
+
462
+ - (CCPackage *)testPackageWithStatus : (CCPackageStatus)status
463
+ {
464
+ CCPackage *package = [[CCPackage alloc ] initWithName: @" testpackage"
465
+ resolution: @" phonehd"
466
+ os: @" iOS"
467
+ remoteURL: [[NSURL URLWithString: PACKAGE_BASE_URL]
468
+ URLByAppendingPathComponent: @" testpackage-iOS-phonehd.zip" ]];
469
+ package.status = status;
470
+
471
+ if (status == CCPackageStatusInstalledDisabled
472
+ || status == CCPackageStatusInstalledEnabled)
473
+ {
474
+ NSString *pathToPackage = [[[NSBundle mainBundle ] bundlePath ] stringByAppendingPathComponent: @" Resources-shared/Packages/testpackage-iOS-phonehd_unzipped/testpackage-iOS-phonehd" ];
475
+
476
+ NSFileManager *fileManager = [NSFileManager defaultManager ];
477
+
478
+ package.installURL = [NSURL fileURLWithPath: [_packageManager.installedPackagesPath stringByAppendingPathComponent: @" testpackage-iOS-phonehd" ]];
479
+
480
+ [fileManager copyItemAtPath: pathToPackage toPath: package.installURL.path error: nil ];
481
+ }
482
+
483
+ if (status == CCPackageStatusInstalledEnabled)
484
+ {
485
+ CCPackageCocos2dEnabler *packageEnabler = [[CCPackageCocos2dEnabler alloc ] init ];
486
+ [packageEnabler enablePackages: @[package]];
487
+ }
488
+
489
+ return package;
490
+ }
491
+
492
+ #pragma mark - Helper
371
493
372
494
- (void )waitForDelegateToReturn
373
495
{
0 commit comments