diff options
Diffstat (limited to 'Example/Core/Tests/FIROptionsTest.m')
-rw-r--r-- | Example/Core/Tests/FIROptionsTest.m | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/Example/Core/Tests/FIROptionsTest.m b/Example/Core/Tests/FIROptionsTest.m index 064745a..f257cbb 100644 --- a/Example/Core/Tests/FIROptionsTest.m +++ b/Example/Core/Tests/FIROptionsTest.m @@ -428,6 +428,134 @@ extern NSString *const kFIRLibraryVersionID; XCTAssertEqual(mainSizeCount[3], 8); } +- (void)testAnalyticsCollectionGlobalSwitchEnabled { + // Stub the default app, and set the global switch to YES. + id appMock = OCMClassMock([FIRApp class]); + OCMStub([appMock isDefaultAppConfigured]).andReturn(YES); + OCMStub([appMock defaultApp]).andReturn(appMock); + OCMStub([appMock isAutomaticDataCollectionEnabled]).andReturn(YES); + + // With no other settings, Analytics collection should default to the app's flag. + FIROptions *options = [[FIROptions alloc] initInternalWithOptionsDictionary:@{}]; + XCTAssertTrue(options.isAnalyticsCollectionEnabled); + XCTAssertTrue(options.isMeasurementEnabled); + + [appMock stopMocking]; +} + +- (void)testAnalyticsCollectionGlobalSwitchDisabled { + // Stub the default app, and set the global switch to NO. + id appMock = OCMClassMock([FIRApp class]); + OCMStub([appMock isDefaultAppConfigured]).andReturn(YES); + OCMStub([appMock defaultApp]).andReturn(appMock); + OCMStub([appMock isAutomaticDataCollectionEnabled]).andReturn(NO); + + // With no other settings, Analytics collection should default to the app's flag. + FIROptions *options = [[FIROptions alloc] initInternalWithOptionsDictionary:@{}]; + XCTAssertFalse(options.isAnalyticsCollectionEnabled); + XCTAssertFalse(options.isMeasurementEnabled); + + [appMock stopMocking]; +} + +- (void)testAnalyticsCollectionGlobalSwitchOverrideToDisable { + // Stub the default app, and set the global switch to YES. + id appMock = OCMClassMock([FIRApp class]); + OCMStub([appMock isDefaultAppConfigured]).andReturn(YES); + OCMStub([appMock defaultApp]).andReturn(appMock); + OCMStub([appMock isAutomaticDataCollectionEnabled]).andReturn(YES); + + // Test the three Analytics flags that override to disable Analytics collection. + FIROptions *collectionEnabledOptions = [[FIROptions alloc] initInternalWithOptionsDictionary:@{ + kFIRIsAnalyticsCollectionEnabled : @NO + }]; + XCTAssertFalse(collectionEnabledOptions.isAnalyticsCollectionEnabled); + + FIROptions *collectionDeactivatedOptions = + [[FIROptions alloc] initInternalWithOptionsDictionary:@{ + kFIRIsAnalyticsCollectionDeactivated : @YES + }]; + XCTAssertFalse(collectionDeactivatedOptions.isAnalyticsCollectionEnabled); + + FIROptions *measurementEnabledOptions = [[FIROptions alloc] initInternalWithOptionsDictionary:@{ + kFIRIsMeasurementEnabled : @NO + }]; + XCTAssertFalse(measurementEnabledOptions.isAnalyticsCollectionEnabled); +} + +- (void)testAnalyticsCollectionGlobalSwitchOverrideToEnable { + // Stub the default app, and set the global switch to YES. + id appMock = OCMClassMock([FIRApp class]); + OCMStub([appMock isDefaultAppConfigured]).andReturn(YES); + OCMStub([appMock defaultApp]).andReturn(appMock); + OCMStub([appMock isAutomaticDataCollectionEnabled]).andReturn(NO); + + // Test the two Analytics flags that can override and enable collection. + FIROptions *collectionEnabledOptions = [[FIROptions alloc] initInternalWithOptionsDictionary:@{ + kFIRIsAnalyticsCollectionEnabled : @YES + }]; + XCTAssertTrue(collectionEnabledOptions.isAnalyticsCollectionEnabled); + + FIROptions *measurementEnabledOptions = [[FIROptions alloc] initInternalWithOptionsDictionary:@{ + kFIRIsMeasurementEnabled : @YES + }]; + XCTAssertTrue(measurementEnabledOptions.isAnalyticsCollectionEnabled); +} + +- (void)testAnalyticsCollectionExplicitlySet { + NSDictionary *optionsDictionary = @{}; + FIROptions *options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; + NSDictionary *analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{}]; + XCTAssertFalse([options isAnalyticsCollectionExpicitlySet]); + + // Test deactivation flag. + optionsDictionary = @{ kFIRIsAnalyticsCollectionDeactivated : @YES }; + options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{}]; + XCTAssertTrue([options isAnalyticsCollectionExpicitlySet]); + + // If "deactivated" == NO, that doesn't mean it's explicitly set / enabled so it should be treated + // as if it's not set. + optionsDictionary = @{ kFIRIsAnalyticsCollectionDeactivated : @NO }; + options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{}]; + XCTAssertFalse([options isAnalyticsCollectionExpicitlySet]); + + // Test the collection enabled flag. + optionsDictionary = @{ kFIRIsAnalyticsCollectionEnabled : @YES }; + options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{}]; + XCTAssertTrue([options isAnalyticsCollectionExpicitlySet]); + + optionsDictionary = @{ kFIRIsAnalyticsCollectionEnabled : @NO }; + options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{}]; + XCTAssertTrue([options isAnalyticsCollectionExpicitlySet]); + + // Test the old measurement flag. + options = [[FIROptions alloc] initInternalWithOptionsDictionary:@{}]; + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{ + kFIRIsMeasurementEnabled : @YES + }]; + XCTAssertTrue([options isAnalyticsCollectionExpicitlySet]); + + options = [[FIROptions alloc] initInternalWithOptionsDictionary:@{}]; + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{ + kFIRIsMeasurementEnabled : @NO + }]; + XCTAssertTrue([options isAnalyticsCollectionExpicitlySet]); + + // For good measure, a combination of all 3 (even if they conflict). + optionsDictionary = + @{ kFIRIsAnalyticsCollectionDeactivated : @YES, + kFIRIsAnalyticsCollectionEnabled : @YES }; + options = [[FIROptions alloc] initInternalWithOptionsDictionary:optionsDictionary]; + analyticsOptions = [options analyticsOptionsDictionaryWithInfoDictionary:@{ + kFIRIsMeasurementEnabled : @NO + }]; + XCTAssertTrue([options isAnalyticsCollectionExpicitlySet]); +} + - (void)testVersionFormat { NSRegularExpression *sLibraryVersionRegex = [NSRegularExpression regularExpressionWithPattern:@"^[0-9]{8,}$" options:0 error:NULL]; |