1818#import " AppDelegate.h"
1919#import " CCPackageCocos2dEnabler.h"
2020#import " CCPackageManager_private.h"
21+ #import " CCPackagesTestFixtures.h"
2122
2223
2324static NSString *const PACKAGE_BASE_URL = @" http://manager.test" ;
@@ -273,7 +274,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
273274
274275 _packageManager.installedPackagesPath = customInstallPath;
275276
276- CCPackage *package = [self testPackage ];
277+ CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath: _packageManager.installedPackagesPath ];
277278
278279 [_packageManager downloadPackage: package enableAfterDownload: NO ];
279280
@@ -286,7 +287,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
286287
287288- (void )testEnablePackage
288289{
289- CCPackage *package = [self testPackage ];
290+ CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath: _packageManager.installedPackagesPath ];
290291
291292 NSString *pathToPackage = [[[NSBundle mainBundle ] bundlePath ] stringByAppendingPathComponent: @" Resources-shared/Packages/testpackage-iOS-phonehd_unzipped" ];
292293 package.installURL = [[NSURL fileURLWithPath: pathToPackage] URLByAppendingPathComponent: @" testpackage-iOS-phonehd" ];
@@ -303,20 +304,20 @@ - (void)testEnablePackage
303304
304305- (void )testEnableNonDisabledPackage
305306{
306- CCPackage *package = [self testPackageWithStatus: CCPackageStatusDownloaded ];
307+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInitial installFolderPath: _packageManager.installedPackagesPath ];
307308
308309 NSError *error;
309310 BOOL success = [_packageManager enablePackage: package error: &error];
310311
311312 XCTAssertFalse (success);
312313 XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_ENABLE_NON_DISABLED_PACKAGE);
313314 XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
314- XCTAssertEqual (package.status , CCPackageStatusDownloaded );
315+ XCTAssertEqual (package.status , CCPackageStatusInitial );
315316}
316317
317318- (void )testDisablePackage
318319{
319- CCPackage *package = [self testPackageWithStatus: CCPackageStatusInstalledEnabled];
320+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInstalledEnabled installFolderPath: _packageManager.installedPackagesPath ];
320321
321322 NSError *error;
322323 BOOL success = [_packageManager disablePackage: package error: &error];
@@ -329,22 +330,24 @@ - (void)testDisablePackage
329330
330331- (void )testDisableNonEnabledPackage
331332{
332- CCPackage *package = [self testPackageWithStatus: CCPackageStatusUnzipped ];
333+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInitial installFolderPath: _packageManager.installedPackagesPath ];
333334
334335 NSError *error;
335336 BOOL success = [_packageManager disablePackage: package error: &error];
336337
337338 XCTAssertFalse (success);
338339 XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_DISABLE_NON_ENABLED_PACKAGE);
339340 XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
340- XCTAssertEqual (package.status , CCPackageStatusUnzipped );
341+ XCTAssertEqual (package.status , CCPackageStatusInitial );
341342}
342343
343344- (void )testDeleteInstalledPackage
344345{
345- CCPackage *package = [self testPackageWithStatus: CCPackageStatusInstalledEnabled];
346+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInstalledEnabled installFolderPath: _packageManager.installedPackagesPath ];
346347 [_packageManager.packages addObject: package];
347348
349+ NSArray *urls = [self copyOfURLsOfPackage: package];
350+
348351 NSError *error;
349352 BOOL success = [_packageManager deletePackage: package error: &error];
350353
@@ -364,12 +367,61 @@ - (void)testDeleteInstalledPackage
364367 NSFileManager *fileManager = [NSFileManager defaultManager ];
365368 XCTAssertFalse ([fileManager fileExistsAtPath: package.installURL.path]);
366369 XCTAssertNil ([_packageManager packageWithName: @" testpackage" ]);
370+ XCTAssertTrue ([self allURLsInArrayDontExistOnDisk: urls]);
371+
372+ [self assertURLsAreNilledStatusIsDeleted: package];
373+ }
374+
375+ - (void )testDeleteUnzippedPackage
376+ {
377+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusUnzipped installFolderPath: _packageManager.installedPackagesPath];
378+ [_packageManager.packages addObject: package];
379+
380+ NSArray *urls = [self copyOfURLsOfPackage: package];
381+
382+ NSError *error;
383+ BOOL success = [_packageManager deletePackage: package error: &error];
384+
385+ XCTAssertTrue (success);
386+ XCTAssertNil ([_packageManager packageWithName: @" testpackage" ]);
387+ XCTAssertTrue ([self allURLsInArrayDontExistOnDisk: urls]);
388+
389+ [self assertURLsAreNilledStatusIsDeleted: package];
390+ }
391+
392+ - (void )testDeleteDownloadedPackage
393+ {
394+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusDownloaded installFolderPath: _packageManager.installedPackagesPath];
395+ [_packageManager.packages addObject: package];
396+
397+ NSArray *urls = [self copyOfURLsOfPackage: package];
398+
399+ NSError *error;
400+ BOOL success = [_packageManager deletePackage: package error: &error];
401+
402+ XCTAssertTrue (success);
403+ XCTAssertNil ([_packageManager packageWithName: @" testpackage" ]);
404+ XCTAssertTrue ([self allURLsInArrayDontExistOnDisk: urls]);
405+
406+ [self assertURLsAreNilledStatusIsDeleted: package];
407+ }
408+
409+ - (void )assertURLsAreNilledStatusIsDeleted : (CCPackage *)package
410+ {
411+ XCTAssertNil (package.localDownloadURL );
412+ XCTAssertNil (package.unzipURL );
413+ XCTAssertNil (package.installURL );
414+ XCTAssertEqual (package.status , CCPackageStatusDeleted);
367415}
368416
369417- (void )testDeleteUnzippingPackage
370418{
371- CCPackage *package = [self testPackage ];
419+ CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath: _packageManager.installedPackagesPath ];
372420 package.status = CCPackageStatusUnzipping;
421+ package.localDownloadURL = [NSURL fileURLWithPath: @" /Foo" ];
422+ package.unzipURL = [NSURL fileURLWithPath: @" /Baa" ];
423+ package.installURL = [NSURL fileURLWithPath: @" /Fubar" ];
424+
373425 [_packageManager.packages addObject: package];
374426
375427 NSError *error;
@@ -378,11 +430,10 @@ - (void)testDeleteUnzippingPackage
378430 XCTAssertFalse (success);
379431 XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_DELETE_UNZIPPING_PACKAGE);
380432 XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
381- }
382-
383- - (void )testDeleteDownloadingPackage
384- {
385-
433+ XCTAssertNotNil (package.localDownloadURL );
434+ XCTAssertNotNil (package.unzipURL );
435+ XCTAssertNotNil (package.installURL );
436+ XCTAssertEqual (package.status , CCPackageStatusUnzipping);
386437}
387438
388439/*
@@ -450,54 +501,48 @@ - (NSString *)customFolderName:(CCPackage *)package packageContents:(NSArray *)p
450501}
451502
452503
504+ #pragma mark - Helper
453505
454-
455- #pragma mark - Fixtures
456-
457- - (CCPackage *)testPackage
506+ - (void )waitForDelegateToReturn
458507{
459- return [self testPackageWithStatus: CCPackageStatusInitial];
508+ [CCPackagesTestFixtures waitForCondition: ^bool {
509+ return !_managerReturnedFailed && !_managerReturnedSuccessfully;
510+ }];
460511}
461512
462- - (CCPackage *)testPackageWithStatus : (CCPackageStatus) status
513+ - (NSArray *)copyOfURLsOfPackage : (CCPackage *) package
463514{
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;
515+ NSMutableArray *result = [NSMutableArray array ];
470516
471- if (status == CCPackageStatusInstalledDisabled
472- || status == CCPackageStatusInstalledEnabled)
517+ if (package.installURL )
473518 {
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" ]];
519+ [result addObject: [package.installURL copy ]];
520+ }
479521
480- [fileManager copyItemAtPath: pathToPackage toPath: package.installURL.path error: nil ];
522+ if (package.localDownloadURL )
523+ {
524+ [result addObject: [package.localDownloadURL copy ]];
481525 }
482526
483- if (status == CCPackageStatusInstalledEnabled )
527+ if (package. unzipURL )
484528 {
485- CCPackageCocos2dEnabler *packageEnabler = [[CCPackageCocos2dEnabler alloc ] init ];
486- [packageEnabler enablePackages: @[package]];
529+ [result addObject: [package.unzipURL copy ]];
487530 }
488531
489- return package ;
532+ return result ;
490533}
491534
492- #pragma mark - Helper
493-
494- - (void )waitForDelegateToReturn
535+ - (BOOL )allURLsInArrayDontExistOnDisk : (NSArray *)urls
495536{
496- while (!_managerReturnedFailed
497- && !_managerReturnedSuccessfully)
537+ for (NSURL *url in urls)
498538 {
499- [[NSRunLoop currentRunLoop ] runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture ]];
539+ NSFileManager *fileManager = [NSFileManager defaultManager ];
540+ if ([fileManager fileExistsAtPath: url.path])
541+ {
542+ return NO ;
543+ }
500544 }
545+ return YES ;
501546}
502547
503548@end
0 commit comments