Skip to content

Commit ddfbff2

Browse files
committed
CCPackageManager unit tests added for loadPackages.
Cancelling the download of a package won't remove it from management any more. Some renaming of fixture class since it also contains some arbitrary helpers.
1 parent 019272a commit ddfbff2

File tree

7 files changed

+135
-47
lines changed

7 files changed

+135
-47
lines changed

UnitTests/CCPackageManagerTests.m

Lines changed: 100 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
#import "AppDelegate.h"
1919
#import "CCPackageCocos2dEnabler.h"
2020
#import "CCPackageManager_private.h"
21-
#import "CCPackagesTestFixtures.h"
21+
#import "CCPackagesTestFixturesAndHelpers.h"
22+
#import "CCPackageDownloadManager.h"
2223

2324

2425
static NSString *const PACKAGE_BASE_URL = @"http://manager.test";
@@ -113,6 +114,7 @@ - (void)setUp
113114
[CCFileUtils sharedFileUtils].searchResolutionsOrder = [@[CCFileUtilsSuffixiPhoneHD] mutableCopy];
114115

115116
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:PACKAGE_STORAGE_USERDEFAULTS_KEY];
117+
[[NSUserDefaults standardUserDefaults] synchronize];
116118

117119
[NSURLProtocol registerClass:[CCPackageManagerTestURLProtocol class]];
118120
}
@@ -274,7 +276,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
274276

275277
_packageManager.installedPackagesPath = customInstallPath;
276278

277-
CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath:_packageManager.installedPackagesPath];
279+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageInitial];
278280

279281
[_packageManager downloadPackage:package enableAfterDownload:NO];
280282

@@ -287,7 +289,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
287289

288290
- (void)testEnablePackage
289291
{
290-
CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath:_packageManager.installedPackagesPath];
292+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageInitial];
291293

292294
NSString *pathToPackage = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Resources-shared/Packages/testpackage-iOS-phonehd_unzipped"];
293295
package.installURL = [[NSURL fileURLWithPath:pathToPackage] URLByAppendingPathComponent:@"testpackage-iOS-phonehd"];
@@ -304,7 +306,8 @@ - (void)testEnablePackage
304306

305307
- (void)testEnableNonDisabledPackage
306308
{
307-
CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus:CCPackageStatusInitial installFolderPath:_packageManager.installedPackagesPath];
309+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusInitial installFolderPath:_packageManager
310+
.installedPackagesPath];
308311

309312
NSError *error;
310313
BOOL success = [_packageManager enablePackage:package error:&error];
@@ -317,7 +320,8 @@ - (void)testEnableNonDisabledPackage
317320

318321
- (void)testDisablePackage
319322
{
320-
CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus:CCPackageStatusInstalledEnabled installFolderPath:_packageManager.installedPackagesPath];
323+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusInstalledEnabled installFolderPath:_packageManager
324+
.installedPackagesPath];
321325

322326
NSError *error;
323327
BOOL success = [_packageManager disablePackage:package error:&error];
@@ -330,7 +334,8 @@ - (void)testDisablePackage
330334

331335
- (void)testDisableNonEnabledPackage
332336
{
333-
CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus:CCPackageStatusInitial installFolderPath:_packageManager.installedPackagesPath];
337+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusInitial installFolderPath:_packageManager
338+
.installedPackagesPath];
334339

335340
NSError *error;
336341
BOOL success = [_packageManager disablePackage:package error:&error];
@@ -343,7 +348,8 @@ - (void)testDisableNonEnabledPackage
343348

344349
- (void)testDeleteInstalledPackage
345350
{
346-
CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus:CCPackageStatusInstalledEnabled installFolderPath:_packageManager.installedPackagesPath];
351+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusInstalledEnabled installFolderPath:_packageManager
352+
.installedPackagesPath];
347353
[_packageManager.packages addObject:package];
348354

349355
NSArray *urls = [self copyOfURLsOfPackage:package];
@@ -353,16 +359,7 @@ - (void)testDeleteInstalledPackage
353359

354360
XCTAssertTrue(success);
355361

