blob: 0a9b651d9161bac54c92e2ba301cc8a75ae66a1b [file] [log] [blame] [edit]
//
// 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