18
18
#import " AppDelegate.h"
19
19
#import " CCPackageCocos2dEnabler.h"
20
20
#import " CCPackageManager_private.h"
21
+ #import " CCPackagesTestFixtures.h"
21
22
22
23
23
24
static NSString *const PACKAGE_BASE_URL = @" http://manager.test" ;
@@ -273,7 +274,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
273
274
274
275
_packageManager.installedPackagesPath = customInstallPath;
275
276
276
- CCPackage *package = [self testPackage ];
277
+ CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath: _packageManager.installedPackagesPath ];
277
278
278
279
[_packageManager downloadPackage: package enableAfterDownload: NO ];
279
280
@@ -286,7 +287,7 @@ - (void)testDownloadOfPackageWithDifferentInstallPath
286
287
287
288
- (void )testEnablePackage
288
289
{
289
- CCPackage *package = [self testPackage ];
290
+ CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath: _packageManager.installedPackagesPath ];
290
291
291
292
NSString *pathToPackage = [[[NSBundle mainBundle ] bundlePath ] stringByAppendingPathComponent: @" Resources-shared/Packages/testpackage-iOS-phonehd_unzipped" ];
292
293
package.installURL = [[NSURL fileURLWithPath: pathToPackage] URLByAppendingPathComponent: @" testpackage-iOS-phonehd" ];
@@ -303,20 +304,20 @@ - (void)testEnablePackage
303
304
304
305
- (void )testEnableNonDisabledPackage
305
306
{
306
- CCPackage *package = [self testPackageWithStatus: CCPackageStatusDownloaded ];
307
+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInitial installFolderPath: _packageManager.installedPackagesPath ];
307
308
308
309
NSError *error;
309
310
BOOL success = [_packageManager enablePackage: package error: &error];
310
311
311
312
XCTAssertFalse (success);
312
313
XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_ENABLE_NON_DISABLED_PACKAGE);
313
314
XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
314
- XCTAssertEqual (package.status , CCPackageStatusDownloaded );
315
+ XCTAssertEqual (package.status , CCPackageStatusInitial );
315
316
}
316
317
317
318
- (void )testDisablePackage
318
319
{
319
- CCPackage *package = [self testPackageWithStatus: CCPackageStatusInstalledEnabled];
320
+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInstalledEnabled installFolderPath: _packageManager.installedPackagesPath ];
320
321
321
322
NSError *error;
322
323
BOOL success = [_packageManager disablePackage: package error: &error];
@@ -329,22 +330,24 @@ - (void)testDisablePackage
329
330
330
331
- (void )testDisableNonEnabledPackage
331
332
{
332
- CCPackage *package = [self testPackageWithStatus: CCPackageStatusUnzipped ];
333
+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInitial installFolderPath: _packageManager.installedPackagesPath ];
333
334
334
335
NSError *error;
335
336
BOOL success = [_packageManager disablePackage: package error: &error];
336
337
337
338
XCTAssertFalse (success);
338
339
XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_DISABLE_NON_ENABLED_PACKAGE);
339
340
XCTAssertNotNil ([_packageManager packageWithName: @" testpackage" ]);
340
- XCTAssertEqual (package.status , CCPackageStatusUnzipped );
341
+ XCTAssertEqual (package.status , CCPackageStatusInitial );
341
342
}
342
343
343
344
- (void )testDeleteInstalledPackage
344
345
{
345
- CCPackage *package = [self testPackageWithStatus: CCPackageStatusInstalledEnabled];
346
+ CCPackage *package = [CCPackagesTestFixtures testPackageWithStatus: CCPackageStatusInstalledEnabled installFolderPath: _packageManager.installedPackagesPath ];
346
347
[_packageManager.packages addObject: package];
347
348
349
+ NSArray *urls = [self copyOfURLsOfPackage: package];
350
+
348
351
NSError *error;
349
352
BOOL success = [_packageManager deletePackage: package error: &error];
350
353
@@ -364,12 +367,61 @@ - (void)testDeleteInstalledPackage
364
367
NSFileManager *fileManager = [NSFileManager defaultManager ];
365
368
XCTAssertFalse ([fileManager fileExistsAtPath: package.installURL.path]);
366
369
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);
367
415
}
368
416
369
417
- (void )testDeleteUnzippingPackage
370
418
{
371
- CCPackage *package = [self testPackage ];
419
+ CCPackage *package = [CCPackagesTestFixtures testPackageWithInstallFolderPath: _packageManager.installedPackagesPath ];
372
420
package.status = CCPackageStatusUnzipping;
421
+ package.localDownloadURL = [NSURL fileURLWithPath: @" /Foo" ];
422
+ package.unzipURL = [NSURL fileURLWithPath: @" /Baa" ];
423
+ package.installURL = [NSURL fileURLWithPath: @" /Fubar" ];
424
+
373
425
[_packageManager.packages addObject: package];
374
426
375
427
NSError *error;
@@ -378,11 +430,10 @@ - (void)testDeleteUnzippingPackage
378
430
XCTAssertFalse (success);
379
431
XCTAssertEqual (error.code , PACKAGE_ERROR_MANAGER_CANNOT_DELETE_UNZIPPING_PACKAGE);
380
432
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);
386
437
}
387
438
388
439
/*
@@ -450,54 +501,48 @@ - (NSString *)customFolderName:(CCPackage *)package packageContents:(NSArray *)p
450
501
}
451
502
452
503
504
+ #pragma mark - Helper
453
505
454
-
455
- #pragma mark - Fixtures
456
-
457
- - (CCPackage *)testPackage
506
+ - (void )waitForDelegateToReturn
458
507
{
459
- return [self testPackageWithStatus: CCPackageStatusInitial];
508
+ [CCPackagesTestFixtures waitForCondition: ^bool {
509
+ return !_managerReturnedFailed && !_managerReturnedSuccessfully;
510
+ }];
460
511
}
461
512
462
- - (CCPackage *)testPackageWithStatus : (CCPackageStatus) status
513
+ - (NSArray *)copyOfURLsOfPackage : (CCPackage *) package
463
514
{
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 ];
470
516
471
- if (status == CCPackageStatusInstalledDisabled
472
- || status == CCPackageStatusInstalledEnabled)
517
+ if (package.installURL )
473
518
{
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
+ }
479
521
480
- [fileManager copyItemAtPath: pathToPackage toPath: package.installURL.path error: nil ];
522
+ if (package.localDownloadURL )
523
+ {
524
+ [result addObject: [package.localDownloadURL copy ]];
481
525
}
482
526
483
- if (status == CCPackageStatusInstalledEnabled )
527
+ if (package. unzipURL )
484
528
{
485
- CCPackageCocos2dEnabler *packageEnabler = [[CCPackageCocos2dEnabler alloc ] init ];
486
- [packageEnabler enablePackages: @[package]];
529
+ [result addObject: [package.unzipURL copy ]];
487
530
}
488
531
489
- return package ;
532
+ return result ;
490
533
}
491
534
492
- #pragma mark - Helper
493
-
494
- - (void )waitForDelegateToReturn
535
+ - (BOOL )allURLsInArrayDontExistOnDisk : (NSArray *)urls
495
536
{
496
- while (!_managerReturnedFailed
497
- && !_managerReturnedSuccessfully)
537
+ for (NSURL *url in urls)
498
538
{
499
- [[NSRunLoop currentRunLoop ] runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture ]];
539
+ NSFileManager *fileManager = [NSFileManager defaultManager ];
540
+ if ([fileManager fileExistsAtPath: url.path])
541
+ {
542
+ return NO ;
543
+ }
500
544
}
545
+ return YES ;
501
546
}
502
547
503
548
@end
0 commit comments