diff --git a/YH_Analytics/YH_Analytics.xcodeproj/project.pbxproj b/YH_Analytics/YH_Analytics.xcodeproj/project.pbxproj index 48a5987..2761f57 100644 --- a/YH_Analytics/YH_Analytics.xcodeproj/project.pbxproj +++ b/YH_Analytics/YH_Analytics.xcodeproj/project.pbxproj @@ -30,6 +30,7 @@ CA7AC79E1ADE0C3900F30791 /* YHDeviceFactoryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA7AC79D1ADE0C3900F30791 /* YHDeviceFactoryTests.m */; }; CA7AC7A01ADE0C4F00F30791 /* YHEventFactoryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA7AC79F1ADE0C4F00F30791 /* YHEventFactoryTests.m */; }; CA7AC7A21ADE0C6600F30791 /* YHStatusFactoryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA7AC7A11ADE0C6600F30791 /* YHStatusFactoryTests.m */; }; + CA7AC7A41ADF9FCB00F30791 /* YH_AnalyticsLogicTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA7AC7A31ADF9FCB00F30791 /* YH_AnalyticsLogicTests.m */; }; CABC32831AD7CEB8002A4260 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CABC32821AD7CEB8002A4260 /* libOCMock.a */; }; E74D45B21ABA7C6300EFE12E /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E74D458E1ABA7C6300EFE12E /* AFHTTPRequestOperation.m */; }; E74D45B31ABA7C6300EFE12E /* AFHTTPRequestOperationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E74D45901ABA7C6300EFE12E /* AFHTTPRequestOperationManager.m */; }; @@ -126,6 +127,7 @@ CA7AC79D1ADE0C3900F30791 /* YHDeviceFactoryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YHDeviceFactoryTests.m; sourceTree = "<group>"; }; CA7AC79F1ADE0C4F00F30791 /* YHEventFactoryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YHEventFactoryTests.m; sourceTree = "<group>"; }; CA7AC7A11ADE0C6600F30791 /* YHStatusFactoryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YHStatusFactoryTests.m; sourceTree = "<group>"; }; + CA7AC7A31ADF9FCB00F30791 /* YH_AnalyticsLogicTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YH_AnalyticsLogicTests.m; sourceTree = "<group>"; }; CABC32791AD7CE40002A4260 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = "<group>"; }; CABC327A1AD7CE40002A4260 /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = "<group>"; }; CABC327B1AD7CE40002A4260 /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = "<group>"; }; @@ -291,6 +293,7 @@ CA7AC78D1ADE08AF00F30791 /* ModelTest */, CA7AC78C1ADE088D00F30791 /* UtilsTest */, 194EDC8F1A7F52D100421E6C /* YH_AnalyticsTests.m */, + CA7AC7A31ADF9FCB00F30791 /* YH_AnalyticsLogicTests.m */, CA7AC7821ADE06F300F30791 /* YHCrashReporterTests.m */, CA7AC7841ADE073200F30791 /* NSString+YHAnalyticsTests.m */, 194EDC8D1A7F52D100421E6C /* Supporting Files */, @@ -688,6 +691,7 @@ CA7AC7931ADE08F000F30791 /* YHEventTests.m in Sources */, CA7AC7851ADE073200F30791 /* NSString+YHAnalyticsTests.m in Sources */, CA7AC79E1ADE0C3900F30791 /* YHDeviceFactoryTests.m in Sources */, + CA7AC7A41ADF9FCB00F30791 /* YH_AnalyticsLogicTests.m in Sources */, CA7AC79A1ADE0BD500F30791 /* YHDataFactoryTests.m in Sources */, CA7AC79C1ADE0C0800F30791 /* YHErrorFactoryTests.m in Sources */, CA7AC7A01ADE0C4F00F30791 /* YHEventFactoryTests.m in Sources */, diff --git a/YH_Analytics/YH_Analytics/AppDelegate.m b/YH_Analytics/YH_Analytics/AppDelegate.m index e75a101..937521c 100644 --- a/YH_Analytics/YH_Analytics/AppDelegate.m +++ b/YH_Analytics/YH_Analytics/AppDelegate.m @@ -20,18 +20,18 @@ // Override point for customization after application launch. // 设置发送策略 -// [YH_Analytics shareInstance].logStrategy = LogStrategyCustom; +// [YH_Analytics sharedInstance].logStrategy = LogStrategyCustom; // 自定义发送时间,从服务器获取 - [YH_Analytics shareInstance].customInterval = 1000; + [YH_Analytics sharedInstance].customInterval = 1000; // 设置用户id - [YH_Analytics shareInstance].uid = @"0000001"; + [YH_Analytics sharedInstance].uid = @"0000001"; // 启动 - [[YH_Analytics shareInstance]startWithAppId:@"appid"]; + [[YH_Analytics sharedInstance]startWithAppId:@"appid"]; - NSLog(@"logStrategy == %d", [YH_Analytics shareInstance].logStrategy); + NSLog(@"logStrategy == %d", [YH_Analytics sharedInstance].logStrategy); return YES; } diff --git a/YH_Analytics/YH_Analytics/ViewController.m b/YH_Analytics/YH_Analytics/ViewController.m index cdfb5f5..dd419b0 100644 --- a/YH_Analytics/YH_Analytics/ViewController.m +++ b/YH_Analytics/YH_Analytics/ViewController.m @@ -20,7 +20,7 @@ [super viewDidLoad]; [self.imageView setImage:[UIImage imageNamed:@"stastsold"]]; - self.segment.selectedSegmentIndex = [YH_Analytics shareInstance].logStrategy; + self.segment.selectedSegmentIndex = [YH_Analytics sharedInstance].logStrategy; } - (void)didReceiveMemoryWarning { @@ -31,7 +31,7 @@ - (IBAction)click:(id)sender { for (int i = 0; i< 10; i++) { - [[YH_Analytics shareInstance] logEvent:@"test" parameters: + [[YH_Analytics sharedInstance] logEvent:@"test" parameters: @{@"key1" : [NSString stringWithFormat:@"%d", i], @"key2" : @"v2" }]; @@ -43,7 +43,7 @@ // for (int i = 0; i< 10; i++) { - [[YH_Analytics shareInstance]logError:@"NETWORK" parameters: + [[YH_Analytics sharedInstance]logError:@"NETWORK" parameters: @{JsonKeyErrorEC:@"503", // 错误码 JsonKeyErrorEI:@"getUserAvatar" //发生错误接口 }]; @@ -68,17 +68,17 @@ switch (index) { case 0: { - [YH_Analytics shareInstance].logStrategy = LogStrategyAppLaunch; + [YH_Analytics sharedInstance].logStrategy = LogStrategyAppLaunch; break; } case 1: { - [YH_Analytics shareInstance].logStrategy = LogStrategyCustom; + [YH_Analytics sharedInstance].logStrategy = LogStrategyCustom; [[NSUserDefaults standardUserDefaults] setDouble:60 forKey:kKeyUserDefaultsCustomInterval]; [[NSUserDefaults standardUserDefaults] synchronize]; break; } case 2: { - [YH_Analytics shareInstance].logStrategy = LogStrategyImmedi;; + [YH_Analytics sharedInstance].logStrategy = LogStrategyImmedi;; break; } default: diff --git a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.h b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.h index 03b2813..0277d29 100644 --- a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.h +++ b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.h @@ -31,7 +31,7 @@ extern NSString * const JsonKeyDataTypeErrors; @property (strong, nonatomic) YHStatus *currentStatus; @property (strong, nonatomic) NSMutableDictionary *immediUploadItemDic; // 用于立即发送策略下(device信息是相同的) -+ (instancetype)shareInstance; ++ (instancetype)sharedInstance; - (BOOL)canPersisiting; diff --git a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.m b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.m index 06526b1..f37066d 100644 --- a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.m +++ b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHAssemblyAssistant.m @@ -57,16 +57,16 @@ NSString * const JsonKeyDataTypeErrors = @"errors"; #pragma mark - 初始化 static dispatch_queue_t persisitingQueue; -+ (instancetype)shareInstance ++ (instancetype)sharedInstance { - static YHAssemblyAssistant *_shareInstance; + static YHAssemblyAssistant *_sharedInstance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - _shareInstance = [[YHAssemblyAssistant alloc] init]; + _sharedInstance = [[YHAssemblyAssistant alloc] init]; persisitingQueue = dispatch_queue_create("com.yoho.analytics.persisiting", NULL); }); - return _shareInstance; + return _sharedInstance; } - (id)init @@ -289,7 +289,7 @@ static dispatch_queue_t persisitingQueue; if (data) { - [[YHNetworkAssistant shareInstance] postWhitAPI:kYASApiMethod parameters:data from:self success:^(id responseObject) { + [[YHNetworkAssistant sharedInstance] postWhitAPI:kYASApiMethod parameters:data from:self success:^(id responseObject) { // NSLog(@"responseObject = %@", responseObject); } failure:^(NSError *error) { NSLog(@"error = %@", error.localizedDescription); @@ -299,11 +299,11 @@ static dispatch_queue_t persisitingQueue; - (void)uploadDiskData { - NSDictionary *uploadData = [[YHAssemblyAssistant shareInstance] getUploadData]; + NSDictionary *uploadData = [[YHAssemblyAssistant sharedInstance] getUploadData]; if (uploadData) { - [[YHNetworkAssistant shareInstance] postWhitAPI:kYASApiMethod parameters:uploadData from:self success:^(id responseObject) { + [[YHNetworkAssistant sharedInstance] postWhitAPI:kYASApiMethod parameters:uploadData from:self success:^(id responseObject) { // NSLog(@"responseObject = %@", responseObject); [self removeLocalFile]; } failure:^(NSError *error) { diff --git a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHCrashReporter.m b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHCrashReporter.m index 55696c5..3f903cd 100644 --- a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHCrashReporter.m +++ b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHCrashReporter.m @@ -59,14 +59,14 @@ void uncaughtCrashExceptionHandler(NSException *exception) + (YHCrashReporter *)sharedInstance { - static YHCrashReporter *shareInstance = nil; + static YHCrashReporter *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - shareInstance = [[YHCrashReporter alloc] init]; + sharedInstance = [[YHCrashReporter alloc] init]; }); - return shareInstance; + return sharedInstance; } #pragma mark - Lifetime methods @@ -122,7 +122,7 @@ void uncaughtCrashExceptionHandler(NSException *exception) { NSLog(@"crash============:\n%@", userInfo); if (userInfo) { - [[YH_Analytics shareInstance] logError:@"CRASH" parameters:@{ JsonKeyErrorST: userInfo}]; + [[YH_Analytics sharedInstance] logError:@"CRASH" parameters:@{ JsonKeyErrorST: userInfo}]; } } @@ -130,7 +130,7 @@ void uncaughtCrashExceptionHandler(NSException *exception) { NSLog(@"crash============:\n%@", userInfo); if (userInfo) { - [[YH_Analytics shareInstance] logError:@"CRASH" parameters:@{ JsonKeyErrorST: userInfo}]; + [[YH_Analytics sharedInstance] logError:@"CRASH" parameters:@{ JsonKeyErrorST: userInfo}]; } } diff --git a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.h b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.h index 722c558..24000dc 100644 --- a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.h +++ b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.h @@ -19,7 +19,7 @@ static NSString * const YHEAPIErrorDomain = @"YHEAPIErrorDomain"; #pragma mark - Init -+ (instancetype)shareInstance; ++ (instancetype)sharedInstance; /** * Initializes your network engine with a hostname diff --git a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.m b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.m index 390fda3..f5b5b98 100644 --- a/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.m +++ b/YH_Analytics/YH_Analytics/YH_Analytics/Utils/YHNetworkAssistant.m @@ -28,15 +28,15 @@ AFNetworkReachabilityStatus _currentNetworkStatus; #pragma mark - Init -+ (instancetype)shareInstance ++ (instancetype)sharedInstance { - static YHNetworkAssistant *_shareInstance; + static YHNetworkAssistant *_sharedInstance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sQueue = dispatch_queue_create("cn.yoho.analytics.network.squeue", 0);// create a serial queue _allOperations = [NSMutableSet new]; _reachabilityChangedHandlers = [NSMutableArray array]; - _shareInstance = [[YHNetworkAssistant alloc] initWithHostName:kAnalizedURL apiPath:nil customHeaderFields:nil]; + _sharedInstance = [[YHNetworkAssistant alloc] initWithHostName:kAnalizedURL apiPath:nil customHeaderFields:nil]; // 监听网络状态 [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { @@ -53,7 +53,7 @@ AFNetworkReachabilityStatus _currentNetworkStatus; [[AFNetworkReachabilityManager sharedManager] startMonitoring]; }); - return _shareInstance; + return _sharedInstance; } diff --git a/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.h b/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.h index 310f8be..6401a4b 100644 --- a/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.h +++ b/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.h @@ -22,7 +22,7 @@ typedef enum _YohoMobStatLogStrategy { /** * 获取统计对象的实例 */ -+ (YH_Analytics*) shareInstance; ++ (YH_Analytics*) sharedInstance; /** * 此处AppId即为应用的appKey diff --git a/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.m b/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.m index c5d276b..36013d7 100644 --- a/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.m +++ b/YH_Analytics/YH_Analytics/YH_Analytics/YH_Analytics.m @@ -50,16 +50,16 @@ static dispatch_queue_t persisitingQueue; -+ (YH_Analytics *)shareInstance ++ (YH_Analytics *)sharedInstance { - static YH_Analytics *shareInstance = nil; + static YH_Analytics *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - shareInstance = [[YH_Analytics alloc] init]; + sharedInstance = [[YH_Analytics alloc] init]; }); - return shareInstance; + return sharedInstance; } - (id)init @@ -91,36 +91,36 @@ static dispatch_queue_t persisitingQueue; CTRadioAccessTechnologyeHRPD - 3G (or 3.5 - eHRPD is to allow migration from CDMA EVDO to LTE) CTRadioAccessTechnologyLTE - 4G (allowed to be called 4G by the ITU as mentioend above) */ - [[YHNetworkAssistant shareInstance] addReachabilityChangedHandler:^(AFNetworkReachabilityStatus networkStatus) { + [[YHNetworkAssistant sharedInstance] addReachabilityChangedHandler:^(AFNetworkReachabilityStatus networkStatus) { CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init]; switch (networkStatus) { case AFNetworkReachabilityStatusUnknown: case AFNetworkReachabilityStatusNotReachable: - [YHAssemblyAssistant shareInstance].currentStatus.net = kNetWorkStatusUnknow; + [YHAssemblyAssistant sharedInstance].currentStatus.net = kNetWorkStatusUnknow; break; case AFNetworkReachabilityStatusReachableViaWWAN: { if ([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) { - [YHAssemblyAssistant shareInstance].currentStatus.net = kNetWorkStatus2G; + [YHAssemblyAssistant sharedInstance].currentStatus.net = kNetWorkStatus2G; } else if([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA] || [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) { - [YHAssemblyAssistant shareInstance].currentStatus.net = kNetWorkStatus3G; + [YHAssemblyAssistant sharedInstance].currentStatus.net = kNetWorkStatus3G; } else if([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) { - [YHAssemblyAssistant shareInstance].currentStatus.net = kNetWorkStatus4G; + [YHAssemblyAssistant sharedInstance].currentStatus.net = kNetWorkStatus4G; } else { - [YHAssemblyAssistant shareInstance].currentStatus.net = kNetWorkStatusUnknow; + [YHAssemblyAssistant sharedInstance].currentStatus.net = kNetWorkStatusUnknow; } } break; case AFNetworkReachabilityStatusReachableViaWiFi: - [YHAssemblyAssistant shareInstance].currentStatus.net = kNetWorkStatusWIFI; + [YHAssemblyAssistant sharedInstance].currentStatus.net = kNetWorkStatusWIFI; break; default: break; } - [[YHAssemblyAssistant shareInstance] updateImmediUploadDic]; + [[YHAssemblyAssistant sharedInstance] updateImmediUploadDic]; }]; } @@ -167,14 +167,14 @@ static dispatch_queue_t persisitingQueue; { [self registerCrashReporter]; [self registerAppWillEnterForegroundNotification]; - [YHAssemblyAssistant shareInstance].currentStatus.sid = self.session; - [YHAssemblyAssistant shareInstance].device.ak = appId; + [YHAssemblyAssistant sharedInstance].currentStatus.sid = self.session; + [YHAssemblyAssistant sharedInstance].device.ak = appId; /* 构建即时发送模式下数据 */ - [[YHAssemblyAssistant shareInstance] prepareImmediUploadDic]; + [[YHAssemblyAssistant sharedInstance] prepareImmediUploadDic]; /* 检查发送模式 @@ -230,9 +230,9 @@ static dispatch_queue_t persisitingQueue; // 立即发送策略 if (self.logStrategy == LogStrategyImmedi) { - [[YHAssemblyAssistant shareInstance] uploadImmedilyWithEvent:event]; + [[YHAssemblyAssistant sharedInstance] uploadImmedilyWithEvent:event]; } else { - [[YHAssemblyAssistant shareInstance] saveItemData:event]; + [[YHAssemblyAssistant sharedInstance] saveItemData:event]; } } @@ -248,9 +248,9 @@ static dispatch_queue_t persisitingQueue; error.param = param; if (self.logStrategy == LogStrategyImmedi) { - [[YHAssemblyAssistant shareInstance] uploadImmedilyWithEvent:error]; + [[YHAssemblyAssistant sharedInstance] uploadImmedilyWithEvent:error]; } else { - [[YHAssemblyAssistant shareInstance] saveItemData:error]; + [[YHAssemblyAssistant sharedInstance] saveItemData:error]; } } @@ -265,7 +265,7 @@ static dispatch_queue_t persisitingQueue; // 发送本地持久化数据 - (void)uploadDiskData { - [[YHAssemblyAssistant shareInstance] uploadDiskData]; + [[YHAssemblyAssistant sharedInstance] uploadDiskData]; } // 发送本地持久化数据 @@ -302,11 +302,11 @@ static dispatch_queue_t persisitingQueue; CLLocationCoordinate2D loc = [newLocation coordinate]; float longitude = loc.longitude; float latitude = loc.latitude; - [YHAssemblyAssistant shareInstance].currentStatus.lo = [NSString stringWithFormat:@"%f",longitude]; - [YHAssemblyAssistant shareInstance].currentStatus.la = [NSString stringWithFormat:@"%f",latitude]; + [YHAssemblyAssistant sharedInstance].currentStatus.lo = [NSString stringWithFormat:@"%f",longitude]; + [YHAssemblyAssistant sharedInstance].currentStatus.la = [NSString stringWithFormat:@"%f",latitude]; // 更新经纬度 - [[YHAssemblyAssistant shareInstance].immediUploadItemDic setObject:[YHAssemblyAssistant shareInstance].device.jsonDictionary forKey:JsonKeyDataTypeDevice]; + [[YHAssemblyAssistant sharedInstance].immediUploadItemDic setObject:[YHAssemblyAssistant sharedInstance].device.jsonDictionary forKey:JsonKeyDataTypeDevice]; } diff --git a/YH_Analytics/YH_AnalyticsTests/YH_AnalyticsLogicTests.m b/YH_Analytics/YH_AnalyticsTests/YH_AnalyticsLogicTests.m new file mode 100644 index 0000000..42819e9 --- /dev/null +++ b/YH_Analytics/YH_AnalyticsTests/YH_AnalyticsLogicTests.m @@ -0,0 +1,110 @@ +// +// YH_AnalyticsLogicTests.m +// YH_Analytics +// +// Created by Zhou Rongjun on 15/4/16. +// Copyright (c) 2015年 YOHO. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <XCTest/XCTest.h> +#import "OCMock.h" +#import <CoreLocation/CoreLocation.h> +#import "YHCrashReporter.h" +#import "YHAssemblyAssistant.h" +#import "YH_Analytics.h" + +@interface YH_AnalyticsLogicTests : XCTestCase { +@private + id locationManageMock; + id assemblyAssistantMock; + id crashReporterMock; + id networkAssistantMock; + YH_Analytics *analytics; +} + +@end + +@implementation YH_AnalyticsLogicTests + +- (void)setUp { + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. + locationManageMock = OCMClassMock([CLLocationManager class]); + + assemblyAssistantMock = OCMClassMock([YHAssemblyAssistant class]); + OCMStub([assemblyAssistantMock sharedInstance]).andReturn(assemblyAssistantMock); + + crashReporterMock = OCMClassMock([YHCrashReporter class]); + OCMStub([crashReporterMock sharedInstance]).andReturn(crashReporterMock); + + networkAssistantMock = OCMClassMock([YHNetworkAssistant class]); + OCMStub([networkAssistantMock sharedInstance]).andReturn(networkAssistantMock); +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +#pragma mark - 逻辑分支测试 + +- (void)testStartWithAppIdMethodPrepareImmediUploadDic { + NSLog(@"%@ start", self.name); + + analytics = [[YH_Analytics alloc] init]; + + OCMExpect([assemblyAssistantMock prepareImmediUploadDic]); + + [analytics startWithAppId:@"appId"]; + + OCMVerifyAll(assemblyAssistantMock); + + NSLog(@"%@ end", self.name); +} + +- (void)testStartWithAppIdMethodWithLogStrategyAppLaunch { + NSLog(@"%@ start", self.name); + + analytics = [[YH_Analytics alloc] init]; + analytics.logStrategy = LogStrategyAppLaunch; + + OCMExpect([assemblyAssistantMock uploadDiskData]); + + [analytics startWithAppId:@"appId"]; + + OCMVerifyAll(assemblyAssistantMock); + + NSLog(@"%@ end", self.name); +} + +- (void)testStartWithAppIdMethodWithLogStrategyCustom { + NSLog(@"%@ start", self.name); + + analytics = [[YH_Analytics alloc] init]; + analytics.logStrategy = LogStrategyCustom; + + OCMExpect([assemblyAssistantMock uploadDiskData]); + + [analytics startWithAppId:@"appId"]; + + OCMVerifyAll(assemblyAssistantMock); + + NSLog(@"%@ end", self.name); +} + +- (void)testStartWithAppIdMethodWithLogStrategyImmedi { + NSLog(@"%@ start", self.name); + + analytics = [[YH_Analytics alloc] init]; + analytics.logStrategy = LogStrategyImmedi; + + OCMExpect([assemblyAssistantMock uploadDiskData]); + + [analytics startWithAppId:@"appId"]; + + XCTAssertThrows([assemblyAssistantMock verify], @"StartWithAppId should not uploadDiskData when strategy is immediately.") ; + + NSLog(@"%@ end", self.name); +} +@end diff --git a/YH_Analytics/YH_AnalyticsTests/YH_AnalyticsTests.m b/YH_Analytics/YH_AnalyticsTests/YH_AnalyticsTests.m index ec48f6c..cd2e181 100644 --- a/YH_Analytics/YH_AnalyticsTests/YH_AnalyticsTests.m +++ b/YH_Analytics/YH_AnalyticsTests/YH_AnalyticsTests.m @@ -81,18 +81,4 @@ NSLog(@"%@ end", self.name); } -#pragma mark - 分支测试 - -- (void)testStartWithAppIdMethodWithLogStrategyAppLaunch { - NSLog(@"%@ start", self.name); - - NSLog(@"%@ end", self.name); -} - -- (void)testStartWithAppIdMethodWithLogStrategyCustom { - NSLog(@"%@ start", self.name); - - NSLog(@"%@ end", self.name); -} - @end