Skip to content

Commit 55b90c1

Browse files
committed
tests happy path for refreshitems, loadnextitems
1 parent 1c9aac6 commit 55b90c1

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

WooCommerce/WooCommerceTests/POS/Controllers/PointOfSaleCouponsControllerTests.swift

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,72 @@ struct PointOfSaleCouponsControllerTests {
6666
// Then
6767
#expect(sut.itemsViewState == expectedViewState)
6868
}
69+
70+
@available(iOS 17.0, *)
71+
@Test func refreshItems_when_empty_coupons_then_results_in_empty_loaded_state() async throws {
72+
// Given
73+
let couponProvider = MockPointOfSaleCouponService()
74+
couponProvider.shouldReturnZeroItems = true
75+
let sut = PointOfSaleCouponsController(itemProvider: couponProvider)
76+
77+
let expectedItemStackState = ItemsStackState(root: .loaded([], hasMoreItems: false), itemStates: [:])
78+
let expectedViewState = ItemsViewState(containerState: .content, itemsStack: expectedItemStackState)
79+
80+
// When
81+
await sut.refreshItems(base: .root)
82+
83+
// Then
84+
#expect(sut.itemsViewState == expectedViewState)
85+
}
86+
87+
@available(iOS 17.0, *)
88+
@Test func refreshItems_when_some_coupons_then_results_in_coupons_loaded_state() async throws {
89+
// Given
90+
let couponProvider = MockPointOfSaleCouponService()
91+
let expectedCoupons = MockPointOfSaleCouponService.makeInitialCoupons()
92+
let sut = PointOfSaleCouponsController(itemProvider: couponProvider)
93+
94+
let expectedItemStackState = ItemsStackState(root: .loaded(expectedCoupons, hasMoreItems: false), itemStates: [:])
95+
let expectedViewState = ItemsViewState(containerState: .content, itemsStack: expectedItemStackState)
96+
97+
// When
98+
await sut.refreshItems(base: .root)
99+
100+
// Then
101+
#expect(sut.itemsViewState == expectedViewState)
102+
}
103+
104+
@available(iOS 17.0, *)
105+
@Test func loadNextItems_when_empty_coupons_then_results_in_empty_loaded_state() async throws {
106+
// Given
107+
let couponProvider = MockPointOfSaleCouponService()
108+
couponProvider.shouldReturnZeroItems = true
109+
let sut = PointOfSaleCouponsController(itemProvider: couponProvider)
110+
111+
let expectedItemStackState = ItemsStackState(root: .loaded([], hasMoreItems: false), itemStates: [:])
112+
let expectedViewState = ItemsViewState(containerState: .content, itemsStack: expectedItemStackState)
113+
114+
// When
115+
await sut.loadNextItems(base: .root)
116+
117+
// Then
118+
#expect(sut.itemsViewState == expectedViewState)
119+
}
120+
121+
@available(iOS 17.0, *)
122+
@Test func loadNextItems_when_some_coupons_then_results_in_coupons_loaded_state() async throws {
123+
// Given
124+
let couponProvider = MockPointOfSaleCouponService()
125+
let expectedCoupons = MockPointOfSaleCouponService.makeInitialCoupons()
126+
let sut = PointOfSaleCouponsController(itemProvider: couponProvider)
127+
128+
let expectedItemStackState = ItemsStackState(root: .loaded(expectedCoupons, hasMoreItems: false), itemStates: [:])
129+
let expectedViewState = ItemsViewState(containerState: .content, itemsStack: expectedItemStackState)
130+
131+
// When
132+
await sut.loadNextItems(base: .root)
133+
134+
// Then
135+
#expect(sut.itemsViewState == expectedViewState)
136+
}
69137
}

0 commit comments

Comments
 (0)