From 2c0cacd3ee9d78a095de6069f7b59415f647718b Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Mon, 15 Jan 2018 08:46:22 -0500 Subject: Inject infoDictionary to fix flakey tests. (#664) * Inject infoDictionary to fix flakey tests. * Remove outdated comment, update format. --- Example/Core/Tests/FIROptionsTest.m | 48 ++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'Example/Core') diff --git a/Example/Core/Tests/FIROptionsTest.m b/Example/Core/Tests/FIROptionsTest.m index d27a0e1..8170405 100644 --- a/Example/Core/Tests/FIROptionsTest.m +++ b/Example/Core/Tests/FIROptionsTest.m @@ -25,7 +25,8 @@ extern NSString *const kFIRLibraryVersionID; @interface FIROptions (Test) -@property(nonatomic, readonly) NSDictionary *analyticsOptionsDictionary; +- (nullable NSDictionary *)analyticsOptionsDictionaryWithInfoDictionary: + (nullable NSDictionary *)infoDictionary; @end @@ -263,22 +264,20 @@ extern NSString *const kFIRLibraryVersionID; } - (void)testAnalyticsOptions { - id mainBundleMock = OCMPartialMock([NSBundle mainBundle]); - // No keys anywhere. NSDictionary *optionsDictionary = nil; FIROptions *options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; NSDictionary *mainDictionary = nil; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); NSDictionary *expectedAnalyticsOptions = @{}; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + NSDictionary *analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:nil]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); optionsDictionary = @{}; options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; mainDictionary = @{}; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); expectedAnalyticsOptions = @{}; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); // Main has no keys. optionsDictionary = @{ @@ -288,9 +287,9 @@ extern NSString *const kFIRLibraryVersionID; }; options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; mainDictionary = @{}; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); expectedAnalyticsOptions = optionsDictionary; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); // Main overrides all the keys. optionsDictionary = @{ @@ -304,9 +303,9 @@ extern NSString *const kFIRLibraryVersionID; kFIRIsAnalyticsCollectionEnabled : @NO, kFIRIsMeasurementEnabled : @NO }; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); expectedAnalyticsOptions = mainDictionary; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); // Keys exist only in main. optionsDictionary = @{}; @@ -316,9 +315,9 @@ extern NSString *const kFIRLibraryVersionID; kFIRIsAnalyticsCollectionEnabled : @YES, kFIRIsMeasurementEnabled : @YES }; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); expectedAnalyticsOptions = mainDictionary; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); // Main overrides single keys. optionsDictionary = @{ @@ -328,13 +327,13 @@ extern NSString *const kFIRLibraryVersionID; }; options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; mainDictionary = @{ kFIRIsAnalyticsCollectionDeactivated : @NO }; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); expectedAnalyticsOptions = @{ kFIRIsAnalyticsCollectionDeactivated : @NO, // override kFIRIsAnalyticsCollectionEnabled : @YES, kFIRIsMeasurementEnabled : @YES }; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); optionsDictionary = @{ kFIRIsAnalyticsCollectionDeactivated : @YES, @@ -343,13 +342,13 @@ extern NSString *const kFIRLibraryVersionID; }; options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; mainDictionary = @{ kFIRIsAnalyticsCollectionEnabled : @NO }; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); expectedAnalyticsOptions = @{ kFIRIsAnalyticsCollectionDeactivated : @YES, kFIRIsAnalyticsCollectionEnabled : @NO, // override kFIRIsMeasurementEnabled : @YES }; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); optionsDictionary = @{ kFIRIsAnalyticsCollectionDeactivated : @YES, @@ -358,18 +357,18 @@ extern NSString *const kFIRLibraryVersionID; }; options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; mainDictionary = @{ kFIRIsMeasurementEnabled : @NO }; - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); expectedAnalyticsOptions = @{ kFIRIsAnalyticsCollectionDeactivated : @YES, kFIRIsAnalyticsCollectionEnabled : @YES, kFIRIsMeasurementEnabled : @NO // override }; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); } - (void)testAnalyticsOptions_combinatorial { // Complete combinatorial test. - id mainBundleMock = OCMPartialMock([NSBundle mainBundle]); + // Possible values for the flags in the plist, where NSNull means the flag is not present. NSArray *values = @[ [NSNull null], @NO, @YES ]; @@ -398,6 +397,7 @@ extern NSString *const kFIRLibraryVersionID; if (![optionsMeasurementEnabled isEqual:[NSNull null]]) { optionsDictionary[kFIRIsMeasurementEnabled] = optionsMeasurementEnabled; } + FIROptions *options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; if (![uniqueOptionsCombinations containsObject:optionsDictionary]) { @@ -415,7 +415,8 @@ extern NSString *const kFIRLibraryVersionID; if (![mainMeasurementEnabled isEqual:[NSNull null]]) { mainDictionary[kFIRIsMeasurementEnabled] = mainMeasurementEnabled; } - OCMExpect([mainBundleMock infoDictionary]).andReturn(mainDictionary); + + // Add mainDictionary to uniqueMainCombinations if it isn't included yet. if (![uniqueMainCombinations containsObject:mainDictionary]) { [uniqueMainCombinations addObject:mainDictionary]; } @@ -427,7 +428,10 @@ extern NSString *const kFIRLibraryVersionID; NSMutableDictionary *expectedAnalyticsOptions = [[NSMutableDictionary alloc] initWithDictionary:optionsDictionary]; [expectedAnalyticsOptions addEntriesFromDictionary:mainDictionary]; - XCTAssertEqualObjects(options.analyticsOptionsDictionary, expectedAnalyticsOptions); + + NSDictionary *analyticsOptions = + [options analyticsOptionsDictionaryWithInfoDictionary:mainDictionary]; + XCTAssertEqualObjects(analyticsOptions, expectedAnalyticsOptions); combinationCount++; } -- cgit v1.2.3