aboutsummaryrefslogtreecommitdiffhomepage
path: root/Example/Core/Tests/FIROptionsTest.m
diff options
context:
space:
mode:
Diffstat (limited to 'Example/Core/Tests/FIROptionsTest.m')
-rw-r--r--Example/Core/Tests/FIROptionsTest.m128
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];