Skip to content

Commit 433d647

Browse files
committed
Add tests for product type selector in CIAB environment
1 parent 1713151 commit 433d647

File tree

3 files changed

+70
-2
lines changed

3 files changed

+70
-2
lines changed

WooCommerce/Classes/ViewRelated/Products/Edit Product/BottomSheetListSelector/ProductTypeBottomSheetListSelectorCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ final class ProductTypeBottomSheetListSelectorCommand: BottomSheetListSelectorCo
3939

4040
init(source: Source,
4141
subscriptionProductsEligibilityChecker: WooSubscriptionProductsEligibilityCheckerProtocol,
42-
siteCIABEligibilityChecker: CIABEligibilityCheckerProtocol,
42+
siteCIABEligibilityChecker: CIABEligibilityCheckerProtocol = CIABEligibilityChecker(),
4343
onSelection: @escaping (BottomSheetProductType) -> Void) {
4444
self.source = source
4545
self.onSelection = onSelection

WooCommerce/WooCommerceTests/Mocks/MockCIABEligibilityChecker.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ final class MockCIABEligibilityChecker: CIABEligibilityCheckerProtocol {
2222
}
2323

2424
func isFeatureSupportedForCurrentSite(_ feature: CIABAffectedFeature) -> Bool {
25-
return !mockedCIABDisabledFeatures.contains(feature)
25+
return !mockedCIABDisabledFeatures.contains(feature) || !isCurrentSiteCIAB
2626
}
2727

2828
func isFeatureSupported(_ feature: CIABAffectedFeature, for site: Site) -> Bool {

WooCommerce/WooCommerceTests/ViewRelated/Products/BottomSheetListSelector/ProductTypeBottomSheetListSelectorCommandTests.swift

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,72 @@ final class ProductTypeBottomSheetListSelectorCommandTests: XCTestCase {
120120
]
121121
XCTAssertEqual(selectedActions, expectedActions)
122122
}
123+
124+
func test_creation_form_data_does_not_contain_grouped_and_variable_types_if_site_is_ciab() {
125+
// Given
126+
let subscriptionEligibilityChecker = MockWooSubscriptionProductsEligibilityChecker(isEligible: true)
127+
let siteCIABEligibilityChecker = MockCIABEligibilityChecker(mockedIsCurrentSiteCIAB: true)
128+
129+
// When
130+
let command = ProductTypeBottomSheetListSelectorCommand(
131+
source: .creationForm,
132+
subscriptionProductsEligibilityChecker: subscriptionEligibilityChecker,
133+
siteCIABEligibilityChecker: siteCIABEligibilityChecker
134+
) { _ in }
135+
136+
// Then
137+
XCTAssertFalse(command.data.contains(.grouped), "'command.data' should not contain grouped product type")
138+
XCTAssertFalse(command.data.contains(.variable), "'command.data' should not contain variable product type")
139+
}
140+
141+
func test_creation_form_data_contains_grouped_and_variable_types_if_site_is_non_ciab_and_other_requirements_met() {
142+
// Given
143+
let subscriptionEligibilityChecker = MockWooSubscriptionProductsEligibilityChecker(isEligible: true)
144+
let siteCIABEligibilityChecker = MockCIABEligibilityChecker(mockedIsCurrentSiteCIAB: false)
145+
146+
// When
147+
let command = ProductTypeBottomSheetListSelectorCommand(
148+
source: .creationForm,
149+
subscriptionProductsEligibilityChecker: subscriptionEligibilityChecker,
150+
siteCIABEligibilityChecker: siteCIABEligibilityChecker
151+
) { _ in }
152+
153+
// Then
154+
XCTAssertTrue(command.data.contains(.grouped), "'command.data' should contain grouped product type")
155+
XCTAssertTrue(command.data.contains(.variable), "'command.data' should contain variable product type")
156+
}
157+
158+
func test_edit_form_data_does_not_contain_grouped_and_variable_types_if_site_is_ciab() {
159+
// Given
160+
let subscriptionEligibilityChecker = MockWooSubscriptionProductsEligibilityChecker(isEligible: true)
161+
let siteCIABEligibilityChecker = MockCIABEligibilityChecker(mockedIsCurrentSiteCIAB: true)
162+
163+
// When
164+
let command = ProductTypeBottomSheetListSelectorCommand(
165+
source: .editForm(selected: .simple(isVirtual: false)),
166+
subscriptionProductsEligibilityChecker: subscriptionEligibilityChecker,
167+
siteCIABEligibilityChecker: siteCIABEligibilityChecker
168+
) { _ in }
169+
170+
// Then
171+
XCTAssertFalse(command.data.contains(.grouped), "'command.data' should not contain grouped product type")
172+
XCTAssertFalse(command.data.contains(.variable), "'command.data' should not contain variable product type")
173+
}
174+
175+
func test_edit_form_data_contains_grouped_and_variable_types_if_site_is_non_ciab_and_other_requirements_met() {
176+
// Given
177+
let subscriptionEligibilityChecker = MockWooSubscriptionProductsEligibilityChecker(isEligible: true)
178+
let siteCIABEligibilityChecker = MockCIABEligibilityChecker(mockedIsCurrentSiteCIAB: false)
179+
180+
// When
181+
let command = ProductTypeBottomSheetListSelectorCommand(
182+
source: .editForm(selected: .simple(isVirtual: false)),
183+
subscriptionProductsEligibilityChecker: subscriptionEligibilityChecker,
184+
siteCIABEligibilityChecker: siteCIABEligibilityChecker
185+
) { _ in }
186+
187+
// Then
188+
XCTAssertTrue(command.data.contains(.grouped), "'command.data' should contain grouped product type")
189+
XCTAssertTrue(command.data.contains(.variable), "'command.data' should contain variable product type")
190+
}
123191
}

0 commit comments

Comments
 (0)