356-
BOOL isInSearchPath = NO;
357-
for (NSString *aSearchPath in [CCFileUtils sharedFileUtils].searchPath)
358-
{
359-
if ([aSearchPath isEqualToString:package.installURL.path])
360-
{
361-
isInSearchPath = YES;
362-
}
363-
}
364-
365-
XCTAssertFalse(isInSearchPath);
362+
XCTAssertFalse([CCPackagesTestFixturesAndHelpers isURLInCocos2dSearchPath:package.installURL]);
366363

367364
NSFileManager *fileManager = [NSFileManager defaultManager];
368365
XCTAssertFalse([fileManager fileExistsAtPath:package.installURL.path]);
@@ -374,7 +371,8 @@ - (void)testDeleteInstalledPackage
374371

375372
- (void)testDeleteUnzippedPackage
376373
{
377-
CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus:CCPackageStatusUnzipped installFolderPath:_packageManager.installedPackagesPath];
374+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusUnzipped installFolderPath:_packageManager
375+
.installedPackagesPath];
378376
[_packageManager.packages addObject:package];
379377

380378
NSArray *urls = [self copyOfURLsOfPackage:package];
@@ -391,7 +389,8 @@ - (void)testDeleteUnzippedPackage
391389

392390
- (void)testDeleteDownloadedPackage
393391
{
394-
CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus:CCPackageStatusDownloaded installFolderPath:_packageManager.installedPackagesPath];
392+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusDownloaded installFolderPath:_packageManager
393+
.installedPackagesPath];
395394
[_packageManager.packages addObject:package];
396395

397396
NSArray *urls = [self copyOfURLsOfPackage:package];
@@ -416,7 +415,7 @@ - (void)assertURLsAreNilledStatusIsDeleted:(CCPackage *)package
416415

417416
- (void)testDeleteUnzippingPackage
418417
{
419-
CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath:_packageManager.installedPackagesPath];
418+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageInitial];
420419
package.status = CCPackageStatusUnzipping;
421420
package.localDownloadURL = [NSURL fileURLWithPath:@"/Foo"];
422421
package.unzipURL = [NSURL fileURLWithPath:@"/Baa"];
@@ -436,17 +435,31 @@ - (void)testDeleteUnzippingPackage
436435
XCTAssertEqual(package.status, CCPackageStatusUnzipping);
437436
}
438437

439-
/*
440438
- (void)testCancelDownload
441439
{
442-
XCTFail(@"Not implemented yet.");
440+
_packageManager.baseURL = [NSURL URLWithString:PACKAGE_BASE_URL];
441+
CCPackage *package = [_packageManager downloadPackageWithName:@"testpackage" enableAfterDownload:YES];
442+
443+
[_packageManager cancelDownloadOfPackage:package];
444+
445+
NSFileManager *fileManager = [NSFileManager defaultManager];
446+
NSArray *filesInDownloadFolder = [fileManager contentsOfDirectoryAtPath:_packageManager.downloadManager.downloadPath error:nil];
447+
448+
XCTAssertEqual(filesInDownloadFolder.count, 0);
449+
XCTAssertEqual(_packageManager.downloadManager.allDownloads.count, 0);
450+
XCTAssertEqual(package.status, CCPackageStatusInitial);
451+
XCTAssertEqual(_packageManager.allPackages.count, 1);
443452
}
444453

445-
- (void)testLoadPackages
454+
- (void)testCancelDownloadOfPackageThatIsInstalled
446455
{
447-
XCTFail(@"Not implemented yet.");
456+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusInstalledDisabled installFolderPath:_packageManager
457+
.installedPackagesPath];
458+
459+
[_packageManager cancelDownloadOfPackage:package];
460+
461+
XCTAssertEqual(package.status, CCPackageStatusInstalledDisabled);
448462
}
449-
*/
450463

451464
- (void)testAllOtherDownloadRelatedMethods
452465
{
@@ -459,6 +472,67 @@ - (void)testAllOtherDownloadRelatedMethods
459472
*/
460473
}
461474

