1616#import " CCUnitTestAssertions.h"
1717#import " CCDirector.h"
1818#import " AppDelegate.h"
19+ #import " CCPackageCocos2dEnabler.h"
20+ #import " CCPackageManager_private.h"
1921
2022
2123static NSString *const PACKAGE_BASE_URL = @" http://manager.test" ;
@@ -271,11 +273,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
271273
272274 _packageManager.installedPackagesPath = customInstallPath;
273275
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 ];
279277
280278 [_packageManager downloadPackage: package enableAfterDownload: NO ];
281279
@@ -286,31 +284,117 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
286284 XCTAssertEqual (package.status , CCPackageStatusInstalledDisabled);
287285}
288286
289- /*
290- - (void)testLoadPackages
287+ - (void )testEnablePackage
291288{
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);
293315}
294316
295317- (void )testDisablePackage
296318{
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);
298328}
299329
300- - (void)testEnablePackage
330+ - (void )testDisableNonEnabledPackage
301331{
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);
303341}
304342
305- - (void)testDeletePackage
343+ - (void )testDeleteInstalledPackage
306344{
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" ]);
308367}
309368
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+ /*
310389- (void)testCancelDownload
311390{
312391 XCTFail(@"Not implemented yet.");
313392}
393+
394+ - (void)testLoadPackages
395+ {
396+ XCTFail(@"Not implemented yet.");
397+ }
314398*/
315399
316400- (void )testAllOtherDownloadRelatedMethods
@@ -367,7 +451,45 @@ - (NSString *)customFolderName:(CCPackage *)package packageContents:(NSArray *)p
367451
368452
369453
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
371493
372494- (void )waitForDelegateToReturn
373495{
0 commit comments