Skip to content

Commit d340d7d

Browse files
authored
[MBL-2803] Clean up net new backers feature flags (#2632)
* Clean up net new backers webview flag * Clean up net new backers go to pm flag
1 parent 788be30 commit d340d7d

File tree

9 files changed

+38
-154
lines changed

9 files changed

+38
-154
lines changed

Kickstarter-iOS/Features/ProjectPage/Controller/ProjectPageViewControllerTests.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -963,11 +963,6 @@ internal final class ProjectPageViewControllerTests: TestCase {
963963
}
964964

965965
func testNetNewBacker_GoToPledgeManager() {
966-
let mockConfigClient = MockRemoteConfigClient()
967-
mockConfigClient.features = [
968-
RemoteConfigFeature.netNewBackersGoToPM.rawValue: true
969-
]
970-
971966
let config = Config.template
972967
let project = Project.netNewBacker
973968

@@ -981,8 +976,7 @@ internal final class ProjectPageViewControllerTests: TestCase {
981976
orthogonalCombos([Language.en], [Device.phone4inch, Device.pad]).forEach { language, device in
982977
withEnvironment(
983978
apiService: mockService,
984-
config: config, currentUser: nil, language: language,
985-
remoteConfigClient: mockConfigClient
979+
config: config, currentUser: nil, language: language
986980
) {
987981
let vc = ProjectPageViewController.configuredWith(
988982
projectOrParam: .left(project), refInfo: nil

Library/RemoteConfig/RemoteConfigFeature+Helpers.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ public func featurePledgeOverTimeEnabled() -> Bool {
3535
featureEnabled(feature: .pledgeOverTime)
3636
}
3737

38-
public func featureNetNewBackersWebViewEnabled() -> Bool {
39-
featureEnabled(feature: .netNewBackersWebView)
40-
}
41-
4238
public func featureRewardShipmentTrackingEnabled() -> Bool {
4339
featureEnabled(feature: .rewardShipmentTracking)
4440
}
@@ -50,7 +46,3 @@ public func featureSimilarProjectsCarouselEnabled() -> Bool {
5046
public func featureSecretRewardsEnabled() -> Bool {
5147
featureEnabled(feature: .secretRewards)
5248
}
53-
54-
public func featureNetNewBackersGoToPMEnabled() -> Bool {
55-
featureEnabled(feature: .netNewBackersGoToPM)
56-
}

Library/RemoteConfig/RemoteConfigFeature.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ public enum RemoteConfigFeature: String, CaseIterable {
66
case onboardingFlow = "onboarding_flow"
77
case pledgedProjectsOverviewV2Enabled = "pledged_projects_overview_v2"
88
case pledgeOverTime = "pledge_over_time"
9-
case netNewBackersWebView = "net_new_backers_web_view"
109
case rewardShipmentTracking = "reward_shipment_tracking"
1110
case similarProjectsCarousel = "similar_projects_carousel"
1211
case secretRewards = "secret_rewards"
13-
case netNewBackersGoToPM = "net_new_backers_go_to_pm"
1412
}
1513

1614
extension RemoteConfigFeature: CustomStringConvertible {
@@ -21,11 +19,9 @@ extension RemoteConfigFeature: CustomStringConvertible {
2119
case .onboardingFlow: return "Onboarding Flow"
2220
case .pledgedProjectsOverviewV2Enabled: return "Pledged Projects Overview V2"
2321
case .pledgeOverTime: return "Pledge Over Time"
24-
case .netNewBackersWebView: return "Net New Backers Web View"
2522
case .rewardShipmentTracking: return "Reward Shipment Tracking"
2623
case .similarProjectsCarousel: return "Similar Projects Carousel"
2724
case .secretRewards: return "Secret Rewards"
28-
case .netNewBackersGoToPM: return "Net New Backers Go To PM"
2925
}
3026
}
3127
}

Library/ViewModels/MessagesViewModelTests.swift

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -240,12 +240,7 @@ internal final class MessagesViewModelTests: TestCase {
240240

241241
let backingDetailsPageURL = backing.backingDetailsPageRoute
242242

243-
let mockConfigClient = MockRemoteConfigClient()
244-
mockConfigClient.features = [
245-
RemoteConfigFeature.netNewBackersWebView.rawValue: true
246-
]
247-
248-
withEnvironment(apiService: apiService, currentUser: currentUser, remoteConfigClient: mockConfigClient) {
243+
withEnvironment(apiService: apiService, currentUser: currentUser) {
249244
self.vm.inputs.configureWith(data: .right((project: project, backing: backing)))
250245

251246
self.vm.inputs.viewDidLoad()

Library/ViewModels/PledgeCTAContainerViewViewModel.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,7 @@ private func pledgeCTA(project: Project, backing: Backing?) -> PledgeStateCTATyp
211211
return .prelaunch(saved: projectIsSaved, watchCount: project.watchesCount ?? 0)
212212
}
213213

214-
if backing?.status == .dummy ||
215-
(featureNetNewBackersGoToPMEnabled() && project.pledgeManagementAvailable) {
214+
if backing?.status == .dummy || project.pledgeManagementAvailable {
216215
return PledgeStateCTAType.pledgeManager
217216
}
218217

Library/ViewModels/PledgeCTAContainerViewViewModelTests.swift

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -119,42 +119,26 @@ internal final class PledgeCTAContainerViewViewModelTests: TestCase {
119119
}
120120

121121
func testPledgeCTA_NetNewBackerGoToPM() {
122-
let mockConfigClient = MockRemoteConfigClient()
122+
let project = Project.netNewBacker
123123

124-
mockConfigClient.features = [
125-
RemoteConfigFeature.netNewBackersGoToPM.rawValue: true
126-
]
127-
128-
withEnvironment(remoteConfigClient: mockConfigClient) {
129-
let project = Project.netNewBacker
130-
131-
self.vm.inputs.configureWith(value: (.left((project, nil)), false))
132-
self.buttonStyleType.assertValues([ButtonStyleType.black])
133-
self.buttonTitleText.assertValues([Strings.Go_to_pledge_manager()])
134-
self.spacerIsHidden.assertValues([true])
135-
self.stackViewIsHidden.assertValues([true])
136-
}
124+
self.vm.inputs.configureWith(value: (.left((project, nil)), false))
125+
self.buttonStyleType.assertValues([ButtonStyleType.black])
126+
self.buttonTitleText.assertValues([Strings.Go_to_pledge_manager()])
127+
self.spacerIsHidden.assertValues([true])
128+
self.stackViewIsHidden.assertValues([true])
137129
}
138130

139131
func testPledgeCTA_ExistingBackerGoToPM() {
140-
let mockConfigClient = MockRemoteConfigClient()
141-
142-
mockConfigClient.features = [
143-
RemoteConfigFeature.netNewBackersGoToPM.rawValue: true
144-
]
145-
146-
withEnvironment(remoteConfigClient: mockConfigClient) {
147-
let project = Project.netNewBacker
148-
|> Project.lens.personalization.backing .~ Backing.template
149-
|> Project.lens.personalization.isBacking .~ true
150-
|> Project.lens.pledgeManager .~ nil
132+
let project = Project.netNewBacker
133+
|> Project.lens.personalization.backing .~ Backing.template
134+
|> Project.lens.personalization.isBacking .~ true
135+
|> Project.lens.pledgeManager .~ nil
151136

152-
self.vm.inputs.configureWith(value: (.left((project, nil)), false))
153-
self.buttonStyleType.assertValues([ButtonStyleType.black])
154-
self.buttonTitleText.assertValues([Strings.Go_to_pledge_manager()])
155-
self.spacerIsHidden.assertValues([true])
156-
self.stackViewIsHidden.assertValues([true])
157-
}
137+
self.vm.inputs.configureWith(value: (.left((project, nil)), false))
138+
self.buttonStyleType.assertValues([ButtonStyleType.black])
139+
self.buttonTitleText.assertValues([Strings.Go_to_pledge_manager()])
140+
self.spacerIsHidden.assertValues([true])
141+
self.stackViewIsHidden.assertValues([true])
158142
}
159143

160144
func testPledgeCTA_dummyPledgeGoToPM() {

Library/ViewModels/PledgeViewUseCaseTests.swift

Lines changed: 18 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -26,104 +26,40 @@ final class PledgeViewUseCaseTests: TestCase {
2626
self.useCase.outputs.goToPledgeManagementPledgeView.observe(self.goToPledgeManagementPledgeView.observer)
2727
}
2828

29-
func test_goToPledgeManagementPledgeView_when_isBacker_And_Featureflag_On() {
29+
func test_goToPledgeManagementPledgeView_when_isBacker() {
3030
var project = Project.template
3131
project.personalization.isBacking = .some(true)
3232

3333
let backing = Backing.templateMadeWithPledgeManagment
3434
let expectedURL = backing.backingDetailsPageRoute
35-
let mockConfigClient = MockRemoteConfigClient()
36-
mockConfigClient.features = [
37-
RemoteConfigFeature.netNewBackersWebView.rawValue: true
38-
]
3935

40-
withEnvironment(remoteConfigClient: mockConfigClient) {
41-
self.projectAndBackingObserver.send(value: (project, backing))
36+
self.projectAndBackingObserver.send(value: (project, backing))
4237

43-
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
44-
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
45-
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
38+
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
39+
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
40+
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
4641

47-
self.useCase.inputs.goToPledgeViewTapped()
42+
self.useCase.inputs.goToPledgeViewTapped()
4843

49-
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
50-
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
51-
self.goToPledgeManagementPledgeView.assertValue(expectedURL)
52-
}
44+
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
45+
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
46+
self.goToPledgeManagementPledgeView.assertValue(expectedURL)
5347
}
5448

55-
func test_goToNativePledgeView_when_isBacker_And_Featureflag_Off() {
56-
var project = Project.template
57-
project.personalization.isBacking = .some(true)
58-
59-
let backing = Backing.templateMadeWithPledgeManagment
60-
let mockConfigClient = MockRemoteConfigClient()
61-
mockConfigClient.features = [
62-
RemoteConfigFeature.netNewBackersWebView.rawValue: false
63-
]
64-
65-
withEnvironment(remoteConfigClient: mockConfigClient) {
66-
self.projectAndBackingObserver.send(value: (project, backing))
67-
68-
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
69-
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
70-
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
71-
72-
self.useCase.inputs.goToPledgeViewTapped()
73-
74-
self.goToNativePledgeViewProjectParam.assertLastValue(.slug(project.slug))
75-
self.goToNativePledgeViewBackingParam.assertLastValue(.id(backing.id))
76-
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
77-
}
78-
}
79-
80-
func test_goToNativePledgeView_when_isCreator_And_Featureflag_On() {
81-
var project = Project.template
82-
project.personalization.isBacking = .some(false)
83-
84-
let backing = Backing.templateMadeWithPledgeManagment
85-
let mockConfigClient = MockRemoteConfigClient()
86-
mockConfigClient.features = [
87-
RemoteConfigFeature.netNewBackersWebView.rawValue: false
88-
]
89-
90-
withEnvironment(remoteConfigClient: mockConfigClient) {
91-
self.projectAndBackingObserver.send(value: (project, backing))
92-
93-
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
94-
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
95-
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
96-
97-
self.useCase.inputs.goToPledgeViewTapped()
98-
99-
self.goToNativePledgeViewProjectParam.assertLastValue(.slug(project.slug))
100-
self.goToNativePledgeViewBackingParam.assertLastValue(.id(backing.id))
101-
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
102-
}
103-
}
104-
105-
func test_goToNativePledgeView_when_isCreator_And_Featureflag_Off() {
49+
func test_goToNativePledgeView_when_isCreator() {
10650
var project = Project.template
10751
project.personalization.isBacking = .some(false)
108-
10952
let backing = Backing.templateMadeWithPledgeManagment
110-
let mockConfigClient = MockRemoteConfigClient()
111-
mockConfigClient.features = [
112-
RemoteConfigFeature.netNewBackersWebView.rawValue: false
113-
]
114-
115-
withEnvironment(remoteConfigClient: mockConfigClient) {
116-
self.projectAndBackingObserver.send(value: (project, backing))
53+
self.projectAndBackingObserver.send(value: (project, backing))
11754

118-
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
119-
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
120-
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
55+
self.goToNativePledgeViewProjectParam.assertDidNotEmitValue()
56+
self.goToNativePledgeViewBackingParam.assertDidNotEmitValue()
57+
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
12158

122-
self.useCase.inputs.goToPledgeViewTapped()
59+
self.useCase.inputs.goToPledgeViewTapped()
12360

124-
self.goToNativePledgeViewProjectParam.assertLastValue(.slug(project.slug))
125-
self.goToNativePledgeViewBackingParam.assertLastValue(.id(backing.id))
126-
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
127-
}
61+
self.goToNativePledgeViewProjectParam.assertLastValue(.slug(project.slug))
62+
self.goToNativePledgeViewBackingParam.assertLastValue(.id(backing.id))
63+
self.goToPledgeManagementPledgeView.assertDidNotEmitValue()
12864
}
12965
}

Library/ViewModels/ProjectPageViewModelTests.swift

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,12 +1123,7 @@ final class ProjectPageViewModelTests: TestCase {
11231123
}
11241124

11251125
func testGoToPledgeManagementWebview_ManagingPledge() {
1126-
let mockConfigClient = MockRemoteConfigClient()
1127-
mockConfigClient.features = [
1128-
RemoteConfigFeature.netNewBackersWebView.rawValue: true
1129-
]
1130-
1131-
withEnvironment(config: .template, remoteConfigClient: mockConfigClient) {
1126+
withEnvironment(config: .template) {
11321127
let reward = Project.cosmicSurgery.rewards.first!
11331128
let backing = Backing.templateMadeWithPledgeManagment
11341129
|> Backing.lens.reward .~ reward
@@ -1155,12 +1150,7 @@ final class ProjectPageViewModelTests: TestCase {
11551150
}
11561151

11571152
func testGoToPledgeManagementWebview_ViewingPledge() {
1158-
let mockConfigClient = MockRemoteConfigClient()
1159-
mockConfigClient.features = [
1160-
RemoteConfigFeature.netNewBackersWebView.rawValue: true
1161-
]
1162-
1163-
withEnvironment(config: .template, currentUser: .template, remoteConfigClient: mockConfigClient) {
1153+
withEnvironment(config: .template, currentUser: .template) {
11641154
let reward = Project.cosmicSurgery.rewards.first!
11651155
let backing = Backing.templateMadeWithPledgeManagment
11661156
|> Backing.lens.reward .~ reward

Library/ViewModels/ViewPledgeUseCase.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ public final class ViewPledgeUseCase: ViewPledgeUseCaseType,
2929
let shouldGoToPledgeManagementPledgeView = projectAndBacking
3030
.takeWhen(goToPledgeViewSignal)
3131
.map { project, backing -> Bool in
32-
guard featureNetNewBackersWebViewEnabled() else { return false }
33-
3432
guard let order = backing.order, let isBacking = project.personalization.isBacking,
3533
isBacking else { return false }
3634

0 commit comments

Comments
 (0)