475+
- (void)testLoadPackagesReEnable
476+
{
477+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusInstalledDisabled installFolderPath:_packageManager.installedPackagesPath];
478+
// To simulate the loadPackages we need an installed but not actually enabled package just the status has to state it is enabled.
479+
package.status = CCPackageStatusInstalledEnabled;
480+
481+
CCPackage *package2 = [CCPackagesTestFixturesAndHelpers testPackageInitial];
482+
483+
NSArray *packages = @[[package toDictionary], [package2 toDictionary]];
484+
485+
[[NSUserDefaults standardUserDefaults] setValue:packages forKey:PACKAGE_STORAGE_USERDEFAULTS_KEY];
486+
[[NSUserDefaults standardUserDefaults] synchronize];
487+
488+
[_packageManager loadPackages];
489+
490+
XCTAssertEqual(_packageManager.allPackages.count, 2);
491+
XCTAssertTrue([CCPackagesTestFixturesAndHelpers isURLInCocos2dSearchPath:package.installURL]);
492+
}
493+
494+
- (void)testLoadPackagesResumeDownloads
495+
{
496+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageInitial];
497+
package.status = CCPackageStatusDownloadPaused;
498+
package.enableOnDownload = NO;
499+
500+
NSString *fileName = [NSString stringWithFormat:@"%@.zip", [package standardIdentifier]];
501+
package.localDownloadURL = [NSURL fileURLWithPath:[_packageManager.downloadManager.downloadPath stringByAppendingPathComponent:fileName]];
502+
503+
NSArray *packages = @[[package toDictionary]];
504+
505+
[[NSUserDefaults standardUserDefaults] setValue:packages forKey:PACKAGE_STORAGE_USERDEFAULTS_KEY];
506+
[[NSUserDefaults standardUserDefaults] synchronize];
507+
508+
[_packageManager loadPackages];
509+
510+
[self waitForDelegateToReturn];
511+
512+
XCTAssertTrue(_managerReturnedSuccessfully);
513+
CCPackage *loadedPackage = _packageManager.allPackages[0];
514+
XCTAssertEqual(loadedPackage.status, CCPackageStatusInstalledDisabled);
515+
}
516+
517+
- (void)testLoadPackagesRestartUnzipping
518+
{
519+
CCPackage *package = [CCPackagesTestFixturesAndHelpers testPackageWithStatus:CCPackageStatusDownloaded installFolderPath:_packageManager.installedPackagesPath];
520+
package.enableOnDownload = NO;
521+
522+
NSArray *packages = @[[package toDictionary]];
523+
524+
[[NSUserDefaults standardUserDefaults] setValue:packages forKey:PACKAGE_STORAGE_USERDEFAULTS_KEY];
525+
[[NSUserDefaults standardUserDefaults] synchronize];
526+
527+
[_packageManager loadPackages];
528+
529+
[self waitForDelegateToReturn];
530+
531+
XCTAssertTrue(_managerReturnedSuccessfully);
532+
CCPackage *loadedPackage = _packageManager.allPackages[0];
533+
XCTAssertEqual(loadedPackage.status, CCPackageStatusInstalledDisabled);
534+
}
535+
462536

463537
#pragma mark - CCPackageManagerDelegate
464538

@@ -505,7 +579,7 @@ - (NSString *)customFolderName:(CCPackage *)package packageContents:(NSArray *)p
505579

