@@ -144,10 +144,10 @@ final class CouponDetailsViewModelTests: XCTestCase {
144144 XCTAssertEqual ( viewModel. amount, " 10% " )
145145 }
146146
147- func test_coupon_performance_is_correct ( ) {
147+ func test_coupon_performance_is_correct_with_usage_count_equal_to_0 ( ) {
148148 // Given
149- let sampleCoupon = Coupon . fake ( )
150- let sampleReport = CouponReport . fake ( ) . copy ( amount: 220. 0, ordersCount: 10 )
149+ let sampleCoupon = Coupon . fake ( ) . copy ( usageCount : 0 )
150+ let sampleReport = CouponReport . fake ( ) . copy ( amount: 0 , ordersCount: 0 )
151151 let stores = MockStoresManager ( sessionManager: . makeForTesting( ) )
152152 let viewModel = CouponDetailsViewModel ( coupon: sampleCoupon, stores: stores, currencySettings: CurrencySettings ( ) )
153153 XCTAssertEqual ( viewModel. discountedOrdersCount, " 0 " )
@@ -164,6 +164,31 @@ final class CouponDetailsViewModelTests: XCTestCase {
164164 }
165165 viewModel. loadCouponReport ( )
166166
167+ // Then
168+ XCTAssertEqual ( viewModel. discountedOrdersCount, " 0 " )
169+ XCTAssertEqual ( viewModel. discountedAmount, " $0.00 " )
170+ }
171+
172+ func test_coupon_performance_is_correct_with_usage_count_larger_than_0( ) {
173+ // Given
174+ let sampleCoupon = Coupon . fake ( ) . copy ( usageCount: 10 )
175+ let sampleReport = CouponReport . fake ( ) . copy ( amount: 220.0 , ordersCount: 10 )
176+ let stores = MockStoresManager ( sessionManager: . makeForTesting( ) )
177+ let viewModel = CouponDetailsViewModel ( coupon: sampleCoupon, stores: stores, currencySettings: CurrencySettings ( ) )
178+ XCTAssertEqual ( viewModel. discountedOrdersCount, " 10 " )
179+ XCTAssertEqual ( viewModel. discountedAmount, nil )
180+
181+ // When
182+ stores. whenReceivingAction ( ofType: CouponAction . self) { action in
183+ switch action {
184+ case let . loadCouponReport( _, _, _, onCompletion) :
185+ onCompletion ( . success( sampleReport) )
186+ default :
187+ break
188+ }
189+ }
190+ viewModel. loadCouponReport ( )
191+
167192 // Then
168193 XCTAssertEqual ( viewModel. discountedOrdersCount, " 10 " )
169194 XCTAssertEqual ( viewModel. discountedAmount, " $220.00 " )
0 commit comments