This repository has been archived by the owner on Mar 24, 2022. It is now read-only.
/
PCKResponseParserSpec.mm
69 lines (51 loc) · 2.15 KB
/
PCKResponseParserSpec.mm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#import <Cedar/SpecHelper.h>
#import <OCMock/OCMock.h>
#import <PivotalSpecHelperKit/PivotalSpecHelperKit.h>
#import "PCKResponseParser.h"
#import "PCKParser.h"
SPEC_BEGIN(PCKResponseParserSpec)
describe(@"PCKResponseParser", ^{
__block PCKResponseParser *responseParser;
__block id mockParser, mockDelegate;
beforeEach(^{
mockParser = [OCMockObject niceMockForProtocol:@protocol(PCKParser)];
mockDelegate = [OCMockObject niceMockForProtocol:@protocol(NSURLConnectionDataDelegate)];
responseParser = [[PCKResponseParser alloc] initWithParser:mockParser andDelegate:mockDelegate];
});
afterEach(^{
[responseParser release];
});
describe(@"on success response", ^{
NSData *data = [NSData dataWithBytes:"12345" length:5];
__block NSURLResponse *response;
__block void (^returnResponse)();
beforeEach(^{
response = [[[PSHKFakeHTTPURLResponse alloc] initWithStatusCode:200 andHeaders:[NSDictionary dictionary] andBody:nil] autorelease];
returnResponse = [^{
[responseParser connection:nil didReceiveResponse:response];
[responseParser connection:nil didReceiveData:data];
[responseParser connectionDidFinishLoading:nil];
} copy];
});
it(@"should pass returned data to the parser", ^{
[[mockParser expect] parseChunk:data];
returnResponse();
[mockParser verify];
});
it(@"should notify the delegate of success", ^{
[[mockDelegate expect] connection:nil didReceiveResponse:response];
[[mockDelegate expect] connectionDidFinishLoading:nil];
returnResponse();
[mockDelegate verify];
});
});
describe(@"on connection failure", ^{
it(@"should notify the delegate of the error", ^{
NSError *error = [NSError errorWithDomain:@"An error" code:7 userInfo:nil];
[[mockDelegate expect] connection:nil didFailWithError:error];
[responseParser connection:nil didFailWithError:error];
[mockDelegate verify];
});
});
});
SPEC_END