506580
- (void)waitForDelegateToReturn
507581
{
508-
[CCPackagesTestFixtures waitForCondition:^bool {
582+
[CCPackagesTestFixturesAndHelpers waitForCondition:^bool {
509583
return !_managerReturnedFailed && !_managerReturnedSuccessfully;
510584
}];
511585
}

UnitTests/CCPackagesTestFixtures.h renamed to UnitTests/CCPackagesTestFixturesAndHelpers.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
typedef bool(^WaitConditionBlock)(void);
77

88

9-
@interface CCPackagesTestFixtures : NSObject
9+
@interface CCPackagesTestFixturesAndHelpers : NSObject
1010

11-
+ (CCPackage *)testPackageWithInstallFolderPath:(NSString *)installFolderPath;
11+
+ (CCPackage *)testPackageInitial;
1212

1313
+ (CCPackage *)testPackageWithStatus:(CCPackageStatus)status installFolderPath:(NSString *)installFolderPath;
1414

1515
+ (void)waitForCondition:(WaitConditionBlock)waitConditionBlock;
1616

17+
+ (BOOL)isURLInCocos2dSearchPath:(NSURL *)URL;
18+
1719
@end

UnitTests/CCPackagesTestFixtures.m renamed to UnitTests/CCPackagesTestFixturesAndHelpers.m

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
#import "CCPackagesTestFixtures.h"
1+
#import "CCPackagesTestFixturesAndHelpers.h"
22
#import "CCPackageTypes.h"
33
#import "CCPackage.h"
44
#import "CCPackageCocos2dEnabler.h"
55
#import "CCPackage_private.h"
6+
#import "CCFileUtils.h"
67

78

9+
@implementation CCPackagesTestFixturesAndHelpers
810

9-
@implementation CCPackagesTestFixtures
10-
11-
+ (CCPackage *)testPackageWithInstallFolderPath:(NSString *)installFolderPath
11+
+ (CCPackage *)testPackageInitial
1212
{
13-
return [self testPackageWithStatus:CCPackageStatusInitial installFolderPath:installFolderPath];
13+
return [self testPackageWithStatus:CCPackageStatusInitial installFolderPath:nil];
1414
}
1515

1616
+ (CCPackage *)testPackageWithStatus:(CCPackageStatus)status installFolderPath:(NSString *)installFolderPath
@@ -45,7 +45,7 @@ + (CCPackage *)testPackageWithStatus:(CCPackageStatus)status installFolderPath:(
4545
NSString *pathDownloadFolder = [NSTemporaryDirectory() stringByAppendingPathComponent:@"Downloads"];
4646
[fileManager createDirectoryAtPath:pathDownloadFolder withIntermediateDirectories:YES attributes:nil error:nil];
4747

48-
package.localDownloadURL = [NSURL fileURLWithPath:[pathDownloadFolder stringByAppendingPathComponent:@"testpackage-iOS-phonehd"]];
48+
package.localDownloadURL = [NSURL fileURLWithPath:[pathDownloadFolder stringByAppendingPathComponent:@"testpackage-iOS-phonehd.zip"]];
4949

5050
[fileManager copyItemAtPath:pathToZippedPackage toPath:package.localDownloadURL.path error:nil];
5151
}
@@ -71,4 +71,16 @@ + (void)waitForCondition:(WaitConditionBlock)waitConditionBlock
7171
}
7272
}
7373

74+
+ (BOOL)isURLInCocos2dSearchPath:(NSURL *)URL
75+
{
76+
for (NSString *aSearchPath in [CCFileUtils sharedFileUtils].searchPath)
77+
{
78+
if ([aSearchPath isEqualToString:URL.path])
79+
{
80+
return YES;
81+
}
82+
}
83+
return NO;
84+
}
85+
7486
@end

cocos2d-tests-ios.xcodeproj/project.pbxproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@
151151
E525F81797DA5573FC26BEBB /* CCPackageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E525F771C583AAF68EB42E15 /* CCPackageTests.m */; };
152152
E525FA44681404CC22A3A8D9 /* CCPackageUnzipperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E525F30DA34A6712527102E5 /* CCPackageUnzipperTests.m */; };
153153
E525FCAF2CC6D200B8065E2E /* CCPackageCocos2dEnablerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E525FB8A3CC89D071A8377B1 /* CCPackageCocos2dEnablerTests.m */; };
154-
E525FCD390330D4F4EBD76CC /* CCPackagesTestFixtures.m in Sources */ = {isa = PBXBuildFile; fileRef = E525FF94F200689F83438E37 /* CCPackagesTestFixtures.m */; };
154+
E525FCD390330D4F4EBD76CC /* CCPackagesTestFixturesAndHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = E525FF94F200689F83438E37 /* CCPackagesTestFixturesAndHelpers.m */; };
155155
E525FF2E8351476CDD7DEAC4 /* CCPackageManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E525F395FE85323D86232416 /* CCPackageManagerTests.m */; };
156156
E525FFABB4646A7446269A98 /* CCUnitTestAssertions.h in Resources */ = {isa = PBXBuildFile; fileRef = E525F832B569117922DA339E /* CCUnitTestAssertions.h */; };
157157
/* End PBXBuildFile section */
@@ -371,8 +371,8 @@
371371
E525F99055258F35DFF00ECD /* CCPackageHelperTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageHelperTests.m; sourceTree = "<group>"; };
372372
E525FB8A3CC89D071A8377B1 /* CCPackageCocos2dEnablerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageCocos2dEnablerTests.m; sourceTree = "<group>"; };
373373
E525FBF58DFECF27272F5D6F /* CCPackageInstallerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageInstallerTests.m; sourceTree = "<group>"; };
374-
E525FCB52B23A4F29E8D6D64 /* CCPackagesTestFixtures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackagesTestFixtures.h; sourceTree = "<group>"; };
375-
E525FF94F200689F83438E37 /* CCPackagesTestFixtures.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackagesTestFixtures.m; sourceTree = "<group>"; };
374+
E525FCB52B23A4F29E8D6D64 /* CCPackagesTestFixturesAndHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackagesTestFixturesAndHelpers.h; sourceTree = "<group>"; };
375+
E525FF94F200689F83438E37 /* CCPackagesTestFixturesAndHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackagesTestFixturesAndHelpers.m; sourceTree = "<group>"; };
376376
/* End PBXFileReference section */
377377

