@@ -22,7 +22,6 @@ struct POSLocalCatalogEligibilityServiceTests {
2222 let service = POSLocalCatalogEligibilityService (
2323 catalogSizeChecker: sizeChecker,
2424 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
25- isPOSTabVisible: true ,
2625 catalogSizeLimit: 1000
2726 )
2827
@@ -38,7 +37,6 @@ struct POSLocalCatalogEligibilityServiceTests {
3837 let service = POSLocalCatalogEligibilityService (
3938 catalogSizeChecker: sizeChecker,
4039 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
41- isPOSTabVisible: true ,
4240 catalogSizeLimit: 1000
4341 )
4442
@@ -56,7 +54,6 @@ struct POSLocalCatalogEligibilityServiceTests {
5654 let service = POSLocalCatalogEligibilityService (
5755 catalogSizeChecker: sizeChecker,
5856 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
59- isPOSTabVisible: true ,
6057 catalogSizeLimit: 1000
6158 )
6259
@@ -88,7 +85,6 @@ struct POSLocalCatalogEligibilityServiceTests {
8885 let service = POSLocalCatalogEligibilityService (
8986 catalogSizeChecker: sizeChecker,
9087 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
91- isPOSTabVisible: true ,
9288 catalogSizeLimit: 1000
9389 )
9490
@@ -118,7 +114,6 @@ struct POSLocalCatalogEligibilityServiceTests {
118114 let service = POSLocalCatalogEligibilityService (
119115 catalogSizeChecker: sizeChecker,
120116 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
121- isPOSTabVisible: true ,
122117 catalogSizeLimit: 1000
123118 )
124119
@@ -142,7 +137,6 @@ struct POSLocalCatalogEligibilityServiceTests {
142137 let service = POSLocalCatalogEligibilityService (
143138 catalogSizeChecker: sizeChecker,
144139 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
145- isPOSTabVisible: true ,
146140 catalogSizeLimit: 1000
147141 )
148142
@@ -166,7 +160,6 @@ struct POSLocalCatalogEligibilityServiceTests {
166160 let service = POSLocalCatalogEligibilityService (
167161 catalogSizeChecker: sizeChecker,
168162 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
169- isPOSTabVisible: true ,
170163 catalogSizeLimit: 1000
171164 )
172165
@@ -205,7 +198,6 @@ struct POSLocalCatalogEligibilityServiceTests {
205198 let service = POSLocalCatalogEligibilityService (
206199 catalogSizeChecker: sizeChecker,
207200 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
208- isPOSTabVisible: true ,
209201 catalogSizeLimit: 1000
210202 )
211203
@@ -236,7 +228,6 @@ struct POSLocalCatalogEligibilityServiceTests {
236228 let service = POSLocalCatalogEligibilityService (
237229 catalogSizeChecker: sizeChecker,
238230 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
239- isPOSTabVisible: true ,
240231 catalogSizeLimit: 100 // Custom lower limit
241232 )
242233
@@ -256,62 +247,88 @@ struct POSLocalCatalogEligibilityServiceTests {
256247 #expect( limit == 100 )
257248 }
258249
259- // MARK: - POS Tab Visibility
250+ // MARK: - POS Eligibility
260251
261- @Test ( " POS tab not visible returns ineligible " )
262- func testPOSTabNotVisibleReturnsIneligible ( ) async {
252+ @Test ( " POS not eligible returns ineligible " )
253+ func testPOSNotEligibleReturnsIneligible ( ) async {
263254 let sizeChecker = MockPOSCatalogSizeChecker (
264255 sizeToReturn: . success( POSCatalogSize ( productCount: 500 , variationCount: 400 ) )
265256 )
266257 let featureFlagService = MockFeatureFlagService ( isLocalCatalogEnabled: true )
267258 let service = POSLocalCatalogEligibilityService (
268259 catalogSizeChecker: sizeChecker,
269260 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
270- isPOSTabVisible: false ,
271261 catalogSizeLimit: 1000
272262 )
273263
264+ // Set POS as not eligible
265+ await service. updatePOSEligibility ( isEligible: false , for: siteID)
266+
274267 let state = await service. catalogEligibility ( for: siteID)
275268
276269 guard case . ineligible( let reason) = state else {
277270 Issue . record ( " Expected ineligible state " )
278271 return
279272 }
280273
281- guard case . posTabNotVisible = reason else {
282- Issue . record ( " Expected posTabNotVisible reason " )
274+ guard case . posTabNotEligible = reason else {
275+ Issue . record ( " Expected posTabNotEligible reason " )
283276 return
284277 }
285278
286279 // Should not have checked catalog size
287280 #expect( sizeChecker. checkCatalogSizeCallCount == 0 )
288281 }
289282
290- @Test ( " POS tab visibility checked before catalog size " )
291- func testPOSTabVisibilityCheckedFirst ( ) async {
283+ @Test ( " POS eligibility checked before catalog size " )
284+ func testPOSEligibilityCheckedFirst ( ) async {
292285 let sizeChecker = MockPOSCatalogSizeChecker (
293286 sizeToReturn: . success( POSCatalogSize ( productCount: 2000 , variationCount: 0 ) )
294287 )
295288 let featureFlagService = MockFeatureFlagService ( isLocalCatalogEnabled: true )
296289 let service = POSLocalCatalogEligibilityService (
297290 catalogSizeChecker: sizeChecker,
298291 isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
299- isPOSTabVisible: false ,
300292 catalogSizeLimit: 1000
301293 )
302294
303- // Should be ineligible due to POS tab not visible, not catalog size
295+ // Set POS as not eligible
296+ await service. updatePOSEligibility ( isEligible: false , for: siteID)
297+
298+ // Should be ineligible due to POS not eligible, not catalog size
304299 guard case . ineligible( let reason) = await service. catalogEligibility ( for: siteID) else {
305300 Issue . record ( " Expected ineligible state " )
306301 return
307302 }
308303
309- guard case . posTabNotVisible = reason else {
310- Issue . record ( " Expected posTabNotVisible reason, not catalogSizeTooLarge " )
304+ guard case . posTabNotEligible = reason else {
305+ Issue . record ( " Expected posTabNotEligible reason, not catalogSizeTooLarge " )
311306 return
312307 }
313308
314- // Should not have checked catalog size since POS tab wasn't visible
309+ // Should not have checked catalog size since POS wasn't eligible
315310 #expect( sizeChecker. checkCatalogSizeCallCount == 0 )
316311 }
312+
313+ @Test ( " POS eligible allows catalog size check " )
314+ func testPOSEligibleAllowsCatalogSizeCheck( ) async {
315+ let sizeChecker = MockPOSCatalogSizeChecker (
316+ sizeToReturn: . success( POSCatalogSize ( productCount: 500 , variationCount: 400 ) )
317+ )
318+ let featureFlagService = MockFeatureFlagService ( isLocalCatalogEnabled: true )
319+ let service = POSLocalCatalogEligibilityService (
320+ catalogSizeChecker: sizeChecker,
321+ isLocalCatalogFeatureFlagEnabled: featureFlagService. isFeatureFlagEnabled ( . pointOfSaleLocalCatalogi1) ,
322+ catalogSizeLimit: 1000
323+ )
324+
325+ // Set POS as eligible
326+ await service. updatePOSEligibility ( isEligible: true , for: siteID)
327+
328+ let state = await service. catalogEligibility ( for: siteID)
329+ #expect( state == . eligible)
330+
331+ // Should have checked catalog size since POS was eligible
332+ #expect( sizeChecker. checkCatalogSizeCallCount == 1 )
333+ }
317334}
0 commit comments