| // | |
| // UIRefreshControlRACSupportSpec.m | |
| // ReactiveCocoa | |
| // | |
| // Created by Dave Lee on 2013-10-17. | |
| // Copyright (c) 2013 GitHub, Inc. All rights reserved. | |
| // | |
| #import "UIRefreshControl+RACCommandSupport.h" | |
| #import "NSObject+RACSelectorSignal.h" | |
| #import "RACControlCommandExamples.h" | |
| #import "RACCommand.h" | |
| #import "RACSignal.h" | |
| SpecBegin(UIRefreshControlRACSupport) | |
| describe(@"UIRefreshControl", ^{ | |
| __block UIRefreshControl *refreshControl; | |
| beforeEach(^{ | |
| refreshControl = [[UIRefreshControl alloc] init]; | |
| expect(refreshControl).notTo.beNil(); | |
| }); | |
| itShouldBehaveLike(RACControlCommandExamples, ^{ | |
| return @{ | |
| RACControlCommandExampleControl: refreshControl, | |
| RACControlCommandExampleActivateBlock: ^(UIRefreshControl *refreshControl) { | |
| [refreshControl sendActionsForControlEvents:UIControlEventValueChanged]; | |
| } | |
| }; | |
| }); | |
| describe(@"finishing", ^{ | |
| __block RACSignal *commandSignal; | |
| __block BOOL refreshingEnded; | |
| beforeEach(^{ | |
| refreshControl.rac_command = [[RACCommand alloc] initWithSignalBlock:^(id _) { | |
| return commandSignal; | |
| }]; | |
| // Just -rac_signalForSelector: posing as a mock. | |
| refreshingEnded = NO; | |
| [[refreshControl | |
| rac_signalForSelector:@selector(endRefreshing)] | |
| subscribeNext:^(id _) { | |
| refreshingEnded = YES; | |
| }]; | |
| }); | |
| it(@"should call -endRefreshing upon completion", ^{ | |
| commandSignal = [RACSignal empty]; | |
| [refreshControl sendActionsForControlEvents:UIControlEventValueChanged]; | |
| expect(refreshingEnded).will.beTruthy(); | |
| }); | |
| it(@"should call -endRefreshing upon error", ^{ | |
| commandSignal = [RACSignal error:[NSError errorWithDomain:@"" code:1 userInfo:nil]]; | |
| [refreshControl sendActionsForControlEvents:UIControlEventValueChanged]; | |
| expect(refreshingEnded).will.beTruthy(); | |
| }); | |
| }); | |
| }); | |
| SpecEnd |