378378
/* Begin PBXFrameworksBuildPhase section */
@@ -773,8 +773,8 @@
773773
E525F771C583AAF68EB42E15 /* CCPackageTests.m */,
774774
E525F395FE85323D86232416 /* CCPackageManagerTests.m */,
775775
E525F99055258F35DFF00ECD /* CCPackageHelperTests.m */,
776-
E525FF94F200689F83438E37 /* CCPackagesTestFixtures.m */,
777-
E525FCB52B23A4F29E8D6D64 /* CCPackagesTestFixtures.h */,
776+
E525FF94F200689F83438E37 /* CCPackagesTestFixturesAndHelpers.m */,
777+
E525FCB52B23A4F29E8D6D64 /* CCPackagesTestFixturesAndHelpers.h */,
778778
);
779779
name = Packages;
780780
sourceTree = "<group>";
@@ -1022,7 +1022,7 @@
10221022
E525FF2E8351476CDD7DEAC4 /* CCPackageManagerTests.m in Sources */,
10231023
E525F033EECC363CA8EAF2A6 /* CCPackageDownloadManagerTests.m in Sources */,
10241024
E525F4D0568A8A4176684936 /* CCPackageHelperTests.m in Sources */,
1025-
E525FCD390330D4F4EBD76CC /* CCPackagesTestFixtures.m in Sources */,
1025+
E525FCD390330D4F4EBD76CC /* CCPackagesTestFixturesAndHelpers.m in Sources */,
10261026
);
10271027
runOnlyForDeploymentPostprocessing = 0;
10281028
};

cocos2d/CCPackageManager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,9 @@
182182
- (BOOL)deletePackage:(CCPackage *)package error:(NSError **)error;
183183

184184
/**
185-
* Cancels the download of a package.
186-
* This will remove the package from the download manager as well from the package manager if the status is in one of the download states:
185+
* Cancels the download of a package if the package has one of the following status:
187186
* CCPackageStatusDownloadPaused, CCPackageStatusDownloading, CCPackageStatusDownloaded, CCPackageStatusDownloadFailed
187+
* Status of package is reset to CCPackageStatusInitial.
188188
*
189189
* @param package The package which download should be cancelled
190190
*/

cocos2d/CCPackageManager.m

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ - (void)restartUnzippingTasks
9292
continue;
9393
}
9494

95-
if (aPackage.status == CCPackageStatusUnzipped
95+
if (aPackage.status == CCPackageStatusDownloaded
96+
|| aPackage.status == CCPackageStatusUnzipped
9697
|| aPackage.status == CCPackageStatusUnzipping)
9798
{
9899
[self unzipPackage:aPackage];
@@ -720,11 +721,7 @@ - (void)cancelDownloadOfPackage:(CCPackage *)package
720721
return;
721722
}
722723

723-
[_packages removeObject:package];
724-
725724
[_downloadManager cancelDownloadOfPackage:package];
726-
727-
[self savePackages];
728725
}
729726

730727
- (void)pauseDownloadOfPackage:(CCPackage *)package

cocos2d/CCPackageManager_private.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#import "CCPackageManager.h"
22

3+
@class CCPackageDownloadManager;
4+
35
@interface CCPackageManager()
46

57
@property (nonatomic, strong, readwrite) NSMutableArray *packages;
8+
@property (nonatomic, strong) CCPackageDownloadManager *downloadManager;
69

710
@end

0 commit comments

Comments
 (0)