#import <Kiwi/Kiwi.h>
#import "UCService.h"
#import "AppManager.h"
SPEC_BEGIN(UCServiceClass)
describe(@"UCService", ^{
UCService *__block ucService = nil;
AppManager *__block appManager = nil;
beforeEach(^{
ucService = [[UCService alloc] init];
});
beforeAll(^{
appManager = [AppManager manager];
});
context(@"test requests", ^{
it(@"when test request register image", ^{
[[ucService shouldNot] beNil];
RACSignal *signal = [ucService getRegisterImageAuthCode];
[[signal shouldNot] beNil];
__block ResponseModel *result = nil;
[signal subscribeNext:^(id x) {
result = x;
}];
[[expectFutureValue(result) shouldEventually] beKindOfClass:[ResponseModel class]];
[[expectFutureValue(result.body) shouldEventually] beNonNil];
[[expectFutureValue(result.body.allKeys) shouldEventually] contain:@"code"];
});
context(@"modify password", ^{
ResponseModel *__block responseModel = nil;
it(@"when test modify password", ^{
[appManager clearUserInfo:^(BOOL completed) {
}];
UCService* __weak weakUCService = ucService;
RACSignal *signal = [[ucService loginWithTel:@"17317969263" password:@"999999"] flattenMap:^RACStream *(id value) {
UCService* __strong strongUCService = weakUCService;
return [strongUCService modifyPassowrdWithOldPassowrd:@"999999"newPwd:@"999999"confirmNewPwd:@"999999"];
}];
[[signal shouldNot] beNil];
[signal subscribeNext:^(id x) {
responseModel = x;
}];
[[expectFutureValue(responseModel.body) shouldEventually] beKindOfClass:[NSDictionary class]];
[[expectFutureValue(responseModel.body) shouldEventually] beNonNil];
[[expectFutureValue(responseModel.head.responseCode) shouldEventually] equal:@"0000"];
});
context(@"sub context1", ^{
//内嵌上下文/描述会在外围上下文执行完后才执行
it(@"when received result", ^{
[[responseModel.head.responseMsg shouldNot] beNil];
});
});
});
context(@"login context with right account info", ^{
// 测试正确账号的情况
ResponseModel *__block loginResponse = nil;
it(@"login with telephone with ", ^{
[appManager clearUserInfo:^(BOOL completed) { }];
RACSignal *signal = [ucService loginWithTel:@"17317969263" password:@"999999"];
[signal subscribeNext:^(id x) {
loginResponse = x;
}];
[[expectFutureValue(loginResponse) shouldEventually] beKindOfClass:[ResponseModel class]];
[[expectFutureValue(loginResponse.head) shouldEventually] beNonNil];
[[expectFutureValue(loginResponse.head.responseCode) should] equal:@"000000"];
});
context(@"anylize response", ^{
// 如果response还有多个子控制状态可以在nested context中做处理
});
});
context(@"login context with wrong account info", ^{
// 测试错误账号的情况
Error *__block loginError = nil;
it(@"login with telephone with ", ^{
[appManager clearUserInfo:^(BOOL completed) {
}];
RACSignal *signal = [ucService loginWithTel:@"17317969263" password:@"123456"];
[signal subscribeError:^(NSError *error) {
loginError = (Error *)error;
}];
[[expectFutureValue(loginError) shouldEventually] beKindOfClass:[Error class]];
[[expectFutureValue(loginError.errMsg) shouldNot] beNil];
[[expectFutureValue(loginError.errCode) shouldNot] beNil];
[[expectFutureValue(loginError.errMsg) shouldNot] beEmpty];
[[expectFutureValue(loginError.errCode) shouldNot] beEmpty];
[[expectFutureValue(loginError.errCode) shouldNot] equal:@"0000"];
});
});
});
});
SPEC_END