diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/PledgeViewControllerTests.swift b/Kickstarter-iOS/Features/PledgeView/Controllers/PledgeViewControllerTests.swift index 293c91412d..14d5c2cd46 100644 --- a/Kickstarter-iOS/Features/PledgeView/Controllers/PledgeViewControllerTests.swift +++ b/Kickstarter-iOS/Features/PledgeView/Controllers/PledgeViewControllerTests.swift @@ -32,7 +32,7 @@ final class PledgeViewControllerTests: TestCase { let project = Project.template |> \.availableCardTypes .~ [CreditCardType.discover.rawValue] - orthogonalCombos(Language.allLanguages, Device.allCases).forEach { language, device in + combos(Language.allLanguages, Device.allCases).forEach { language, device in withEnvironment(apiService: mockService, currentUser: User.template, language: language) { let controller = PledgeViewController.instantiate() @@ -40,7 +40,6 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -88,7 +87,6 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -114,7 +112,7 @@ final class PledgeViewControllerTests: TestCase { func testView_PledgeContext_NeedsConversion_IsFalse() { let response = UserEnvelope(me: self.userWithCards) let mockService = MockService(fetchGraphUserResult: .success(response)) - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) .forEach { language, device, currentUser in withEnvironment(apiService: mockService, currentUser: currentUser, language: language) { let controller = PledgeViewController.instantiate() @@ -123,7 +121,6 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -167,14 +164,13 @@ final class PledgeViewControllerTests: TestCase { |> Project.lens.stats.currentCurrency .~ Project.Country.gb.currencyCode |> Project.lens.stats.currentCurrencyRate .~ .some(2.0) - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) .forEach { language, device, currentUser in withEnvironment(apiService: mockService, currentUser: currentUser, language: language) { let controller = PledgeViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -224,7 +220,6 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -269,7 +264,6 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -314,7 +308,6 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -360,7 +353,6 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -403,13 +395,12 @@ final class PledgeViewControllerTests: TestCase { |> Backing.lens.amount .~ 700.0 ) - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad]).forEach { language, device in + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad]).forEach { language, device in withEnvironment(apiService: mockService, currentUser: .template, language: language) { let controller = PledgeViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -453,13 +444,12 @@ final class PledgeViewControllerTests: TestCase { let response = UserEnvelope(me: self.userWithCards) let mockService = MockService(fetchGraphUserResult: .success(response)) - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad]).forEach { language, device in + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad]).forEach { language, device in withEnvironment(apiService: mockService, currentUser: .template, language: language) { let controller = PledgeViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -497,13 +487,12 @@ final class PledgeViewControllerTests: TestCase { let reward = Reward.template - orthogonalCombos(Language.allLanguages, Device.allCases).forEach { language, device in + combos(Language.allLanguages, Device.allCases).forEach { language, device in withEnvironment(apiService: mockService, currentUser: User.template, language: language) { let controller = PledgeViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -529,14 +518,13 @@ final class PledgeViewControllerTests: TestCase { let reward = Reward.template |> (Reward.lens.shipping .. Reward.Shipping.lens.enabled) .~ true - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) .forEach { language, device, currentUser in withEnvironment(language: language) { let controller = PledgeViewController.instantiate() let data = PledgeViewData( project: .template, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -566,14 +554,13 @@ final class PledgeViewControllerTests: TestCase { let reward = Reward.template |> (Reward.lens.shipping .. Reward.Shipping.lens.enabled) .~ true - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) .forEach { language, device, currentUser in withEnvironment(language: language) { let controller = PledgeViewController.instantiate() let data = PledgeViewData( project: .template, rewards: [reward, .noReward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1, Reward.noReward.id: 1], selectedLocationId: nil, refTag: nil, @@ -605,14 +592,13 @@ final class PledgeViewControllerTests: TestCase { |> (Reward.lens.shipping .. Reward.Shipping.lens.preference) .~ .local |> Reward.lens.localPickup .~ Location.losAngeles - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) .forEach { language, device, currentUser in withEnvironment(language: language) { let controller = PledgeViewController.instantiate() let data = PledgeViewData( project: .template, rewards: [reward, .noReward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1, Reward.noReward.id: 1], selectedLocationId: nil, refTag: nil, @@ -653,14 +639,13 @@ final class PledgeViewControllerTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1, addOnReward2], - selectedShippingRule: ShippingRule.template, selectedQuantities: [reward.id: 1, addOnReward1.id: 2, addOnReward2.id: 1], selectedLocationId: ShippingRule.template.id, refTag: .projectPage, context: .pledge ) - orthogonalCombos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) + combos(Language.allLanguages, [Device.phone4_7inch, Device.pad], [nil, User.template]) .forEach { language, device, currentUser in withEnvironment(language: language) { let controller = PledgeViewController.instantiate() diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_de_device_pad.png new file mode 100644 index 0000000000..6a8dc3d53f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png index 28b5b5ed47..867b40e80f 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_en_device_pad.png index 49be872925..1aa44666a9 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_en_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch.png new file mode 100644 index 0000000000..92db1d7474 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_es_device_pad.png new file mode 100644 index 0000000000..c4ff431aaf Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png index 44be683665..dba3251571 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_fr_device_pad.png index 71ec6e14f4..a10346290a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..d957d8847b Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_ja_device_pad.png new file mode 100644 index 0000000000..e5479de870 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png index b08a62501e..603f8c65b4 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_de_device_pad.png new file mode 100644 index 0000000000..6bd2164794 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png index 5ba2a411c1..93a1151d0b 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_en_device_pad.png index 1329f9e507..f12e55a0c5 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_en_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch.png new file mode 100644 index 0000000000..4d50116e43 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_es_device_pad.png new file mode 100644 index 0000000000..f0272dfb41 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png index 36dd55e031..789a75e3cd 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_fr_device_pad.png index 54f1e886cb..c69e0ffc56 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..0573a6689e Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_ja_device_pad.png new file mode 100644 index 0000000000..2f03b1ad1d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png index 3f556c2d76..c74b27de4f 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_pad.png new file mode 100644 index 0000000000..3afa96b014 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..c6a3ff846f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone4inch.png index edb372d25f..006b3fb9c2 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone4inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone5_5inch.png new file mode 100644 index 0000000000..b6391217f4 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone5_8inch.png new file mode 100644 index 0000000000..500ccc940c Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_pad.png new file mode 100644 index 0000000000..9beea85740 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png index ff49bebbba..b10ca87fb9 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone4inch.png new file mode 100644 index 0000000000..a1ddacb1ed Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone5_5inch.png new file mode 100644 index 0000000000..0ebeabadae Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..ce927ef673 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_pad.png new file mode 100644 index 0000000000..e422609636 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..7e822aa0db Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone4inch.png new file mode 100644 index 0000000000..8eca1c1240 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png index 83e1379089..8958bb7393 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone5_8inch.png new file mode 100644 index 0000000000..712985d8b1 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_pad.png new file mode 100644 index 0000000000..7a97990eec Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..dd839bf544 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone4inch.png new file mode 100644 index 0000000000..b64b673d83 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone5_5inch.png new file mode 100644 index 0000000000..b2a7a1c275 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png index 76366d4e92..eea4aefab2 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_pad.png index 07eb5958da..a6556ddb62 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..5102d74813 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone4inch.png new file mode 100644 index 0000000000..f6aec7d619 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone5_5inch.png new file mode 100644 index 0000000000..52b1cf8ae4 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone5_8inch.png new file mode 100644 index 0000000000..a563f7d3dd Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ChangePaymentMethodContext_UnavailableStoredCards.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_pad_LoggedIn.png new file mode 100644 index 0000000000..bdb858bf99 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_pad_LoggedOut.png new file mode 100644 index 0000000000..d941945619 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..a1873be8fe Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_phone4_7inch_LoggedOut.png index 839b085e2a..5ffaf32341 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_de_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_pad_LoggedIn.png index 7fdd3b4139..4a5f01d1ad 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_pad_LoggedOut.png new file mode 100644 index 0000000000..afa64a49e8 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..fd35ad64ec Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..ccd57e5097 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_en_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_pad_LoggedIn.png new file mode 100644 index 0000000000..deba8df8a6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_pad_LoggedOut.png new file mode 100644 index 0000000000..cb43f2ff6d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..91ae48fb9b Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_phone4_7inch_LoggedOut.png index fc1db9ccec..7c2682f205 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_es_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_pad_LoggedIn.png index 2923e71cc5..003ecaf1b7 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_pad_LoggedOut.png new file mode 100644 index 0000000000..725acc8db6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..87065cb6c5 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..b4807a320f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_fr_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_pad_LoggedIn.png new file mode 100644 index 0000000000..af9a778f11 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_pad_LoggedOut.png new file mode 100644 index 0000000000..ad3459632f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..2751e6045d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_phone4_7inch_LoggedOut.png index da4b5828d6..71dd32bc16 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_HasAddOns_ShippingSelected.lang_ja_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_FixPaymentMethod_ErroredCard.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_FixPaymentMethod_ErroredCard.lang_en_device_phone4_7inch.png index f6eda46127..1a8a9b91cb 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_FixPaymentMethod_ErroredCard.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_FixPaymentMethod_ErroredCard.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_pad_LoggedIn.png new file mode 100644 index 0000000000..218caf2032 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_pad_LoggedOut.png new file mode 100644 index 0000000000..e2608d591f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..43b66094a2 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch_LoggedOut.png index 2634e33f60..bf303f6ba1 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_pad_LoggedIn.png index c826f51dce..98a8ff27d9 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_pad_LoggedOut.png new file mode 100644 index 0000000000..f4c6ded8cb Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..62ec00043f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..eb0fdd8307 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_pad_LoggedIn.png new file mode 100644 index 0000000000..b5f6f41a26 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_pad_LoggedOut.png new file mode 100644 index 0000000000..a2ae18bebe Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..34f24c123a Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch_LoggedOut.png index 3ff7718487..b4226e381f 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_pad_LoggedIn.png index 3d95aa5d23..2ef89424da 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_pad_LoggedOut.png new file mode 100644 index 0000000000..9b5ba630ad Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..53d618b492 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..d3fefa2561 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_pad_LoggedIn.png new file mode 100644 index 0000000000..82b4867a41 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_pad_LoggedOut.png new file mode 100644 index 0000000000..b901ccc5bd Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..66fb816ff2 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch_LoggedOut.png index 08c37d155d..b72e678dee 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_pad_LoggedIn.png new file mode 100644 index 0000000000..c126038e03 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_pad_LoggedOut.png new file mode 100644 index 0000000000..98607cc12a Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..983dc845ca Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch_LoggedOut.png index 75844d4479..84374221d9 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_pad_LoggedIn.png index 6fb16f20a5..5b7f295769 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_pad_LoggedOut.png new file mode 100644 index 0000000000..8314d1f481 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..468fa517ee Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..19ed1319ab Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_pad_LoggedIn.png new file mode 100644 index 0000000000..e575d31555 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_pad_LoggedOut.png new file mode 100644 index 0000000000..0c90753c4d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..67420bb905 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch_LoggedOut.png index 5913e57f44..571b133ab8 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_pad_LoggedIn.png index 2ba819cd9b..640845996e 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_pad_LoggedOut.png new file mode 100644 index 0000000000..05652b3ef2 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..1e6ceef66a Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..7cd164be44 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_pad_LoggedIn.png new file mode 100644 index 0000000000..f098add2ec Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_pad_LoggedOut.png new file mode 100644 index 0000000000..03951aaf8d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..bcb9be0c95 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch_LoggedOut.png index e78c0e7ca1..aa37dde188 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_pad.png new file mode 100644 index 0000000000..20536b5439 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..d9f69c885b Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone4inch.png index 56b6040125..cb640673c4 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone4inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone5_5inch.png new file mode 100644 index 0000000000..7150b20974 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone5_8inch.png new file mode 100644 index 0000000000..d9f69c885b Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_pad.png new file mode 100644 index 0000000000..58f5bb109c Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png index b8f2c81c79..3e73c71ed0 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone4inch.png new file mode 100644 index 0000000000..33211fe0ae Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone5_5inch.png new file mode 100644 index 0000000000..51720e9674 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..3e73c71ed0 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_pad.png new file mode 100644 index 0000000000..17faa16ebb Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..213f8fe993 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone4inch.png new file mode 100644 index 0000000000..3784536086 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png index 134c2ab138..5e9e2b2786 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone5_8inch.png new file mode 100644 index 0000000000..213f8fe993 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_pad.png new file mode 100644 index 0000000000..d1d28c2f1c Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..b52fd9650d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone4inch.png new file mode 100644 index 0000000000..f215542e13 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone5_5inch.png new file mode 100644 index 0000000000..e302071863 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png index 21baa209da..b52fd9650d 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_pad.png index ae9c03c427..c33043101a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..262a6bc357 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone4inch.png new file mode 100644 index 0000000000..0481484a7a Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone5_5inch.png new file mode 100644 index 0000000000..02f5b325e6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone5_8inch.png new file mode 100644 index 0000000000..262a6bc357 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_pad.png new file mode 100644 index 0000000000..a702146445 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..1f02839e92 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone4inch.png new file mode 100644 index 0000000000..302c282b59 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone5_5inch.png new file mode 100644 index 0000000000..8af0bacc7f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone5_8inch.png new file mode 100644 index 0000000000..1f02839e92 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_pad.png new file mode 100644 index 0000000000..a9e2866ece Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone4_7inch.png new file mode 100644 index 0000000000..08252cc5dc Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone4inch.png new file mode 100644 index 0000000000..76a3013a0d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone5_5inch.png new file mode 100644 index 0000000000..a38a9046e4 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..08252cc5dc Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_pad.png new file mode 100644 index 0000000000..5b9fa26b5e Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..13e189c6ae Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone4inch.png new file mode 100644 index 0000000000..2e940366cf Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone5_5inch.png new file mode 100644 index 0000000000..074fdd9d01 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone5_8inch.png new file mode 100644 index 0000000000..13e189c6ae Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_pad.png new file mode 100644 index 0000000000..7a0b137270 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..ffcfc92f7a Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone4inch.png new file mode 100644 index 0000000000..8cd7e51fd5 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone5_5inch.png new file mode 100644 index 0000000000..02115ab0a5 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone5_8inch.png new file mode 100644 index 0000000000..ffcfc92f7a Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_pad.png new file mode 100644 index 0000000000..bcc0db1de6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..dc34a7bfc7 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone4inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone4inch.png new file mode 100644 index 0000000000..076d645615 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone5_5inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone5_5inch.png new file mode 100644 index 0000000000..e52eed5c0e Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone5_8inch.png new file mode 100644 index 0000000000..dc34a7bfc7 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_PledgeContext_UnavailableStoredCards_OptimizelyExperiementVariant1Enabled.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_pad_LoggedIn.png new file mode 100644 index 0000000000..1df8c3af74 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_pad_LoggedOut.png new file mode 100644 index 0000000000..b88badfc89 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..725459d9b5 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_phone4_7inch_LoggedOut.png index 178ef171aa..4af85882d4 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_de_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_pad_LoggedIn.png index 66e5adcb73..849f31048b 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_pad_LoggedOut.png new file mode 100644 index 0000000000..3bce9d440e Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..adfc1e7186 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..51ef44bcf4 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_en_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_pad_LoggedIn.png new file mode 100644 index 0000000000..87b8ac6755 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_pad_LoggedOut.png new file mode 100644 index 0000000000..4db3ae5990 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..8855472935 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_phone4_7inch_LoggedOut.png index c981c01bc7..77e2d4d999 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_es_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_pad_LoggedIn.png index ae7816bd15..52ed5d4ac5 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_pad_LoggedOut.png new file mode 100644 index 0000000000..8276ffad1b Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..71a373f1b6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..0721ad79d8 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_fr_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_pad_LoggedIn.png new file mode 100644 index 0000000000..ecd3028cef Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_pad_LoggedOut.png new file mode 100644 index 0000000000..43b983af38 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..46d813a01f Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png index 6a5ea54037..c8c6e2102b 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsRewardLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_pad_LoggedIn.png new file mode 100644 index 0000000000..3297cf4a96 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_pad_LoggedOut.png new file mode 100644 index 0000000000..5cd15859e9 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..acc2974afe Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_phone4_7inch_LoggedOut.png index 5f31590ff0..ec2262e58f 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_de_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_pad_LoggedIn.png index ee74e60f35..afce6e85c2 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_pad_LoggedOut.png new file mode 100644 index 0000000000..5b0cb105a7 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..cc72a640fa Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..b607612080 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_en_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_pad_LoggedIn.png new file mode 100644 index 0000000000..61e719a48e Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_pad_LoggedOut.png new file mode 100644 index 0000000000..9e3c710e2d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..a737253305 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_phone4_7inch_LoggedOut.png index 0ffd106193..dc680e66a3 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_es_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_pad_LoggedIn.png index bae72a42f6..fc33711255 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_pad_LoggedOut.png new file mode 100644 index 0000000000..3b289f3ff6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..2089ccdde8 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..94293b1180 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_fr_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_pad_LoggedIn.png new file mode 100644 index 0000000000..e37fbdad33 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_pad_LoggedOut.png new file mode 100644 index 0000000000..c3a0bc2cba Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..7b58c72604 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png index 7701bd4b16..742d7b2c7a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingLocationSection.lang_ja_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_pad_LoggedIn.png new file mode 100644 index 0000000000..2f821af9e6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_pad_LoggedOut.png new file mode 100644 index 0000000000..4d084879c5 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..3a725c3298 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_phone4_7inch_LoggedOut.png index 23ca923626..040e7cff7c 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_de_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_pad_LoggedIn.png index 604ff187da..25f62adb95 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_pad_LoggedOut.png new file mode 100644 index 0000000000..b2bff40d38 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..391ba187c6 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..953fbe5d03 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_en_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_pad_LoggedIn.png new file mode 100644 index 0000000000..e1859adbe2 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_pad_LoggedOut.png new file mode 100644 index 0000000000..ea6020e3ed Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..bbe77bbff9 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_phone4_7inch_LoggedOut.png index a10e982a47..67a09c76e6 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_es_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_pad_LoggedIn.png index 38abc965a2..1361b0464e 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_pad_LoggedIn.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_pad_LoggedOut.png new file mode 100644 index 0000000000..6455c99108 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..1574457d08 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_phone4_7inch_LoggedOut.png new file mode 100644 index 0000000000..b811b1fd49 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_fr_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_pad_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_pad_LoggedIn.png new file mode 100644 index 0000000000..082540b919 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_pad_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_pad_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_pad_LoggedOut.png new file mode 100644 index 0000000000..e7813c6057 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_pad_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_phone4_7inch_LoggedIn.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_phone4_7inch_LoggedIn.png new file mode 100644 index 0000000000..dc70251423 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_phone4_7inch_LoggedIn.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_phone4_7inch_LoggedOut.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_phone4_7inch_LoggedOut.png index d788b73e91..c2bd65d0b3 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_phone4_7inch_LoggedOut.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_ShowsShippingSummaryViewSection.lang_ja_device_phone4_7inch_LoggedOut.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_pad.png index 2ccf716408..990571204a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png index ee5306595b..5bd01c6ce4 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_pad.png index 4ca7286eff..954db3daf4 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch.png index 6bb902cc17..e5e6ef05a6 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_pad.png index 1b413f43e3..be519ce60a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png index b4d8bff135..43059fac5e 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_pad.png index 340970a209..5930f24b6a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch.png index 5f04d5d1cc..65ad63b4ff 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_pad.png index 3bf49074f5..95dc4d107c 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png index 39bec37716..1c59263492 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_de_device_pad.png new file mode 100644 index 0000000000..5c4c6651ec Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..08e226f4e4 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_en_device_pad.png new file mode 100644 index 0000000000..ba86dfec76 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_en_device_phone4_7inch.png new file mode 100644 index 0000000000..1d1d87781e Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_es_device_pad.png new file mode 100644 index 0000000000..c3d018c53d Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..03e6b6857c Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_fr_device_pad.png new file mode 100644 index 0000000000..4ee8614aa2 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..667280c8dc Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_ja_device_pad.png new file mode 100644 index 0000000000..6f93a32658 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..f7f802e5e5 Binary files /dev/null and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsFalse_OptimizelyExperimentVariant1Enabled.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_pad.png index 91570ae182..8589dd0b16 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png index 8a0120f42b..eb3b12e37a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_pad.png index 141db8ad8d..a3c553cecd 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch.png index c2b988e703..bd819f3d17 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_pad.png index 13cd21919b..626420b72c 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png index a47dea00f4..23d90b4899 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_pad.png index aa695d83db..0fbdc24d4c 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch.png index 4975b50fb2..1838074b42 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_pad.png index 25275e9bc3..7a4b68ab76 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png index a95fea393e..ef5d588997 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_NeedsConversion_IsTrue.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_pad.png index b04d59a264..441c37b3f2 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_phone4_7inch.png index d937970221..d8da8b7bfc 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_pad.png index 302a6fc20f..109ab63ab2 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_phone4_7inch.png index b28905f39a..15a2e64683 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_pad.png index 187e3dcd7f..a0b51dd05a 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_phone4_7inch.png index 856fa5581d..25d501a660 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_pad.png index 519ecf7a75..95cbc1d8dd 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_phone4_7inch.png index ab0e337268..8c46a48d3f 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_pad.png index 3f84811306..522927f527 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_phone4_7inch.png index 7b23dde675..ce5d6b7101 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withConversionLabel.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_pad.png index c7254eabf9..8d5c521470 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_phone4_7inch.png index 3f6a5ce365..b268fa37a4 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_pad.png index 935f86c229..9223678a9b 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_phone4_7inch.png index d5012cedb3..2eecf5c15c 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_pad.png index 2d679384a5..c3befe4901 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_phone4_7inch.png index d9cea0a7ac..e5f808c832 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_pad.png index d435dbbd3c..a187fa2db6 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_phone4_7inch.png index 232c564a05..8c66098ae3 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_pad.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_pad.png index 701c34a96a..9c69ce16a4 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_phone4_7inch.png index 1557d29eb5..952092d97b 100644 Binary files a/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_phone4_7inch.png and b/Kickstarter-iOS/Features/PledgeView/Controllers/__Snapshots__/PledgeViewControllerTests/testView_UpdateContext_withRewardIsLocalPickup.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewController.swift b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewController.swift index 94f43e48be..0d65995f3b 100644 --- a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewController.swift +++ b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewController.swift @@ -11,6 +11,10 @@ final class RewardAddOnSelectionViewController: UIViewController { private lazy var headerLabel: UILabel = UILabel(frame: .zero) private lazy var headerView: UIView = UIView(frame: .zero) private lazy var headerRootStackView: UIStackView = UIStackView(frame: .zero) + private lazy var pledgeShippingLocationViewController: PledgeShippingLocationViewController = { + PledgeShippingLocationViewController.instantiate() + |> \.delegate .~ self + }() private lazy var continueCTAView: RewardAddOnSelectionContinueCTAView = { RewardAddOnSelectionContinueCTAView(frame: .zero) @@ -92,8 +96,11 @@ final class RewardAddOnSelectionViewController: UIViewController { |> ksr_addSubviewToParent() |> ksr_constrainViewToEdgesInParent(priority: UILayoutPriority(rawValue: 999)) - _ = ([self.headerLabel], self.headerRootStackView) + _ = ([self.headerLabel, self.pledgeShippingLocationViewController.view], self.headerRootStackView) |> ksr_addArrangedSubviewsToStackView() + + self.addChild(self.pledgeShippingLocationViewController) + self.pledgeShippingLocationViewController.didMove(toParent: self) } private func setupConstraints() { @@ -139,12 +146,21 @@ final class RewardAddOnSelectionViewController: UIViewController { override func bindViewModel() { super.bindViewModel() + self.pledgeShippingLocationViewController.view.rac.hidden + = self.viewModel.outputs.shippingLocationViewIsHidden + self.viewModel.outputs.configureContinueCTAViewWithData .observeForUI() .observeValues { [weak self] data in self?.continueCTAView.configure(with: data) } + self.viewModel.outputs.configurePledgeShippingLocationViewControllerWithData + .observeForUI() + .observeValues { [weak self] data in + self?.pledgeShippingLocationViewController.configureWith(value: data) + } + self.viewModel.outputs.loadAddOnRewardsIntoDataSourceAndReloadTableView .observeForUI() .observeValues { [weak self] items in @@ -211,6 +227,25 @@ final class RewardAddOnSelectionViewController: UIViewController { } } +// MARK: - PledgeShippingLocationViewControllerDelegate + +extension RewardAddOnSelectionViewController: PledgeShippingLocationViewControllerDelegate { + func pledgeShippingLocationViewController( + _: PledgeShippingLocationViewController, + didSelect shippingRule: ShippingRule + ) { + self.viewModel.inputs.shippingRuleSelected(shippingRule) + } + + func pledgeShippingLocationViewControllerLayoutDidUpdate(_: PledgeShippingLocationViewController) { + self.tableView.ksr_sizeHeaderFooterViewsToFit() + } + + func pledgeShippingLocationViewControllerFailedToLoad(_: PledgeShippingLocationViewController) { + self.viewModel.inputs.shippingLocationViewDidFailToLoad() + } +} + // MARK: - RewardAddOnCardViewDelegate extension RewardAddOnSelectionViewController: RewardAddOnCardViewDelegate { diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewControllerTests.swift b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewControllerTests.swift index bc50f55e15..43af1e6a09 100644 --- a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewControllerTests.swift +++ b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/RewardAddOnSelectionViewControllerTests.swift @@ -38,14 +38,13 @@ final class RewardAddOnSelectionViewControllerTests: TestCase { let mockService = MockService(fetchRewardAddOnsSelectionViewRewardsResult: .success(project)) - orthogonalCombos(Language.allLanguages, Device.allCases).forEach { language, device in + combos(Language.allLanguages, Device.allCases).forEach { language, device in withEnvironment(apiService: mockService) { let controller = RewardAddOnSelectionViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -98,13 +97,12 @@ final class RewardAddOnSelectionViewControllerTests: TestCase { fetchRewardAddOnsSelectionViewRewardsResult: .success(project) ) - orthogonalCombos(Language.allLanguages, Device.allCases).forEach { language, device in + combos(Language.allLanguages, Device.allCases).forEach { language, device in withEnvironment(apiService: mockService) { let controller = RewardAddOnSelectionViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -116,6 +114,13 @@ final class RewardAddOnSelectionViewControllerTests: TestCase { self.scheduler.advance() + controller.pledgeShippingLocationViewController( + PledgeShippingLocationViewController.instantiate(), + didSelect: .template + ) + + self.scheduler.advance(by: .seconds(1)) + assertSnapshot( matching: parent.view, as: .image(perceptualPrecision: 0.98), @@ -196,13 +201,12 @@ final class RewardAddOnSelectionViewControllerTests: TestCase { fetchRewardAddOnsSelectionViewRewardsResult: .success(project) ) - orthogonalCombos(Language.allLanguages, Device.allCases).forEach { language, device in + combos(Language.allLanguages, Device.allCases).forEach { language, device in withEnvironment(apiService: mockService) { let controller = RewardAddOnSelectionViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -214,6 +218,13 @@ final class RewardAddOnSelectionViewControllerTests: TestCase { self.scheduler.advance() + controller.pledgeShippingLocationViewController( + PledgeShippingLocationViewController.instantiate(), + didSelect: shippingRule + ) + + self.scheduler.advance(by: .seconds(1)) + assertSnapshot( matching: parent.view, as: .image(perceptualPrecision: 0.98), @@ -231,14 +242,13 @@ final class RewardAddOnSelectionViewControllerTests: TestCase { let mockService = MockService(fetchRewardAddOnsSelectionViewRewardsResult: .failure(.couldNotParseJSON)) - orthogonalCombos(Language.allLanguages, Device.allCases).forEach { language, device in + combos(Language.allLanguages, Device.allCases).forEach { language, device in withEnvironment(apiService: mockService) { let controller = RewardAddOnSelectionViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -278,14 +288,13 @@ final class RewardAddOnSelectionViewControllerTests: TestCase { let mockService = MockService(fetchRewardAddOnsSelectionViewRewardsResult: .success(project)) - orthogonalCombos(Language.allLanguages, [Device.phone5_8inch, Device.pad]).forEach { language, device in + combos(Language.allLanguages, [Device.phone5_8inch, Device.pad]).forEach { language, device in withEnvironment(apiService: mockService, language: language) { let controller = RewardAddOnSelectionViewController.instantiate() let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone4inch.png index be6074023c..71d7a97a20 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone4inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone4_7inch.png index ce7a27e1ab..4a5d77e44a 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone5_5inch.png index 16beab10ed..f9fee955c2 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone5_5inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone5_8inch.png index ce7a27e1ab..4a5d77e44a 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_pad.png index 563c47a6c5..2eeda68adf 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_EmptyState.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_pad.png new file mode 100644 index 0000000000..c94c9a4bd0 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone4inch.png index cb386ca99c..0b692e76b3 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone4inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone5_5inch.png new file mode 100644 index 0000000000..024ef7b991 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone5_8inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_pad.png new file mode 100644 index 0000000000..c94c9a4bd0 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone4_7inch.png index ae374817f1..41a18b180c 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone4inch.png new file mode 100644 index 0000000000..0b692e76b3 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone5_5inch.png new file mode 100644 index 0000000000..024ef7b991 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_pad.png new file mode 100644 index 0000000000..c94c9a4bd0 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone4inch.png new file mode 100644 index 0000000000..0b692e76b3 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone5_5inch.png index 094b26306f..024ef7b991 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone5_5inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone5_8inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_pad.png new file mode 100644 index 0000000000..c94c9a4bd0 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone4inch.png new file mode 100644 index 0000000000..0b692e76b3 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone5_5inch.png new file mode 100644 index 0000000000..024ef7b991 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone5_8inch.png index ae374817f1..41a18b180c 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_pad.png index bd50ebc607..c94c9a4bd0 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone4inch.png new file mode 100644 index 0000000000..0b692e76b3 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone5_5inch.png new file mode 100644 index 0000000000..024ef7b991 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone5_8inch.png new file mode 100644 index 0000000000..41a18b180c Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Error.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_pad.png new file mode 100644 index 0000000000..e0457e3637 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone4inch.png index 54a5b0d71a..20b78d0507 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone4inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone5_5inch.png new file mode 100644 index 0000000000..6d0a864487 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone5_8inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_pad.png new file mode 100644 index 0000000000..e0457e3637 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone4_7inch.png index 064bcc7e81..162c5a978b 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone4inch.png new file mode 100644 index 0000000000..20b78d0507 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone5_5inch.png new file mode 100644 index 0000000000..6d0a864487 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_pad.png new file mode 100644 index 0000000000..e0457e3637 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone4inch.png new file mode 100644 index 0000000000..20b78d0507 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone5_5inch.png index d20448b0c8..6d0a864487 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone5_5inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone5_8inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_pad.png new file mode 100644 index 0000000000..e0457e3637 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone4inch.png new file mode 100644 index 0000000000..20b78d0507 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone5_5inch.png new file mode 100644 index 0000000000..6d0a864487 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone5_8inch.png index 064bcc7e81..162c5a978b 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_pad.png index 635a20d661..e0457e3637 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone4inch.png new file mode 100644 index 0000000000..20b78d0507 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone5_5inch.png new file mode 100644 index 0000000000..6d0a864487 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone5_8inch.png new file mode 100644 index 0000000000..162c5a978b Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShipping.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_de_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_de_device_pad.png new file mode 100644 index 0000000000..4788c226aa Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_de_device_phone5_8inch.png index b06ae9aa20..9678cbaf78 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_de_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_en_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_en_device_pad.png index ae5ff0e695..af787b7e1d 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_en_device_pad.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..e97d77b0e0 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_es_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_es_device_pad.png new file mode 100644 index 0000000000..10dc500556 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_es_device_phone5_8inch.png index 64d4e47c11..e1cbffa18b 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_es_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_fr_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_fr_device_pad.png index cb829f7039..10b03acd1e 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_fr_device_phone5_8inch.png new file mode 100644 index 0000000000..0ab3bc94f2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_ja_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_ja_device_pad.png new file mode 100644 index 0000000000..7f3a361348 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_ja_device_phone5_8inch.png index 6bfdefe383..ebfb59677a 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_ja_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_NoShippingWithLocalPickup_Success.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone4inch.png index be6074023c..71d7a97a20 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone4inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone4_7inch.png index ce7a27e1ab..4a5d77e44a 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone5_5inch.png index 16beab10ed..f9fee955c2 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone5_5inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_pad.png new file mode 100644 index 0000000000..2eeda68adf Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone5_8inch.png index ce7a27e1ab..4a5d77e44a 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_fr_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_pad.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_pad.png index 563c47a6c5..2eeda68adf 100644 Binary files a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_pad.png and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone4_7inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone4inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone4inch.png new file mode 100644 index 0000000000..71d7a97a20 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone4inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone5_5inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone5_5inch.png new file mode 100644 index 0000000000..f9fee955c2 Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone5_5inch.png differ diff --git a/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone5_8inch.png new file mode 100644 index 0000000000..4a5d77e44a Binary files /dev/null and b/Kickstarter-iOS/Features/RewardAddOnSelection/Controller/__Snapshots__/RewardAddOnSelectionViewControllerTests/testView_Shipping.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewController.swift b/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewController.swift index ab13dbf4b5..cb36331491 100644 --- a/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewController.swift +++ b/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewController.swift @@ -20,13 +20,6 @@ final class RewardsCollectionViewController: UICollectionViewController { |> \.translatesAutoresizingMaskIntoConstraints .~ false }() - /// The bottom-up modal for selecting a new shipping location - private lazy var pledgeShippingLocationViewController = { - PledgeShippingLocationViewController.instantiate() - |> \.delegate .~ self - |> \.view.layoutMargins .~ .init(all: Styles.grid(3)) - }() - private let layout: UICollectionViewFlowLayout = { UICollectionViewFlowLayout() |> \.minimumLineSpacing .~ Styles.grid(3) @@ -73,19 +66,14 @@ final class RewardsCollectionViewController: UICollectionViewController { _ = self |> \.extendedLayoutIncludesOpaqueBars .~ true + if featurePostCampaignPledgeEnabled() { + _ = (self.headerView, self.view) + |> ksr_addSubviewToParent() + } + _ = self.collectionView |> \.dataSource .~ self.dataSource - _ = (self.headerView, self.view) - |> ksr_addSubviewToParent() - - /// Adding this to the CollectionView Header's rootStackView from here so that we can handle the shipping view's delegates from this view controller. - _ = ([self.pledgeShippingLocationViewController.view], self.headerView.rootStackView) - |> ksr_addArrangedSubviewsToStackView() - - self.addChild(self.pledgeShippingLocationViewController) - self.pledgeShippingLocationViewController.didMove(toParent: self) - _ = (self.rewardsCollectionFooterView, self.view) |> ksr_addSubviewToParent() @@ -100,7 +88,6 @@ final class RewardsCollectionViewController: UICollectionViewController { self.setupConstraints() self.viewModel.inputs.viewDidLoad() - self.viewModel.inputs.shippingRuleSelected(nil) } override func viewDidAppear(_ animated: Bool) { @@ -144,7 +131,6 @@ final class RewardsCollectionViewController: UICollectionViewController { |> checkoutBackgroundStyle _ = self.headerView - |> \.backgroundColor .~ .ksr_alert |> \.layoutMargins .~ .init(all: Styles.grid(3)) _ = self.collectionView @@ -227,17 +213,6 @@ final class RewardsCollectionViewController: UICollectionViewController { .observeValues { [weak self] title, message in self?.showEditRewardConfirmationPrompt(title: title, message: message) } - - // MARK: - Shipping Location Outputs - - self.pledgeShippingLocationViewController.view.rac.hidden = self.viewModel.outputs - .shippingLocationViewHidden - - self.viewModel.outputs.configureShippingLocationViewWithData - .observeForUI() - .observeValues { [weak self] data in - self?.pledgeShippingLocationViewController.configureWith(value: data) - } } // MARK: - Functions @@ -246,16 +221,24 @@ final class RewardsCollectionViewController: UICollectionViewController { _ = self.collectionView |> \.translatesAutoresizingMaskIntoConstraints .~ false + if featurePostCampaignPledgeEnabled() { + self.headerView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true + self.headerView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true + self.headerView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true + } + NSLayoutConstraint.activate([ - self.headerView.leftAnchor.constraint(equalTo: self.view.leftAnchor), - self.headerView.rightAnchor.constraint(equalTo: self.view.rightAnchor), - self.headerView.topAnchor.constraint(equalTo: self.view.topAnchor), self.rewardsCollectionFooterView.leftAnchor.constraint(equalTo: self.view.leftAnchor), self.rewardsCollectionFooterView.rightAnchor.constraint(equalTo: self.view.rightAnchor), self.rewardsCollectionFooterView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor), self.collectionView.leftAnchor.constraint(equalTo: self.view.leftAnchor), self.collectionView.rightAnchor.constraint(equalTo: self.view.rightAnchor), - self.collectionView.topAnchor.constraint(equalTo: self.headerView.bottomAnchor) + self.collectionView.topAnchor + .constraint( + equalTo: featurePostCampaignPledgeEnabled() + ? self.headerView.bottomAnchor + : self.view.topAnchor + ) ]) self.collectionViewBottomConstraintFooterView = self.collectionView.bottomAnchor @@ -385,22 +368,6 @@ extension RewardsCollectionViewController: RewardCellDelegate { } } -// MARK: - PledgeShippingLocationViewControllerDelegate - -extension RewardsCollectionViewController: PledgeShippingLocationViewControllerDelegate { - func pledgeShippingLocationViewController( - _: PledgeShippingLocationViewController, - didSelect shippingRule: ShippingRule - ) { - self.viewModel.inputs.shippingRuleSelected(shippingRule) - } - - func pledgeShippingLocationViewControllerLayoutDidUpdate(_: PledgeShippingLocationViewController) {} - func pledgeShippingLocationViewControllerFailedToLoad(_: PledgeShippingLocationViewController) { - self.viewModel.inputs.shippingLocationViewDidFailToLoad() - } -} - // MARK: Styles private var collectionViewStyle: CollectionViewStyle = { collectionView -> UICollectionView in diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewControllerTests.swift b/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewControllerTests.swift index eb08817ad8..d78fa01e32 100644 --- a/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewControllerTests.swift +++ b/Kickstarter-iOS/Features/RewardsCollection/Controller/RewardsCollectionViewControllerTests.swift @@ -21,36 +21,11 @@ final class RewardsCollectionViewControllerTests: TestCase { } func testRewards_NonBacker_LiveProject() { - let shippingRules = [ - ShippingRule.template - |> ShippingRule.lens.location .~ .brooklyn, - ShippingRule.template - |> ShippingRule.lens.location .~ .canada, - ShippingRule.template - |> ShippingRule.lens.location .~ .australia - ] - - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true - |> Reward.lens.shipping.preference .~ .unrestricted - |> Reward.lens.localPickup .~ nil - |> Reward.lens.isAvailable .~ true - let project = Project.cosmicSurgery - |> Project.lens.rewardData.rewards .~ [reward] |> Project.lens.state .~ .live - let mockService = MockService( - fetchShippingRulesResult: .success(shippingRules), - fetchRewardAddOnsSelectionViewRewardsResult: .success(project) - ) - let language = Language.en, device = Device.phone4_7inch - withEnvironment( - apiService: mockService, - language: language, - locale: .init(identifier: language.rawValue) - ) { + withEnvironment(language: language, locale: .init(identifier: language.rawValue)) { let vc = RewardsCollectionViewController.instantiate( with: project, refTag: nil, @@ -58,15 +33,6 @@ final class RewardsCollectionViewControllerTests: TestCase { ) let (parent, _) = traitControllers(device: device, orientation: .portrait, child: vc) - self.scheduler.advance() - - vc.pledgeShippingLocationViewController( - PledgeShippingLocationViewController.instantiate(), - didSelect: .template - ) - - self.scheduler.advance(by: .seconds(1)) - assertSnapshot( matching: parent.view, as: .image(perceptualPrecision: 0.98), @@ -76,30 +42,12 @@ final class RewardsCollectionViewControllerTests: TestCase { } func testRewards_NonBacker_LiveProject_Landscape() { - let shippingRules = [ - ShippingRule.template - |> ShippingRule.lens.location .~ .brooklyn, - ShippingRule.template - |> ShippingRule.lens.location .~ .canada, - ShippingRule.template - |> ShippingRule.lens.location .~ .australia - ] - let project = Project.cosmicSurgery |> Project.lens.state .~ .live |> Project.lens.rewardData.rewards %~ { Array($0[1...3]) } - let mockService = MockService( - fetchShippingRulesResult: .success(shippingRules), - fetchRewardAddOnsSelectionViewRewardsResult: .success(project) - ) - let language = Language.de, device = Device.pad - withEnvironment( - apiService: mockService, - language: language, - locale: .init(identifier: language.rawValue) - ) { + withEnvironment(language: language, locale: .init(identifier: language.rawValue)) { let vc = RewardsCollectionViewController.instantiate( with: project, refTag: nil, @@ -107,15 +55,6 @@ final class RewardsCollectionViewControllerTests: TestCase { ) let (parent, _) = traitControllers(device: device, orientation: .landscape, child: vc) - self.scheduler.advance() - - vc.pledgeShippingLocationViewController( - PledgeShippingLocationViewController.instantiate(), - didSelect: .template - ) - - self.scheduler.advance(by: .seconds(1)) - assertSnapshot( matching: parent.view, as: .image(perceptualPrecision: 0.98), @@ -125,24 +64,9 @@ final class RewardsCollectionViewControllerTests: TestCase { } func testRewards_Backer_LiveProject_Landscape() { - let shippingRules = [ - ShippingRule.template - |> ShippingRule.lens.location .~ .brooklyn, - ShippingRule.template - |> ShippingRule.lens.location .~ .canada, - ShippingRule.template - |> ShippingRule.lens.location .~ .australia - ] - - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true - |> Reward.lens.shipping.preference .~ .unrestricted - |> Reward.lens.localPickup .~ nil - |> Reward.lens.isAvailable .~ true - + let reward = Project.cosmicSurgery.rewards[3] let project = Project.cosmicSurgery |> Project.lens.state .~ .live - |> Project.lens.rewardData.rewards .~ [reward] |> Project.lens.personalization.isBacking .~ true |> Project.lens.personalization.backing .~ ( .template @@ -153,17 +77,8 @@ final class RewardsCollectionViewControllerTests: TestCase { |> Backing.lens.addOns .~ [] ) - let mockService = MockService( - fetchShippingRulesResult: .success(shippingRules), - fetchRewardAddOnsSelectionViewRewardsResult: .success(project) - ) - let language = Language.es, device = Device.phone5_8inch - withEnvironment( - apiService: mockService, - language: language, - locale: .init(identifier: language.rawValue) - ) { + withEnvironment(language: language, locale: .init(identifier: language.rawValue)) { let vc = RewardsCollectionViewController.instantiate( with: project, refTag: nil, @@ -171,15 +86,6 @@ final class RewardsCollectionViewControllerTests: TestCase { ) let (parent, _) = traitControllers(device: device, orientation: .landscape, child: vc) - self.scheduler.advance() - - vc.pledgeShippingLocationViewController( - PledgeShippingLocationViewController.instantiate(), - didSelect: .template - ) - - self.scheduler.advance(by: .seconds(1)) - assertSnapshot( matching: parent.view, as: .image(perceptualPrecision: 0.98), @@ -189,17 +95,7 @@ final class RewardsCollectionViewControllerTests: TestCase { } func testRewards_LocalPickUp_LiveProject_Landscape() { - let shippingRules = [ - ShippingRule.template - |> ShippingRule.lens.location .~ .brooklyn, - ShippingRule.template - |> ShippingRule.lens.location .~ .canada, - ShippingRule.template - |> ShippingRule.lens.location .~ .australia - ] - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true |> Reward.lens.shipping.preference .~ .local |> Reward.lens.localPickup .~ .canada |> Reward.lens.isAvailable .~ true @@ -208,14 +104,8 @@ final class RewardsCollectionViewControllerTests: TestCase { |> Project.lens.state .~ .live |> Project.lens.rewardData.rewards .~ [reward] - let mockService = MockService( - fetchShippingRulesResult: .success(shippingRules), - fetchRewardAddOnsSelectionViewRewardsResult: .success(project) - ) - let language = Language.fr, device = Device.pad withEnvironment( - apiService: mockService, language: language, locale: .init(identifier: language.rawValue) ) { @@ -226,35 +116,12 @@ final class RewardsCollectionViewControllerTests: TestCase { ) let (parent, _) = traitControllers(device: device, orientation: .landscape, child: vc) - self.scheduler.advance() - - vc.pledgeShippingLocationViewController( - PledgeShippingLocationViewController.instantiate(), - didSelect: .template - ) - - self.scheduler.advance(by: .seconds(1)) - - assertSnapshot( - matching: parent.view, - as: .image, - named: "lang_\(language)_device_\(device)" - ) + assertSnapshot(matching: parent.view, as: .image, named: "lang_\(language)_device_\(device)") } } func testRewards_LocalPickUp_LiveProject_Portrait() { - let shippingRules = [ - ShippingRule.template - |> ShippingRule.lens.location .~ .brooklyn, - ShippingRule.template - |> ShippingRule.lens.location .~ .canada, - ShippingRule.template - |> ShippingRule.lens.location .~ .australia - ] - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true |> Reward.lens.shipping.preference .~ .local |> Reward.lens.localPickup .~ .canada |> Reward.lens.isAvailable .~ true @@ -263,14 +130,8 @@ final class RewardsCollectionViewControllerTests: TestCase { |> Project.lens.state .~ .live |> Project.lens.rewardData.rewards .~ [reward] - let mockService = MockService( - fetchShippingRulesResult: .success(shippingRules), - fetchRewardAddOnsSelectionViewRewardsResult: .success(project) - ) - let language = Language.ja, device = Device.phone5_8inch withEnvironment( - apiService: mockService, language: language, locale: .init(identifier: language.rawValue) ) { @@ -281,35 +142,12 @@ final class RewardsCollectionViewControllerTests: TestCase { ) let (parent, _) = traitControllers(device: device, orientation: .portrait, child: vc) - self.scheduler.advance() - - vc.pledgeShippingLocationViewController( - PledgeShippingLocationViewController.instantiate(), - didSelect: .template - ) - - self.scheduler.advance(by: .seconds(1)) - - assertSnapshot( - matching: parent.view, - as: .image, - named: "lang_\(language)_device_\(device)" - ) + assertSnapshot(matching: parent.view, as: .image, named: "lang_\(language)_device_\(device)") } } func testRewards_LocalPickUp_RewardNotBacked_AllRewardsShown_Success() { - let shippingRules = [ - ShippingRule.template - |> ShippingRule.lens.location .~ .brooklyn, - ShippingRule.template - |> ShippingRule.lens.location .~ .canada, - ShippingRule.template - |> ShippingRule.lens.location .~ .australia - ] - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true |> Reward.lens.shipping.preference .~ .local |> Reward.lens.localPickup .~ .canada |> Reward.lens.isAvailable .~ true @@ -318,14 +156,8 @@ final class RewardsCollectionViewControllerTests: TestCase { |> Project.lens.state .~ .live |> Project.lens.rewardData.rewards .~ [.noReward, reward] - let mockService = MockService( - fetchShippingRulesResult: .success(shippingRules), - fetchRewardAddOnsSelectionViewRewardsResult: .success(project) - ) - let language = Language.en, device = Device.phone5_8inch withEnvironment( - apiService: mockService, language: language, locale: .init(identifier: language.rawValue) ) { @@ -336,38 +168,14 @@ final class RewardsCollectionViewControllerTests: TestCase { ) let (parent, _) = traitControllers(device: device, orientation: .portrait, child: vc) - self.scheduler.advance() - - vc.pledgeShippingLocationViewController( - PledgeShippingLocationViewController.instantiate(), - didSelect: .template - ) - - self.scheduler.advance(by: .seconds(1)) - - assertSnapshot( - matching: parent.view, - as: .image, - named: "lang_\(language)_device_\(device)" - ) + assertSnapshot(matching: parent.view, as: .image, named: "lang_\(language)_device_\(device)") } } func testRewards_LocalPickUp_RewardBacked_LocalPickupRewardShown_Success() { - let shippingRules = [ - ShippingRule.template - |> ShippingRule.lens.location .~ .brooklyn, - ShippingRule.template - |> ShippingRule.lens.location .~ .canada, - ShippingRule.template - |> ShippingRule.lens.location .~ .australia - ] - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true |> Reward.lens.shipping.preference .~ .local |> Reward.lens.localPickup .~ .canada - |> Reward.lens.isAvailable .~ true let project = Project.cosmicSurgery |> Project.lens.state .~ .live @@ -378,14 +186,8 @@ final class RewardsCollectionViewControllerTests: TestCase { ) |> Project.lens.rewardData.rewards .~ [reward] - let mockService = MockService( - fetchShippingRulesResult: .success(shippingRules), - fetchRewardAddOnsSelectionViewRewardsResult: .success(project) - ) - let language = Language.de, device = Device.phone5_8inch withEnvironment( - apiService: mockService, language: language, locale: .init(identifier: language.rawValue) ) { @@ -396,20 +198,7 @@ final class RewardsCollectionViewControllerTests: TestCase { ) let (parent, _) = traitControllers(device: device, orientation: .portrait, child: vc) - self.scheduler.advance() - - vc.pledgeShippingLocationViewController( - PledgeShippingLocationViewController.instantiate(), - didSelect: .template - ) - - self.scheduler.advance(by: .seconds(1)) - - assertSnapshot( - matching: parent.view, - as: .image, - named: "lang_\(language)_device_\(device)" - ) + assertSnapshot(matching: parent.view, as: .image, named: "lang_\(language)_device_\(device)") } } } diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_Backer_LiveProject_Landscape.lang_es_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_Backer_LiveProject_Landscape.lang_es_device_phone5_8inch.png index 7c1f7898ad..c1813d029a 100644 Binary files a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_Backer_LiveProject_Landscape.lang_es_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_Backer_LiveProject_Landscape.lang_es_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Landscape.lang_fr_device_pad.png b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Landscape.lang_fr_device_pad.png index 6f6296252c..8fbac10ee3 100644 Binary files a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Landscape.lang_fr_device_pad.png and b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Landscape.lang_fr_device_pad.png differ diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Portrait.lang_ja_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Portrait.lang_ja_device_phone5_8inch.png index fd7f96e5f1..d245c72f1a 100644 Binary files a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Portrait.lang_ja_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_LiveProject_Portrait.lang_ja_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardBacked_LocalPickupRewardShown_Success.lang_de_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardBacked_LocalPickupRewardShown_Success.lang_de_device_phone5_8inch.png index 86e8e512b1..5c725c1b64 100644 Binary files a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardBacked_LocalPickupRewardShown_Success.lang_de_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardBacked_LocalPickupRewardShown_Success.lang_de_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardNotBacked_AllRewardsShown_Success.lang_en_device_phone5_8inch.png b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardNotBacked_AllRewardsShown_Success.lang_en_device_phone5_8inch.png index 3bfeef08bf..dd981bd893 100644 Binary files a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardNotBacked_AllRewardsShown_Success.lang_en_device_phone5_8inch.png and b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_LocalPickUp_RewardNotBacked_AllRewardsShown_Success.lang_en_device_phone5_8inch.png differ diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject.lang_en_device_phone4_7inch.png b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject.lang_en_device_phone4_7inch.png index 12e059bf69..c8ce448135 100644 Binary files a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject.lang_en_device_phone4_7inch.png and b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject.lang_en_device_phone4_7inch.png differ diff --git a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject_Landscape.lang_de_device_pad.png b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject_Landscape.lang_de_device_pad.png index 4a3196da22..957e33dcef 100644 Binary files a/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject_Landscape.lang_de_device_pad.png and b/Kickstarter-iOS/Features/RewardsCollection/Controller/__Snapshots__/RewardsCollectionViewControllerTests/testRewards_NonBacker_LiveProject_Landscape.lang_de_device_pad.png differ diff --git a/Kickstarter-iOS/SharedViews/HeaderFooterViews/RewardsCollectionViewHeaderView.swift b/Kickstarter-iOS/SharedViews/HeaderFooterViews/RewardsCollectionViewHeaderView.swift index 757dc98f63..cfbcda40c5 100644 --- a/Kickstarter-iOS/SharedViews/HeaderFooterViews/RewardsCollectionViewHeaderView.swift +++ b/Kickstarter-iOS/SharedViews/HeaderFooterViews/RewardsCollectionViewHeaderView.swift @@ -6,7 +6,6 @@ import UIKit public final class RewardsCollectionViewHeaderView: UICollectionReusableView { // MARK: - Properties - public let rootStackView: UIStackView = { UIStackView(frame: .zero) }() private var label: UILabel = { UILabel(frame: .zero) }() override init(frame: CGRect) { @@ -27,18 +26,12 @@ public final class RewardsCollectionViewHeaderView: UICollectionReusableView { _ = self |> baseStyle - _ = self.rootStackView - |> rootStackViewStyle - _ = self.label |> labelStyle } private func setupSubviews() { - _ = ([self.label], self.rootStackView) - |> ksr_addArrangedSubviewsToStackView() - - _ = (self.rootStackView, self) + _ = (self.label, self) |> ksr_addSubviewToParent() |> ksr_constrainViewToMarginsInParent(priority: .defaultHigh) @@ -47,23 +40,20 @@ public final class RewardsCollectionViewHeaderView: UICollectionReusableView { } } -private func baseStyle(_ view: UIView) { - view.layoutMargins = .init( - top: Styles.grid(4), - left: Styles.grid(3), - bottom: Styles.grid(1), - right: Styles.grid(3) - ) - view.backgroundColor = .clear -} - -private func rootStackViewStyle(_ stackView: UIStackView) { - stackView.axis = NSLayoutConstraint.Axis.vertical - stackView.spacing = Styles.grid(2) +private let baseStyle: ViewStyle = { view in + view + |> \.layoutMargins .~ .init( + top: Styles.grid(4), + left: Styles.grid(3), + bottom: Styles.grid(1), + right: Styles.grid(3) + ) + |> \.backgroundColor .~ .clear } -private func labelStyle(_ label: UILabel) { - label.numberOfLines = 1 - label.textColor = UIColor.ksr_support_700 - label.font = UIFont.ksr_title2().bolded +private let labelStyle: LabelStyle = { label in + label + |> \.numberOfLines .~ 1 + |> \.textColor .~ UIColor.ksr_support_700 + |> \.font .~ UIFont.ksr_title2().bolded } diff --git a/KsApi/models/Reward.swift b/KsApi/models/Reward.swift index 5d7af43201..df4cba33f7 100644 --- a/KsApi/models/Reward.swift +++ b/KsApi/models/Reward.swift @@ -41,22 +41,6 @@ public struct Reward { return self.endsAt != nil } - public var isRestrictedShippingPreference: Bool { - return self.shipping.preference == .restricted - } - - public var isUnRestrictedShippingPreference: Bool { - return self.shipping.preference == .unrestricted - } - - public var isLocalShippingPreference: Bool { - return self.shipping.preference == .local - } - - public var hasNoShippingPreference: Bool { - return self.shipping.preference == Reward.Shipping.Preference.none - } - /** Returns the closest matching `ShippingRule` for this `Reward` to `otherShippingRule`. If no match is found `otherShippingRule` is returned, this is to be backward-compatible diff --git a/Library/ViewModels/ConfirmDetailsViewModelTests.swift b/Library/ViewModels/ConfirmDetailsViewModelTests.swift index 8107ed03e0..4507fe9def 100644 --- a/Library/ViewModels/ConfirmDetailsViewModelTests.swift +++ b/Library/ViewModels/ConfirmDetailsViewModelTests.swift @@ -35,9 +35,6 @@ final class ConfirmDetailsViewModelTests: TestCase { private let showErrorBannerWithMessage = TestObserver() - let shippingRule = ShippingRule.template - |> ShippingRule.lens.location .~ (.template |> Location.lens.id .~ 55) - override func setUp() { super.setUp() @@ -79,7 +76,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: Project.template, rewards: [Reward.template], - selectedShippingRule: self.shippingRule, selectedQuantities: [Reward.template.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -112,7 +108,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: Project.template, rewards: [Reward.template], - selectedShippingRule: self.shippingRule, selectedQuantities: [Reward.template.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -160,8 +155,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -194,8 +188,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -225,8 +218,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -255,8 +247,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -283,8 +274,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -311,8 +301,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -339,8 +328,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -376,8 +364,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -426,8 +413,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -479,8 +465,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, context: .pledge @@ -543,8 +528,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, context: .pledge @@ -569,8 +553,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, context: .pledge @@ -595,8 +578,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, context: .pledge @@ -623,7 +605,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: nil, refTag: nil, @@ -654,7 +635,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: nil, refTag: nil, @@ -682,8 +662,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, context: .pledge @@ -711,8 +690,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], + selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, context: .pledge @@ -743,7 +721,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: nil, refTag: nil, @@ -774,7 +751,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: shippingRule.id, refTag: nil, @@ -814,7 +790,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: shippingRule.id, refTag: nil, @@ -858,7 +833,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1, addOnReward2], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1, addOnReward2.id: 2], selectedLocationId: shippingRule.location.id, refTag: nil, @@ -900,7 +874,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: shippingRule.id, refTag: nil, @@ -943,8 +916,7 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: expectedRewards, - - selectedShippingRule: shippingRule, selectedQuantities: selectedQuantities, + selectedQuantities: selectedQuantities, selectedLocationId: ShippingRule.template.id, refTag: nil, context: .pledge @@ -1020,7 +992,6 @@ final class ConfirmDetailsViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: ShippingRule.template.id, refTag: nil, diff --git a/Library/ViewModels/ManagePledgeViewModel.swift b/Library/ViewModels/ManagePledgeViewModel.swift index 0aa5fdd7f1..dc7433a6ca 100644 --- a/Library/ViewModels/ManagePledgeViewModel.swift +++ b/Library/ViewModels/ManagePledgeViewModel.swift @@ -446,7 +446,6 @@ private func pledgeViewData( return PledgeViewData( project: project, rewards: rewards, - selectedShippingRule: nil, selectedQuantities: selectedRewardQuantities(in: backing), selectedLocationId: backing.locationId, refTag: nil, diff --git a/Library/ViewModels/ManagePledgeViewModelTests.swift b/Library/ViewModels/ManagePledgeViewModelTests.swift index b528575366..9fcfd5ef72 100644 --- a/Library/ViewModels/ManagePledgeViewModelTests.swift +++ b/Library/ViewModels/ManagePledgeViewModelTests.swift @@ -503,7 +503,6 @@ internal final class ManagePledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: nil, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -627,7 +626,6 @@ internal final class ManagePledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: nil, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -681,7 +679,6 @@ internal final class ManagePledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [baseReward, addOn1, addOn2], - selectedShippingRule: nil, selectedQuantities: [baseReward.id: 1, addOn1.id: 1, addOn2.id: 2], selectedLocationId: nil, refTag: nil, @@ -1434,7 +1431,6 @@ internal final class ManagePledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: nil, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, diff --git a/Library/ViewModels/PledgeShippingLocationViewModel.swift b/Library/ViewModels/PledgeShippingLocationViewModel.swift index fe5dcb914e..37b4acaa1e 100644 --- a/Library/ViewModels/PledgeShippingLocationViewModel.swift +++ b/Library/ViewModels/PledgeShippingLocationViewModel.swift @@ -52,32 +52,17 @@ public final class PledgeShippingLocationViewModel: PledgeShippingLocationViewMo let selectedLocationId = configData .map { $0.3 } - let shippingShouldBeginLoading = configData - .mapConst(true) - - let shippingRulesEvent = project - .switchMap { project -> SignalProducer.Event, Never> in - /// Get all of the reward IDs we'll need to fetch the Shipping Rules. See inner method logic for more details. - let rewardIDsToQuery: Set = getRewardIDsToQuery(for: project) - - /// Initializing the result with a fetch using the first reward ID in the Set to avoid optional warnings - var queryResult: SignalProducer.Event, Never>? - - /// Fetch the shipping rules for each reward and then consolidate each corresponding SignalProducer into the `queryResult` variable using .merge(with:). - rewardIDsToQuery.forEach { id in - let fetchResult = AppEnvironment.current.apiService.fetchRewardShippingRules( - projectId: project.id, - rewardId: id - ) + let shippingShouldBeginLoading = reward + .map { $0.shipping.enabled } + + let shippingRulesEvent = Signal.zip(project, reward) + .filter { _, reward in reward.shipping.enabled } + .switchMap { project, reward -> SignalProducer.Event, Never> in + AppEnvironment.current.apiService.fetchRewardShippingRules(projectId: project.id, rewardId: reward.id) .ksr_delay(AppEnvironment.current.apiDelayInterval, on: AppEnvironment.current.scheduler) .map(ShippingRulesEnvelope.lens.shippingRules.view) .retry(upTo: 3) .materialize() - - queryResult = queryResult?.merge(with: fetchResult) ?? fetchResult - } - - return queryResult ?? SignalProducer(value: .value([])) } let shippingRulesLoadingCompleted = shippingRulesEvent @@ -97,16 +82,14 @@ public final class PledgeShippingLocationViewModel: PledgeShippingLocationViewMo let initialShippingRule = Signal.combineLatest( project, - shippingRules.skipRepeats(), + shippingRules, selectedLocationId ) .map(determineShippingRule) - self.shippingRulesError = shippingRulesEvent.errors() - .map { _ in - Strings.We_were_unable_to_load_the_shipping_destinations() - } - .skipRepeats() + self.shippingRulesError = shippingRulesEvent.errors().map { _ in + Strings.We_were_unable_to_load_the_shipping_destinations() + } self.notifyDelegateOfSelectedShippingRule = Signal.merge( initialShippingRule.skipNil(), @@ -126,9 +109,7 @@ public final class PledgeShippingLocationViewModel: PledgeShippingLocationViewMo .takeWhen(self.shippingLocationButtonTappedSignal) self.amountAttributedText = Signal.combineLatest(project, shippingAmount) - .map { project, shippingAmount in - shippingValue(of: project, with: shippingAmount) - } + .map { project, shippingAmount in shippingValue(of: project, with: shippingAmount) } .skipNil() self.shippingLocationButtonTitle = self.notifyDelegateOfSelectedShippingRule @@ -186,30 +167,6 @@ public final class PledgeShippingLocationViewModel: PledgeShippingLocationViewMo // MARK: - Functions -private func getRewardIDsToQuery(for project: Project) -> Set { - /// Using a Set to avoid adding duplicate reward IDs. Some rewards may have the same shipping preferences. - var rewardIDsToQuery = Set() - - /// If project contains a reward with an `unrestricted` shipping preference, we can query just that reward. This will return ALL available locations. - if let reward = project.rewards - .first(where: { $0.isUnRestrictedShippingPreference && $0.shipping.enabled }) { - rewardIDsToQuery.insert(reward.id) - } - - /// If project does not contain a reward with an `unrestricted` shipping preference, then we'll need to query all other rewards to capture all possible shipping locations. - if rewardIDsToQuery.isEmpty { - let restrictedRewards = project.rewards - .filter { - ($0.isRestrictedShippingPreference || $0.hasNoShippingPreference) - && $0.shipping.enabled - } - - restrictedRewards.forEach { rewardIDsToQuery.insert($0.id) } - } - - return rewardIDsToQuery -} - private func shippingValue(of project: Project, with shippingRuleCost: Double) -> NSAttributedString? { let defaultAttributes = checkoutCurrencyDefaultAttributes() let superscriptAttributes = checkoutCurrencySuperscriptAttributes() diff --git a/Library/ViewModels/PledgeShippingLocationViewModelTests.swift b/Library/ViewModels/PledgeShippingLocationViewModelTests.swift index 89acef7477..572316fe62 100644 --- a/Library/ViewModels/PledgeShippingLocationViewModelTests.swift +++ b/Library/ViewModels/PledgeShippingLocationViewModelTests.swift @@ -53,11 +53,8 @@ final class PledgeShippingLocationViewModelTests: TestCase { let reward = Reward.template |> Reward.lens.shipping.enabled .~ true - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] - withEnvironment(apiService: mockService, countryCode: "US") { - self.vm.inputs.configureWith(data: (project: project, reward: reward, true, nil)) + self.vm.inputs.configureWith(data: (project: .template, reward: reward, true, nil)) self.vm.inputs.viewDidLoad() self.amountText.assertValues(["+$0.00"]) @@ -92,13 +89,12 @@ final class PledgeShippingLocationViewModelTests: TestCase { func testDefaultShippingRule_US_ProjectCountry_NonUSProjectCurrencyCountry_US_UserLocation() { let mockService = MockService(fetchShippingRulesResult: Result.success(shippingRules)) - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true - let project = Project.template |> Project.lens.stats.currency .~ Project.Country.mx.currencyCode |> Project.lens.country .~ Project.Country.us - |> Project.lens.rewardData.rewards .~ [reward] + + let reward = Reward.template + |> Reward.lens.shipping.enabled .~ true withEnvironment(apiService: mockService, countryCode: "US") { self.vm.inputs.configureWith(data: (project: project, reward: reward, true, nil)) @@ -139,11 +135,8 @@ final class PledgeShippingLocationViewModelTests: TestCase { let reward = Reward.template |> Reward.lens.shipping.enabled .~ true - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] - withEnvironment(apiService: mockService, countryCode: "US") { - self.vm.inputs.configureWith(data: (project: project, reward: reward, true, Location.australia.id)) + self.vm.inputs.configureWith(data: (project: .template, reward: reward, true, Location.australia.id)) self.vm.inputs.viewDidLoad() self.amountText.assertValues(["+$0.00"]) @@ -197,11 +190,9 @@ final class PledgeShippingLocationViewModelTests: TestCase { let mockService = MockService(fetchShippingRulesResult: Result.success(shippingRules)) let reward = Reward.template |> Reward.lens.shipping.enabled .~ true - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] withEnvironment(apiService: mockService, countryCode: "US") { - self.vm.inputs.configureWith(data: (project: project, reward: reward, false, nil)) + self.vm.inputs.configureWith(data: (project: .template, reward: reward, false, nil)) self.vm.inputs.viewDidLoad() guard let defaultShippingRule = shippingRules.first(where: { $0.location == .brooklyn }) else { @@ -240,11 +231,9 @@ final class PledgeShippingLocationViewModelTests: TestCase { let mockService = MockService(fetchShippingRulesResult: Result.success(shippingRules)) let reward = Reward.template |> Reward.lens.shipping.enabled .~ true - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] withEnvironment(apiService: mockService, countryCode: "US") { - self.vm.inputs.configureWith(data: (project: project, reward: reward, false, nil)) + self.vm.inputs.configureWith(data: (project: .template, reward: reward, false, nil)) self.vm.inputs.viewDidLoad() guard let defaultShippingRule = shippingRules.first(where: { $0.location == .brooklyn }) else { @@ -275,11 +264,8 @@ final class PledgeShippingLocationViewModelTests: TestCase { let reward = Reward.template |> Reward.lens.shipping.enabled .~ true - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] - withEnvironment(apiService: MockService(fetchShippingRulesResult: Result.failure(error))) { - self.vm.inputs.configureWith(data: (project: project, reward: reward, false, nil)) + self.vm.inputs.configureWith(data: (project: .template, reward: reward, false, nil)) self.vm.inputs.viewDidLoad() self.shippingRulesError.assertValues([]) @@ -302,8 +288,6 @@ final class PledgeShippingLocationViewModelTests: TestCase { func testShippingLocationFromBackingIsDefault_ProjectCountryEqualsProjectCurrencyCountry_US() { let mockService = MockService(fetchShippingRulesResult: Result.success(shippingRules)) - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true let project = Project.template |> Project.lens.personalization.isBacking .~ true @@ -316,7 +300,9 @@ final class PledgeShippingLocationViewModelTests: TestCase { |> Backing.lens.locationId .~ Location.canada.id |> Backing.lens.locationName .~ Location.canada.name ) - |> Project.lens.rewardData.rewards .~ [reward] + + let reward = Reward.template + |> Reward.lens.shipping.enabled .~ true withEnvironment(apiService: mockService, countryCode: "US") { self.vm.inputs.configureWith(data: (project: project, reward: reward, false, nil)) @@ -355,9 +341,6 @@ final class PledgeShippingLocationViewModelTests: TestCase { let mockService = MockService(fetchShippingRulesResult: Result.success(shippingRulesWithoutCanada)) - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true - let project = Project.template |> Project.lens.personalization.isBacking .~ true |> Project.lens.personalization.backing .~ ( @@ -369,7 +352,9 @@ final class PledgeShippingLocationViewModelTests: TestCase { |> Backing.lens.locationId .~ Location.canada.id |> Backing.lens.locationName .~ Location.canada.name ) - |> Project.lens.rewardData.rewards .~ [reward] + + let reward = Reward.template + |> Reward.lens.shipping.enabled .~ true withEnvironment(apiService: mockService, countryCode: "US") { self.vm.inputs.configureWith(data: (project: project, reward: reward, false, nil)) diff --git a/Library/ViewModels/PledgeViewModel.swift b/Library/ViewModels/PledgeViewModel.swift index 6efebaeb6d..df85b1138a 100644 --- a/Library/ViewModels/PledgeViewModel.swift +++ b/Library/ViewModels/PledgeViewModel.swift @@ -39,7 +39,6 @@ public typealias PKPaymentData = (displayName: String, network: String, transact public struct PledgeViewData: Equatable { public let project: Project public let rewards: [Reward] - public let selectedShippingRule: ShippingRule? public let selectedQuantities: SelectedRewardQuantities public let selectedLocationId: Int? public let refTag: RefTag? diff --git a/Library/ViewModels/PledgeViewModelTests.swift b/Library/ViewModels/PledgeViewModelTests.swift index ffea40796b..55a90458f6 100644 --- a/Library/ViewModels/PledgeViewModelTests.swift +++ b/Library/ViewModels/PledgeViewModelTests.swift @@ -82,9 +82,6 @@ final class PledgeViewModelTests: TestCase { private let rootStackViewLayoutMargins = TestObserver() private let title = TestObserver() - let shippingRule = ShippingRule.template - |> ShippingRule.lens.location .~ (.template |> Location.lens.id .~ 55) - override func setUp() { super.setUp() @@ -213,7 +210,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -276,7 +272,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -304,7 +299,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -365,7 +359,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -426,7 +419,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -497,7 +489,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: shippingRule.location.id, refTag: .projectPage, @@ -584,7 +575,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: shippingRule.location.id, refTag: .projectPage, @@ -670,7 +660,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -737,7 +726,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -778,7 +766,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -820,7 +807,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -861,7 +847,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -902,7 +887,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -952,7 +936,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1015,7 +998,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1079,7 +1061,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1138,7 +1119,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1251,7 +1231,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1279,7 +1258,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -1303,7 +1281,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1345,7 +1322,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1390,7 +1366,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1425,7 +1400,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1456,7 +1430,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1489,7 +1462,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1527,7 +1499,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1557,7 +1528,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1589,7 +1559,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1618,7 +1587,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1650,7 +1618,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1693,7 +1660,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1784,7 +1750,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -1880,7 +1845,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -1965,7 +1929,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -2013,7 +1976,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -2102,7 +2064,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOn1, addOn2], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOn1.id: 2, addOn2.id: 1], selectedLocationId: shippingRule.location.id, refTag: .activity, @@ -2202,7 +2163,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 2, addOnReward2.id: 1], selectedLocationId: nil, refTag: .activity, @@ -2284,7 +2244,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -2373,7 +2332,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -2457,7 +2415,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -2550,7 +2507,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: shippingRule.location.id, refTag: .discovery, @@ -2637,7 +2593,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: shippingRule.location.id, refTag: .discovery, @@ -2713,7 +2668,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -2782,7 +2736,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -2859,7 +2812,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .discovery, @@ -2955,7 +2907,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1, addOnReward2], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 2, addOnReward2.id: 1], selectedLocationId: shippingRule.location.id, refTag: .projectPage, @@ -3035,7 +2986,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .projectPage, @@ -3205,7 +3155,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .projectPage, @@ -3341,7 +3290,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .projectPage, @@ -3494,7 +3442,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .projectPage, @@ -3761,7 +3708,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .projectPage, @@ -3987,7 +3933,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .projectPage, @@ -4199,7 +4144,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .projectPage, @@ -4380,7 +4324,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .activity, @@ -4504,7 +4447,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: defaultShippingRule.location.id, refTag: .activity, @@ -4606,7 +4548,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -4715,7 +4656,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -4820,7 +4760,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -4925,7 +4864,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -4989,7 +4927,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5015,7 +4952,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5041,7 +4977,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5069,7 +5004,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: nil, refTag: nil, @@ -5100,7 +5034,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: nil, refTag: nil, @@ -5128,7 +5061,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5157,7 +5089,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5189,7 +5120,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: nil, refTag: nil, @@ -5220,7 +5150,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: shippingRule.id, refTag: nil, @@ -5260,7 +5189,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: shippingRule.id, refTag: nil, @@ -5304,7 +5232,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1, addOnReward2], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1, addOnReward2.id: 2], selectedLocationId: shippingRule.location.id, refTag: nil, @@ -5345,7 +5272,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, addOnReward1], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1], selectedLocationId: shippingRule.id, refTag: nil, @@ -5369,7 +5295,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -5391,7 +5316,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -5430,7 +5354,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 2, addOnReward2.id: 1], selectedLocationId: nil, refTag: .activity, @@ -5528,7 +5451,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1, addOnReward1.id: 1, addOnReward2.id: 1], selectedLocationId: nil, refTag: .projectPage, @@ -5619,7 +5541,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5640,7 +5561,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5665,7 +5585,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5709,7 +5628,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -5767,7 +5685,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -5820,7 +5737,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -5859,7 +5775,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .discovery, @@ -5941,7 +5856,6 @@ final class PledgeViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, diff --git a/Library/ViewModels/RewardAddOnSelectionViewModel.swift b/Library/ViewModels/RewardAddOnSelectionViewModel.swift index e501753538..3bb9465958 100644 --- a/Library/ViewModels/RewardAddOnSelectionViewModel.swift +++ b/Library/ViewModels/RewardAddOnSelectionViewModel.swift @@ -30,16 +30,21 @@ public protocol RewardAddOnSelectionViewModelInputs { func configure(with data: PledgeViewData) func continueButtonTapped() func rewardAddOnCardViewDidSelectQuantity(quantity: Int, rewardId: Int) + func shippingLocationViewDidFailToLoad() + func shippingRuleSelected(_ shippingRule: ShippingRule) func viewDidLoad() } public protocol RewardAddOnSelectionViewModelOutputs { var configureContinueCTAViewWithData: Signal { get } + var configurePledgeShippingLocationViewControllerWithData: + Signal { get } var endRefreshing: Signal<(), Never> { get } var goToPledge: Signal { get } var loadAddOnRewardsIntoDataSource: Signal<[RewardAddOnSelectionDataSourceItem], Never> { get } var loadAddOnRewardsIntoDataSourceAndReloadTableView: Signal<[RewardAddOnSelectionDataSourceItem], Never> { get } + var shippingLocationViewIsHidden: Signal { get } var startRefreshing: Signal<(), Never> { get } } @@ -63,7 +68,17 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT let refTag = configData.map(\.refTag) let context = configData.map(\.context) let initialLocationId = configData.map(\.selectedLocationId) - let selectedShippingRule = configData.map(\.selectedShippingRule) + + let shippingLocationViewConfigData = Signal.zip(project, baseReward, initialLocationId) + + let fetchShippingLocations = Signal.merge( + shippingLocationViewConfigData, + shippingLocationViewConfigData.takeWhen(self.beginRefreshSignal) + ) + .filter { _, reward, _ in reward.shipping.enabled } + + self.configurePledgeShippingLocationViewControllerWithData = fetchShippingLocations + .map { project, reward, initialLocationId in (project, reward, false, initialLocationId) } let slug = project.map(\.slug) @@ -73,7 +88,7 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT ) let shippingRule = Signal.merge( - selectedShippingRule, + self.shippingRuleSelectedProperty.signal, baseReward.filter { reward in !reward.shipping.enabled }.mapConst(nil) ) @@ -160,6 +175,19 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT .map(unpack) .map(rewardsData) + self.shippingLocationViewIsHidden = Signal.merge( + baseReward.map(\.shipping.enabled).negate(), + self.shippingLocationViewDidFailToLoadProperty.signal.mapConst(true), + fetchShippingLocations.mapConst(false) + ) + .combineLatest(with: baseReward) + .switchMap { flag, baseReward -> SignalProducer in + let shippingLocationViewHidden = isRewardLocalPickup(baseReward) ? true : flag + + return SignalProducer(value: shippingLocationViewHidden) + } + .skipRepeats() + let dataSourceItems = Signal.merge( self.loadAddOnRewardsIntoDataSourceAndReloadTableView, self.loadAddOnRewardsIntoDataSource @@ -220,7 +248,6 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT self.goToPledge = Signal.combineLatest( project, selectedRewards, - shippingRule, selectedQuantities, selectedLocationId, refTag, @@ -229,6 +256,21 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT .map(PledgeViewData.init) .takeWhen(self.continueButtonTappedProperty.signal) + let shippingTotal = Signal.combineLatest( + shippingRule.skipNil(), + selectedRewards, + selectedQuantities + ) + .map(calculateShippingTotal) + + let baseRewardShippingTotal = Signal.zip(project, baseReward, shippingRule) + .map(getBaseRewardShippingTotal) + + let allRewardsShippingTotal = Signal.merge( + baseRewardShippingTotal, + shippingTotal + ) + // Additional pledge amount is zero if not backed. let additionalPledgeAmount = Signal.merge( configData.filter { $0.project.personalization.backing == nil }.mapConst(0.0), @@ -243,7 +285,7 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT let combinedPledgeTotal = Signal.combineLatest( additionalPledgeAmount, - additionalPledgeAmount.mapConst(0), + allRewardsShippingTotal, allRewardsTotal ) .map(calculatePledgeTotal) @@ -263,11 +305,12 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT refTag, configData, additionalPledgeAmount, + allRewardsShippingTotal, pledgeTotal ) .take(first: 1) .observeForUI() - .observeValues { project, baseReward, selectedRewards, refTag, configData, additionalPledgeAmount, pledgeTotal in + .observeValues { project, baseReward, selectedRewards, refTag, configData, additionalPledgeAmount, shippingTotal, pledgeTotal in let checkoutPropertiesData = checkoutProperties( from: project, baseReward: baseReward, @@ -275,7 +318,7 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT selectedQuantities: configData.selectedQuantities, additionalPledgeAmount: additionalPledgeAmount, pledgeTotal: pledgeTotal, - shippingTotal: 0, + shippingTotal: shippingTotal, isApplePay: nil ) @@ -295,9 +338,10 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT selectedQuantities, additionalPledgeAmount, pledgeTotal, + allRewardsShippingTotal, refTag ).takeWhen(self.continueButtonTappedProperty.signal) - .observeValues { project, baseReward, selectedRewards, selectedQuantities, additionalPledgeAmount, pledgeTotal, refTag in + .observeValues { project, baseReward, selectedRewards, selectedQuantities, additionalPledgeAmount, pledgeTotal, shippingTotal, refTag in let checkoutData = checkoutProperties( from: project, @@ -306,7 +350,7 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT selectedQuantities: selectedQuantities, additionalPledgeAmount: additionalPledgeAmount, pledgeTotal: pledgeTotal, - shippingTotal: 0, + shippingTotal: shippingTotal, isApplePay: nil ) @@ -348,12 +392,25 @@ public final class RewardAddOnSelectionViewModel: RewardAddOnSelectionViewModelT self.rewardAddOnCardViewDidSelectQuantityProperty.value = (quantity, rewardId) } + private let shippingLocationViewDidFailToLoadProperty = MutableProperty(()) + public func shippingLocationViewDidFailToLoad() { + self.shippingLocationViewDidFailToLoadProperty.value = () + } + + private let shippingRuleSelectedProperty = MutableProperty(nil) + public func shippingRuleSelected(_ shippingRule: ShippingRule) { + self.shippingRuleSelectedProperty.value = shippingRule + } + public let configureContinueCTAViewWithData: Signal + public let configurePledgeShippingLocationViewControllerWithData: + Signal public let endRefreshing: Signal<(), Never> public let goToPledge: Signal public let loadAddOnRewardsIntoDataSource: Signal<[RewardAddOnSelectionDataSourceItem], Never> public let loadAddOnRewardsIntoDataSourceAndReloadTableView: Signal<[RewardAddOnSelectionDataSourceItem], Never> + public let shippingLocationViewIsHidden: Signal public let startRefreshing: Signal<(), Never> public var inputs: RewardAddOnSelectionViewModelInputs { return self } diff --git a/Library/ViewModels/RewardAddOnSelectionViewModelTests.swift b/Library/ViewModels/RewardAddOnSelectionViewModelTests.swift index 6f2b96e089..8605bb8683 100644 --- a/Library/ViewModels/RewardAddOnSelectionViewModelTests.swift +++ b/Library/ViewModels/RewardAddOnSelectionViewModelTests.swift @@ -12,11 +12,17 @@ final class RewardAddOnSelectionViewModelTests: TestCase { private let configureContinueCTAViewWithDataIsLoading = TestObserver() private let configureContinueCTAViewWithDataIsValid = TestObserver() private let configureContinueCTAViewWithDataQuantity = TestObserver() + private let configurePledgeShippingLocationViewControllerWithDataProject = TestObserver() + private let configurePledgeShippingLocationViewControllerWithDataReward = TestObserver() + private let configurePledgeShippingLocationViewControllerWithDataShowAmount = TestObserver() + private let configurePledgeShippingLocationViewControllerWithDataSelectedLocationId + = TestObserver() private let endRefreshing = TestObserver<(), Never>() private let goToPledge = TestObserver() private let loadAddOnRewardsIntoDataSource = TestObserver<[RewardAddOnSelectionDataSourceItem], Never>() private let loadAddOnRewardsIntoDataSourceAndReloadTableView = TestObserver<[RewardAddOnSelectionDataSourceItem], Never>() + private let shippingLocationViewIsHidden = TestObserver() private let startRefreshing = TestObserver<(), Never>() override func setUp() { @@ -28,14 +34,128 @@ final class RewardAddOnSelectionViewModelTests: TestCase { .observe(self.configureContinueCTAViewWithDataIsValid.observer) self.vm.outputs.configureContinueCTAViewWithData.map(third) .observe(self.configureContinueCTAViewWithDataIsLoading.observer) + self.vm.outputs.configurePledgeShippingLocationViewControllerWithData.map { $0.0 } + .observe(self.configurePledgeShippingLocationViewControllerWithDataProject.observer) + self.vm.outputs.configurePledgeShippingLocationViewControllerWithData.map { $0.1 } + .observe(self.configurePledgeShippingLocationViewControllerWithDataReward.observer) + self.vm.outputs.configurePledgeShippingLocationViewControllerWithData.map { $0.2 } + .observe(self.configurePledgeShippingLocationViewControllerWithDataShowAmount.observer) + self.vm.outputs.configurePledgeShippingLocationViewControllerWithData.map { $0.3 } + .observe(self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.observer) self.vm.outputs.endRefreshing.observe(self.endRefreshing.observer) self.vm.outputs.goToPledge.observe(self.goToPledge.observer) self.vm.outputs.loadAddOnRewardsIntoDataSource.observe(self.loadAddOnRewardsIntoDataSource.observer) self.vm.outputs.loadAddOnRewardsIntoDataSourceAndReloadTableView .observe(self.loadAddOnRewardsIntoDataSourceAndReloadTableView.observer) + self.vm.outputs.shippingLocationViewIsHidden.observe(self.shippingLocationViewIsHidden.observer) self.vm.outputs.startRefreshing.observe(self.startRefreshing.observer) } + func testConfigurePledgeShippingLocationViewControllerWithData_ShippingEnabled() { + self.configurePledgeShippingLocationViewControllerWithDataProject.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataReward.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertDidNotEmitValue() + + let reward = Reward.template + |> Reward.lens.shipping.enabled .~ true + + let project = Project.template + + let data = PledgeViewData( + project: project, + rewards: [reward], + selectedQuantities: [:], + selectedLocationId: 2, + refTag: nil, + context: .pledge + ) + + self.vm.inputs.configure(with: data) + self.vm.inputs.viewDidLoad() + + self.configurePledgeShippingLocationViewControllerWithDataProject.assertValues([project]) + self.configurePledgeShippingLocationViewControllerWithDataReward.assertValues([reward]) + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertValues([false]) + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertValues([2]) + } + + func testConfigurePledgeShippingLocationViewControllerWithData_ShippingDisabled() { + self.configurePledgeShippingLocationViewControllerWithDataProject.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataReward.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertDidNotEmitValue() + + let reward = Reward.template + |> Reward.lens.shipping.enabled .~ false + + let project = Project.template + + let data = PledgeViewData( + project: project, + rewards: [reward], + selectedQuantities: [:], + selectedLocationId: 2, + refTag: nil, + context: .pledge + ) + + self.vm.inputs.configure(with: data) + self.vm.inputs.viewDidLoad() + + self.configurePledgeShippingLocationViewControllerWithDataProject.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataReward.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertDidNotEmitValue() + } + + func testConfigurePledgeShippingLocationViewControllerWithData_ShippingEnabled_FailedThenRefreshed() { + self.configurePledgeShippingLocationViewControllerWithDataProject.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataReward.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertDidNotEmitValue() + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertDidNotEmitValue() + self.shippingLocationViewIsHidden.assertDidNotEmitValue() + + let reward = Reward.template + |> Reward.lens.shipping.enabled .~ true + + let project = Project.template + + let data = PledgeViewData( + project: project, + rewards: [reward], + selectedQuantities: [:], + selectedLocationId: 2, + refTag: nil, + context: .pledge + ) + + self.vm.inputs.configure(with: data) + self.vm.inputs.viewDidLoad() + + self.configurePledgeShippingLocationViewControllerWithDataProject.assertValues([project]) + self.configurePledgeShippingLocationViewControllerWithDataReward.assertValues([reward]) + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertValues([false]) + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertValues([2]) + self.shippingLocationViewIsHidden.assertValues([false]) + + self.vm.inputs.shippingLocationViewDidFailToLoad() + + self.configurePledgeShippingLocationViewControllerWithDataProject.assertValues([project]) + self.configurePledgeShippingLocationViewControllerWithDataReward.assertValues([reward]) + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertValues([false]) + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertValues([2]) + self.shippingLocationViewIsHidden.assertValues([false, true]) + + self.vm.inputs.beginRefresh() + + self.configurePledgeShippingLocationViewControllerWithDataProject.assertValues([project, project]) + self.configurePledgeShippingLocationViewControllerWithDataReward.assertValues([reward, reward]) + self.configurePledgeShippingLocationViewControllerWithDataShowAmount.assertValues([false, false]) + self.configurePledgeShippingLocationViewControllerWithDataSelectedLocationId.assertValues([2, 2]) + self.shippingLocationViewIsHidden.assertValues([false, true, false]) + } + func testLoadAddOnRewardsIntoDataSource() { self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertDidNotEmitValue() @@ -64,7 +184,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -80,12 +199,9 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() self.startRefreshing.assertValueCount(0) - self.endRefreshing.assertValueCount(2) + self.endRefreshing.assertValueCount(1) - self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([ - [.rewardAddOn(expected)], - [.rewardAddOn(expected)] - ]) + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([[.rewardAddOn(expected)]]) } } @@ -112,7 +228,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -124,7 +239,7 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() - self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([[.emptyState(.addOnsUnavailable)]]) + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([]) } } @@ -140,7 +255,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -176,7 +290,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -192,7 +305,7 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() self.startRefreshing.assertValueCount(0) - self.endRefreshing.assertValueCount(2) + self.endRefreshing.assertValueCount(1) self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([[.emptyState(.errorPullToRefresh)]]) } @@ -211,12 +324,12 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.vm.inputs.beginRefresh() self.startRefreshing.assertValueCount(1) - self.endRefreshing.assertValueCount(2) + self.endRefreshing.assertValueCount(1) self.scheduler.advance() self.startRefreshing.assertValueCount(1) - self.endRefreshing.assertValueCount(3) + self.endRefreshing.assertValueCount(2) self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([ [.emptyState(.errorPullToRefresh)], @@ -270,7 +383,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward, noShippingAddOn], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -282,10 +394,7 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() - self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([ - [.rewardAddOn(expected)], - [.rewardAddOn(expected)] - ]) + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([[.rewardAddOn(expected)]]) XCTAssertEqual( self.loadAddOnRewardsIntoDataSourceAndReloadTableView.values.last?.count, 1, "Only the single add-on reward without shipping is emitted for no-shipping base reward." @@ -408,7 +517,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [baseReward], - selectedShippingRule: ShippingRule.template, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -420,7 +528,7 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() - self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([expected, expected]) + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([expected]) } } @@ -503,7 +611,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -519,6 +626,10 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() + self.vm.inputs.shippingRuleSelected(shippingRule) + + self.scheduler.advance() + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([expected]) XCTAssertEqual( self.loadAddOnRewardsIntoDataSourceAndReloadTableView.values.last?.count, 4, @@ -604,7 +715,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -620,6 +730,10 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() + self.vm.inputs.shippingRuleSelected(shippingRule) + + self.scheduler.advance() + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([expected]) XCTAssertEqual( self.loadAddOnRewardsIntoDataSourceAndReloadTableView.values.last?.count, 3, @@ -703,7 +817,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -719,6 +832,10 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() + self.vm.inputs.shippingRuleSelected(shippingRule) + + self.scheduler.advance() + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([expected]) XCTAssertEqual( self.loadAddOnRewardsIntoDataSourceAndReloadTableView.values.last?.count, 2, @@ -797,7 +914,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -813,6 +929,10 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.scheduler.advance() + self.vm.inputs.shippingRuleSelected(shippingRule) + + self.scheduler.advance() + self.loadAddOnRewardsIntoDataSource.assertDidNotEmitValue() self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertValues([expected]) XCTAssertEqual( @@ -927,7 +1047,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [:], selectedLocationId: nil, refTag: nil, @@ -937,10 +1056,14 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.vm.inputs.configure(with: data) self.vm.inputs.viewDidLoad() + self.scheduler.advance() + self.loadAddOnRewardsIntoDataSourceAndReloadTableView.assertDidNotEmitValue( "Nothing is emitted until a shipping location is selected" ) + self.vm.inputs.shippingRuleSelected(shippingRule) + self.scheduler.advance() self.loadAddOnRewardsIntoDataSource.assertDidNotEmitValue() @@ -971,6 +1094,52 @@ final class RewardAddOnSelectionViewModelTests: TestCase { } } + func testShippingLocationViewIsHidden_RewardHasShipping() { + self.shippingLocationViewIsHidden.assertDidNotEmitValue() + + let reward = Reward.template + |> Reward.lens.shipping.enabled .~ true + let project = Project.template + + let data = PledgeViewData( + project: project, + rewards: [reward], + selectedQuantities: [reward.id: 1], + selectedLocationId: nil, + refTag: nil, + context: .pledge + ) + + self.vm.inputs.configure(with: data) + self.vm.inputs.viewDidLoad() + + self.shippingLocationViewIsHidden.assertValues([false]) + } + + func testShippingLocationViewIsHidden_NoShipping() { + self.shippingLocationViewIsHidden.assertDidNotEmitValue() + + let reward = Reward.template + |> Reward.lens.shipping .~ ( + .template |> Reward.Shipping.lens.enabled .~ false + ) + let project = Project.template + + let data = PledgeViewData( + project: project, + rewards: [reward], + selectedQuantities: [reward.id: 1], + selectedLocationId: nil, + refTag: nil, + context: .pledge + ) + + self.vm.inputs.configure(with: data) + self.vm.inputs.viewDidLoad() + + self.shippingLocationViewIsHidden.assertValues([true]) + } + func testGoToPledge_AddOnsSkipped() { let shippingRule = ShippingRule.template |> ShippingRule.lens.location .~ (.template |> Location.lens.id .~ 99) @@ -1016,7 +1185,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: nil, @@ -1026,6 +1194,8 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.vm.inputs.configure(with: data) self.vm.inputs.viewDidLoad() + self.scheduler.advance() + self.vm.inputs.shippingRuleSelected(shippingRule) self.scheduler.advance() XCTAssertEqual(["Page Viewed"], self.segmentTrackingClient.events) @@ -1045,7 +1215,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let expectedGoToPledgeData = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: shippingRule.location.id, refTag: nil, @@ -1104,7 +1273,6 @@ final class RewardAddOnSelectionViewModelTests: TestCase { let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -1114,6 +1282,8 @@ final class RewardAddOnSelectionViewModelTests: TestCase { self.vm.inputs.configure(with: data) self.vm.inputs.viewDidLoad() + self.scheduler.advance() + self.vm.inputs.shippingRuleSelected(shippingRule) self.scheduler.advance() XCTAssertEqual(["Page Viewed"], self.segmentTrackingClient.events) diff --git a/Library/ViewModels/RewardsCollectionViewModel.swift b/Library/ViewModels/RewardsCollectionViewModel.swift index a2390b3a6e..e550c09ba7 100644 --- a/Library/ViewModels/RewardsCollectionViewModel.swift +++ b/Library/ViewModels/RewardsCollectionViewModel.swift @@ -13,8 +13,6 @@ public protocol RewardsCollectionViewModelInputs { func confirmedEditReward() func rewardCellShouldShowDividerLine(_ show: Bool) func rewardSelected(with rewardId: Int) - func shippingLocationViewDidFailToLoad() - func shippingRuleSelected(_ shippingRule: ShippingRule?) func traitCollectionDidChange(_ traitCollection: UITraitCollection) func viewDidAppear() func viewDidLayoutSubviews() @@ -24,7 +22,6 @@ public protocol RewardsCollectionViewModelInputs { public protocol RewardsCollectionViewModelOutputs { var configureRewardsCollectionViewFooterWithCount: Signal { get } - var configureShippingLocationViewWithData: Signal { get } var flashScrollIndicators: Signal { get } var goToAddOnSelection: Signal { get } var goToPledge: Signal { get } @@ -32,7 +29,6 @@ public protocol RewardsCollectionViewModelOutputs { var reloadDataWithValues: Signal<[RewardCardViewData], Never> { get } var rewardsCollectionViewFooterIsHidden: Signal { get } var scrollToBackedRewardIndexPath: Signal { get } - var shippingLocationViewHidden: Signal { get } var showEditRewardConfirmationPrompt: Signal<(String, String), Never> { get } var title: Signal { get } @@ -83,23 +79,6 @@ public final class RewardsCollectionViewModel: RewardsCollectionViewModelType, self.flashScrollIndicators = self.viewDidAppearProperty.signal - // MARK: Shipping Location - - self.shippingLocationViewHidden = project - .map { project in - projectHasShippableRewards(project) == false - } - - // Only shown for regular non-add-ons based rewards - self.configureShippingLocationViewWithData = Signal.combineLatest( - project, - self.shippingLocationViewHidden.filter(isFalse) - ) - .map { project, _ in - // TODO: Reward will be removed from ShippingLocationViewData once we remove the selector from Add-Ons - (project, project.rewards[0], false, nil) - } - let selectedRewardFromId = rewards .takePairWhen(self.rewardSelectedWithRewardIdProperty.signal.skipNil()) .map { rewards, rewardId in @@ -115,14 +94,12 @@ public final class RewardsCollectionViewModel: RewardsCollectionViewModelType, let goToPledge: Signal<(PledgeViewData, Bool), Never> = Signal.combineLatest( project, selectedRewardFromId, - refTag, - self.shippingRuleSelectedSignal.signal + refTag ) - .takeWhen(self.rewardSelectedWithRewardIdProperty.signal) - .filter { project, reward, _, _ in + .filter { project, reward, _ in rewardsCarouselCanNavigateToReward(reward, in: project) } - .map { project, reward, refTag, selectedShippingRule -> (PledgeViewData, Bool) in + .map { project, reward, refTag -> (PledgeViewData, Bool) in let pledgeContext = featurePostCampaignPledgeEnabled() && project.isInPostCampaignPledgingPhase ? PledgeViewContext.latePledge @@ -130,7 +107,6 @@ public final class RewardsCollectionViewModel: RewardsCollectionViewModelType, let data = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: selectedShippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, // Set during add-ons selection. refTag: refTag, @@ -323,16 +299,6 @@ public final class RewardsCollectionViewModel: RewardsCollectionViewModelType, self.rewardSelectedWithRewardIdProperty.value = rewardId } - private let shippingLocationViewDidFailToLoadProperty = MutableProperty(()) - public func shippingLocationViewDidFailToLoad() { - self.shippingLocationViewDidFailToLoadProperty.value = () - } - - private let (shippingRuleSelectedSignal, shippingRuleSelectedObserver) = Signal.pipe() - public func shippingRuleSelected(_ shippingRule: ShippingRule?) { - self.shippingRuleSelectedObserver.send(value: shippingRule) - } - private let traitCollectionChangedProperty = MutableProperty(nil) public func traitCollectionDidChange(_ traitCollection: UITraitCollection) { self.traitCollectionChangedProperty.value = traitCollection @@ -358,7 +324,6 @@ public final class RewardsCollectionViewModel: RewardsCollectionViewModelType, self.viewWillAppearProperty.value = () } - public let configureShippingLocationViewWithData: Signal public let configureRewardsCollectionViewFooterWithCount: Signal public let flashScrollIndicators: Signal public let goToAddOnSelection: Signal @@ -367,7 +332,6 @@ public final class RewardsCollectionViewModel: RewardsCollectionViewModelType, public let reloadDataWithValues: Signal<[RewardCardViewData], Never> public let rewardsCollectionViewFooterIsHidden: Signal public let scrollToBackedRewardIndexPath: Signal - public var shippingLocationViewHidden: Signal public let showEditRewardConfirmationPrompt: Signal<(String, String), Never> public let title: Signal @@ -382,11 +346,6 @@ public final class RewardsCollectionViewModel: RewardsCollectionViewModelType, // MARK: - Functions -private func projectHasShippableRewards(_ project: Project) -> Bool { - project.rewards - .contains(where: { $0.isUnRestrictedShippingPreference || $0.isRestrictedShippingPreference }) -} - private func titleForContext(_ context: RewardsCollectionViewContext, project: Project) -> String { if currentUserIsCreator(of: project) { return Strings.View_your_rewards() diff --git a/Library/ViewModels/RewardsCollectionViewModelTests.swift b/Library/ViewModels/RewardsCollectionViewModelTests.swift index aaac379aca..d5cda1b816 100644 --- a/Library/ViewModels/RewardsCollectionViewModelTests.swift +++ b/Library/ViewModels/RewardsCollectionViewModelTests.swift @@ -23,16 +23,6 @@ final class RewardsCollectionViewModelTests: TestCase { private let showEditRewardConfirmationPromptTitle = TestObserver() private let title = TestObserver() - private let configureShippingLocationViewWithDataProject = TestObserver() - private let configureShippingLocationViewWithDataReward = TestObserver() - private let configureShippingLocationViewWithDataShowAmount = TestObserver() - private let configureShippingLocationViewWithDataSelectedLocationId - = TestObserver() - private let shippingLocationViewHidden = TestObserver() - - let shippingRule = ShippingRule.template - |> ShippingRule.lens.location .~ (.template |> Location.lens.id .~ 55) - override func setUp() { super.setUp() @@ -55,98 +45,6 @@ final class RewardsCollectionViewModelTests: TestCase { self.vm.outputs.showEditRewardConfirmationPrompt.map(second) .observe(self.showEditRewardConfirmationPromptMessage.observer) self.vm.outputs.title.observe(self.title.observer) - - self.vm.outputs.configureShippingLocationViewWithData.map { $0.0 } - .observe(self.configureShippingLocationViewWithDataProject.observer) - self.vm.outputs.configureShippingLocationViewWithData.map { $0.1 } - .observe(self.configureShippingLocationViewWithDataReward.observer) - self.vm.outputs.configureShippingLocationViewWithData.map { $0.2 } - .observe(self.configureShippingLocationViewWithDataShowAmount.observer) - self.vm.outputs.configureShippingLocationViewWithData.map { $0.3 } - .observe(self.configureShippingLocationViewWithDataSelectedLocationId.observer) - self.vm.outputs.shippingLocationViewHidden.observe(self.shippingLocationViewHidden.observer) - } - - func testconfigureShippingLocationViewWithData_ShippingEnabled() { - self.configureShippingLocationViewWithDataProject.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataReward.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataShowAmount.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataSelectedLocationId.assertDidNotEmitValue() - - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true - |> Reward.lens.shipping.preference .~ .unrestricted - - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] - - self.vm.inputs.configure(with: project, refTag: RefTag.category, context: .createPledge) - self.vm.inputs.viewDidLoad() - - self.configureShippingLocationViewWithDataProject.assertValues([project]) - self.configureShippingLocationViewWithDataReward.assertValues([reward]) - self.configureShippingLocationViewWithDataShowAmount.assertValues([false]) - self.shippingLocationViewHidden.assertValue(false) - self.configureShippingLocationViewWithDataSelectedLocationId.assertValues([nil]) - - self.vm.inputs.shippingRuleSelected(ShippingRule.template) - self.scheduler.advance() - - self.configureShippingLocationViewWithDataSelectedLocationId.assertValues([nil]) - } - - func testconfigureShippingLocationViewWithData_ShippingDisabled() { - self.configureShippingLocationViewWithDataProject.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataReward.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataShowAmount.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataSelectedLocationId.assertDidNotEmitValue() - - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ false - - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] - - self.vm.inputs.configure(with: project, refTag: RefTag.category, context: .createPledge) - self.vm.inputs.viewDidLoad() - - self.configureShippingLocationViewWithDataProject.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataReward.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataShowAmount.assertDidNotEmitValue() - self.configureShippingLocationViewWithDataSelectedLocationId.assertDidNotEmitValue() - self.shippingLocationViewHidden.assertValue(true) - } - - func testShippingLocationViewHidden_RewardHasLocalShipping() { - self.shippingLocationViewHidden.assertDidNotEmitValue() - - let reward = Reward.template - |> Reward.lens.shipping.enabled .~ true - |> Reward.lens.shipping.preference .~ .local - - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] - - self.vm.inputs.configure(with: project, refTag: RefTag.category, context: .createPledge) - self.vm.inputs.viewDidLoad() - - self.shippingLocationViewHidden.assertValues([true]) - } - - func testShippingLocationViewHidden_NoShipping() { - self.shippingLocationViewHidden.assertDidNotEmitValue() - - let reward = Reward.template - |> Reward.lens.shipping .~ ( - .template |> Reward.Shipping.lens.enabled .~ false - ) - let project = Project.template - |> Project.lens.rewardData.rewards .~ [reward] - - self.vm.inputs.configure(with: project, refTag: RefTag.category, context: .createPledge) - self.vm.inputs.viewDidLoad() - - self.shippingLocationViewHidden.assertValues([true]) } func testConfigureWithProject() { @@ -329,14 +227,11 @@ final class RewardsCollectionViewModelTests: TestCase { self.showEditRewardConfirmationPromptMessage.assertDidNotEmitValue() XCTAssertNil(self.vm.outputs.selectedReward()) - self.vm.inputs.shippingRuleSelected(self.shippingRule) - self.vm.inputs.rewardSelected(with: firstRewardId) let expected = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -426,7 +321,6 @@ final class RewardsCollectionViewModelTests: TestCase { self.vm.inputs.configure(with: project, refTag: .activity, context: .createPledge) self.vm.inputs.viewDidLoad() - self.vm.inputs.shippingRuleSelected(self.shippingRule) self.goToPledge.assertDidNotEmitValue() XCTAssertNil(self.vm.outputs.selectedReward()) @@ -434,7 +328,6 @@ final class RewardsCollectionViewModelTests: TestCase { let expected1 = PledgeViewData( project: project, rewards: [firstReward], - selectedShippingRule: shippingRule, selectedQuantities: [firstReward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -452,7 +345,6 @@ final class RewardsCollectionViewModelTests: TestCase { let expected2 = PledgeViewData( project: project, rewards: [secondReward], - selectedShippingRule: shippingRule, selectedQuantities: [secondReward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -484,7 +376,6 @@ final class RewardsCollectionViewModelTests: TestCase { self.vm.inputs.configure(with: project, refTag: .activity, context: .createPledge) self.vm.inputs.viewDidLoad() - self.vm.inputs.shippingRuleSelected(self.shippingRule) self.goToAddOnSelection.assertDidNotEmitValue() self.goToPledge.assertDidNotEmitValue() @@ -495,7 +386,6 @@ final class RewardsCollectionViewModelTests: TestCase { let expected1 = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -530,7 +420,6 @@ final class RewardsCollectionViewModelTests: TestCase { self.vm.inputs.configure(with: project, refTag: .activity, context: .createPledge) self.vm.inputs.viewDidLoad() - self.vm.inputs.shippingRuleSelected(self.shippingRule) self.goToAddOnSelection.assertDidNotEmitValue() self.goToPledge.assertDidNotEmitValue() @@ -541,7 +430,6 @@ final class RewardsCollectionViewModelTests: TestCase { let expected1 = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -577,7 +465,6 @@ final class RewardsCollectionViewModelTests: TestCase { self.vm.inputs.configure(with: project, refTag: .activity, context: .createPledge) self.vm.inputs.viewDidLoad() - self.vm.inputs.shippingRuleSelected(self.shippingRule) self.goToAddOnSelection.assertDidNotEmitValue() self.goToPledge.assertDidNotEmitValue() @@ -588,7 +475,6 @@ final class RewardsCollectionViewModelTests: TestCase { let expected1 = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity, @@ -640,7 +526,6 @@ final class RewardsCollectionViewModelTests: TestCase { self.vm.inputs.configure(with: project, refTag: .activity, context: .createPledge) self.vm.inputs.viewDidLoad() - self.vm.inputs.shippingRuleSelected(self.shippingRule) self.goToAddOnSelection.assertDidNotEmitValue() self.goToPledge.assertDidNotEmitValue() @@ -651,7 +536,6 @@ final class RewardsCollectionViewModelTests: TestCase { let expected1 = PledgeViewData( project: project, rewards: [reward], - selectedShippingRule: shippingRule, selectedQuantities: [reward.id: 1], selectedLocationId: nil, refTag: .activity,