Skip to content

Commit 3cfc261

Browse files
committed
CCPackageDownloadManager: more unit tests added.
Some tidying up of tests.
1 parent f472aeb commit 3cfc261

File tree

1 file changed

+74
-21
lines changed

1 file changed

+74
-21
lines changed

UnitTests/CCPackageDownloadManagerTests.m

Lines changed: 74 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ - (void)stopLoading
5555

5656
@end
5757

58+
5859
@interface CCPackageDownloadManagerTests : XCTestCase <CCPackageDownloadManagerDelegate>
5960

6061
@property (nonatomic, strong) CCPackageDownloadManager *downloadManager;
@@ -99,6 +100,8 @@ - (void)deleteOldDownloads
99100
[fileManager removeItemAtPath:_downloadPath error:nil];
100101
}
101102

103+
#pragma mark - Tests
104+
102105
- (void)testSetDownloadPath
103106
{
104107
NSString *newPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"NewDownloads"];
@@ -114,35 +117,21 @@ - (void)testSetDownloadPath
114117

115118
- (void)testTwoDownloads
116119
{
117-
CCPackage *package1 = [[CCPackage alloc] initWithName:@"package1" resolution:@"phonehd" os:@"iOS" remoteURL:[NSURL URLWithString:@"http://package.fake/package1"]];
118-
CCPackageInstallData *installData1 = [[CCPackageInstallData alloc] init];
119-
[package1 setInstallData:installData1];
120-
121-
CCPackage *package2 = [[CCPackage alloc] initWithName:@"package2" resolution:@"phonehd" os:@"iOS" remoteURL:[NSURL URLWithString:@"http://package.fake/package2"]];
122-
CCPackageInstallData *installData2 = [[CCPackageInstallData alloc] init];
123-
[package2 setInstallData:installData2];
120+
NSArray *packages = @[[self completePackageWithName:@"package1"], [self completePackageWithName:@"package2"]];
124121

125-
[_downloadManager enqueuePackageForDownload:package1];
126-
[_downloadManager enqueuePackageForDownload:package2];
127-
128-
while (!_allDownloadsReturned)
122+
for (CCPackage *aPackage in packages)
129123
{
130-
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
124+
[_downloadManager enqueuePackageForDownload:aPackage];
131125
}
132126

133-
NSFileManager *fileManager = [NSFileManager defaultManager];
134-
XCTAssertTrue([fileManager fileExistsAtPath:[package1 installData].localDownloadURL.path]);
135-
XCTAssertTrue([fileManager fileExistsAtPath:[package2 installData].localDownloadURL.path]);
127+
[self waitUntilDelegateReturns];
136128

137-
CCAssertEqualStrings(@"package1", [NSString stringWithContentsOfFile:[package1 installData].localDownloadURL.path encoding:NSUTF8StringEncoding error:nil]);
138-
CCAssertEqualStrings(@"package2", [NSString stringWithContentsOfFile:[package2 installData].localDownloadURL.path encoding:NSUTF8StringEncoding error:nil]);
129+
[self assertPackagesDownloadedAndContentsAreAsExpected:packages];
139130
}
140131

141132
- (void)testCancelDownload
142133
{
143-
CCPackage *package1 = [[CCPackage alloc] initWithName:@"package1" resolution:@"phonehd" os:@"iOS" remoteURL:[NSURL URLWithString:@"http://package.fake/package1"]];
144-
CCPackageInstallData *installData1 = [[CCPackageInstallData alloc] init];
145-
[package1 setInstallData:installData1];
134+
CCPackage *package1 = [self completePackageWithName:@"package1"];
146135

147136
[_downloadManager enqueuePackageForDownload:package1];
148137
[_downloadManager cancelDownloadOfPackage:package1];
@@ -155,8 +144,72 @@ - (void)testCancelDownload
155144
XCTAssertFalse([fileManager fileExistsAtPath:[package1 installData].localDownloadURL.path]);
156145
}
157146

147+
- (void)testPauseAndResumeAllDownloads
148+
{
149+
NSArray *packages = @[[self completePackageWithName:@"package1"],
150+
[self completePackageWithName:@"package2"],
151+
[self completePackageWithName:@"package3"]];
152+
153+
for (CCPackage *aPackage in packages)
154+
{
155+
[_downloadManager enqueuePackageForDownload:aPackage];
156+
}
157+
158+
[_downloadManager pauseAllDownloads];
159+
[_downloadManager resumeAllDownloads];
160+
161+
[self waitUntilDelegateReturns];
162+
163+
[self assertPackagesDownloadedAndContentsAreAsExpected:packages];
164+
}
165+
166+
- (void)testEnqueuePausedPackage
167+
{
168+
CCPackage *package1 = [self completePackageWithName:@"package1"];
169+
170+
[_downloadManager enqueuePackageForDownload:package1];
171+
[_downloadManager pauseDownloadOfPackage:package1];
172+
[_downloadManager enqueuePackageForDownload:package1];
173+
174+
[self waitUntilDelegateReturns];
175+
176+
[self assertPackagesDownloadedAndContentsAreAsExpected:@[package1]];
177+
}
178+
179+
- (void)waitUntilDelegateReturns
180+
{
181+
while (!_allDownloadsReturned)
182+
{
183+
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
184+
}
185+
}
186+
187+
188+
#pragma mark - Helpers
189+
190+
- (void)assertPackagesDownloadedAndContentsAreAsExpected:(NSArray *)packages
191+
{
192+
NSFileManager *fileManager = [NSFileManager defaultManager];
193+
for (CCPackage *aPackage in packages)
194+
{
195+
XCTAssertTrue([fileManager fileExistsAtPath:[aPackage installData].localDownloadURL.path]);
196+
CCAssertEqualStrings(aPackage.name, [NSString stringWithContentsOfFile:[aPackage installData].localDownloadURL.path encoding:NSUTF8StringEncoding error:nil]);
197+
}
198+
}
199+
200+
201+
#pragma mark - Fixtures
202+
203+
- (CCPackage *)completePackageWithName:(NSString *)name
204+
{
205+
CCPackage *package = [[CCPackage alloc] initWithName:name resolution:@"phonehd" os:@"iOS" remoteURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://package.fake/%@", name]]];
206+
CCPackageInstallData *installData = [[CCPackageInstallData alloc] init];
207+
[package setInstallData:installData];
208+
209+
return package;
210+
}
158211

159-
#pragma mark -
212+
#pragma mark - CCPackageDownloadManagerDelegate
160213

161214
- (void)downloadFinishedOfPackage:(CCPackage *)package
162215
{

0 commit comments

Comments
 (0)