Skip to content

Commit 77e4fc7

Browse files
authored
[WEB-669] Facebook Conversions API Feature Flag (#1766)
* add facebook conversions api feature flag * add facebook conversions api feature flag * fix test
1 parent a1857a4 commit 77e4fc7

6 files changed

+36
-1
lines changed

Library/OptimizelyClientTypeTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ final class OptimizelyClientTypeTests: TestCase {
2424
OptimizelyFeature.commentFlaggingEnabled.rawValue: true
2525
]
2626

27-
XCTAssert(mockOptimizelyClient.allFeatures().count == 7)
27+
XCTAssert(mockOptimizelyClient.allFeatures().count == 8)
2828
}
2929

3030
func testVariantForExperiment_NoError() {

Library/OptimizelyFeature+Helpers.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,10 @@ public func featureConsentManagementDialogEnabled() -> Bool {
4848
(AppEnvironment.current.optimizelyClient?
4949
.isFeatureEnabled(featureKey: OptimizelyFeature.consentManagementDialogEnabled.rawValue) ?? false)
5050
}
51+
52+
public func featureFacebookConversionsAPIEnabled() -> Bool {
53+
return AppEnvironment.current.userDefaults
54+
.optimizelyFeatureFlags[OptimizelyFeature.facebookConversionsAPI.rawValue] ??
55+
(AppEnvironment.current.optimizelyClient?
56+
.isFeatureEnabled(featureKey: OptimizelyFeature.facebookConversionsAPI.rawValue) ?? false)
57+
}

Library/OptimizelyFeature+HelpersTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,22 @@ final class OptimizelyFeatureHelpersTests: TestCase {
110110
XCTAssertFalse(featureConsentManagementDialogEnabled())
111111
}
112112
}
113+
114+
func testFacebookConversionsAPI_Optimizely_FeatureFlag_True() {
115+
let mockOptimizelyClient = MockOptimizelyClient()
116+
|> \.features .~ [OptimizelyFeature.facebookConversionsAPI.rawValue: true]
117+
118+
withEnvironment(optimizelyClient: mockOptimizelyClient) {
119+
XCTAssertTrue(featureFacebookConversionsAPIEnabled())
120+
}
121+
}
122+
123+
func testFacebookConversionsAPI_Optimizely_FeatureFlag_False() {
124+
let mockOptimizelyClient = MockOptimizelyClient()
125+
|> \.features .~ [OptimizelyFeature.facebookConversionsAPI.rawValue: false]
126+
127+
withEnvironment(optimizelyClient: mockOptimizelyClient) {
128+
XCTAssertFalse(featureFacebookConversionsAPIEnabled())
129+
}
130+
}
113131
}

Library/OptimizelyFeature.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Foundation
33
public enum OptimizelyFeature: String, CaseIterable {
44
case commentFlaggingEnabled = "ios_comment_threading_comment_flagging"
55
case consentManagementDialogEnabled = "ios_consent_management_dialog"
6+
case facebookConversionsAPI = "ios_facebook_conversions_api"
67
case facebookLoginDeprecationEnabled = "ios_facebook_deprecation"
78
case paymentSheetEnabled = "ios_payment_sheet"
89
case projectPageStoryTabEnabled = "project_page_v2_story"
@@ -15,6 +16,7 @@ extension OptimizelyFeature: CustomStringConvertible {
1516
switch self {
1617
case .commentFlaggingEnabled: return "Comment Flagging"
1718
case .consentManagementDialogEnabled: return "Consent Management Dialog"
19+
case .facebookConversionsAPI: return "Facebook Conversions API"
1820
case .facebookLoginDeprecationEnabled: return "Facebook Login Deprecation"
1921
case .paymentSheetEnabled: return "Payment Sheet"
2022
case .projectPageStoryTabEnabled: return "Project Page Story Tab"

Library/ViewModels/OptimizelyFeatureFlagToolsViewModel.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ private func getValueFromUserDefaults(for feature: OptimizelyFeature) -> Bool? {
110110
case .settingsPaymentSheetEnabled:
111111
return AppEnvironment.current.userDefaults
112112
.optimizelyFeatureFlags[OptimizelyFeature.settingsPaymentSheetEnabled.rawValue]
113+
case .facebookConversionsAPI:
114+
return AppEnvironment.current.userDefaults
115+
.optimizelyFeatureFlags[OptimizelyFeature.facebookConversionsAPI.rawValue]
113116
case .facebookLoginDeprecationEnabled:
114117
return AppEnvironment.current.userDefaults
115118
.optimizelyFeatureFlags[OptimizelyFeature.facebookLoginDeprecationEnabled.rawValue]
@@ -138,6 +141,9 @@ private func setValueInUserDefaults(for feature: OptimizelyFeature, and value: B
138141
case .settingsPaymentSheetEnabled:
139142
return AppEnvironment.current.userDefaults
140143
.optimizelyFeatureFlags[OptimizelyFeature.settingsPaymentSheetEnabled.rawValue] = value
144+
case .facebookConversionsAPI:
145+
return AppEnvironment.current.userDefaults
146+
.optimizelyFeatureFlags[OptimizelyFeature.facebookConversionsAPI.rawValue] = value
141147
case .facebookLoginDeprecationEnabled:
142148
return AppEnvironment.current.userDefaults
143149
.optimizelyFeatureFlags[OptimizelyFeature.facebookLoginDeprecationEnabled.rawValue] = value

Library/ViewModels/OptimizelyFeatureFlagToolsViewModelTests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ final class OptimizelyFlagToolsViewModelTests: TestCase {
2828
OptimizelyFeature.rewardLocalPickupEnabled.rawValue: true,
2929
OptimizelyFeature.paymentSheetEnabled.rawValue: true,
3030
OptimizelyFeature.settingsPaymentSheetEnabled.rawValue: true,
31+
OptimizelyFeature.facebookConversionsAPI.rawValue: true,
3132
OptimizelyFeature.facebookLoginDeprecationEnabled.rawValue: true
3233
]
3334

@@ -53,6 +54,7 @@ final class OptimizelyFlagToolsViewModelTests: TestCase {
5354
OptimizelyFeature.rewardLocalPickupEnabled.rawValue: false,
5455
OptimizelyFeature.paymentSheetEnabled.rawValue: false,
5556
OptimizelyFeature.settingsPaymentSheetEnabled.rawValue: false,
57+
OptimizelyFeature.facebookConversionsAPI.rawValue: false,
5658
OptimizelyFeature.facebookLoginDeprecationEnabled.rawValue: false
5759
]
5860

0 commit comments

Comments
 (0)