@@ -345,6 +345,40 @@ class NewOrderViewModelTests: XCTestCase {
345345 XCTAssertEqual ( viewModel. paymentDataViewModel. itemsTotal, " £17.00 " )
346346 XCTAssertEqual ( viewModel. paymentDataViewModel. orderTotal, " £17.00 " )
347347 }
348+
349+ func test_payment_section_is_updated_when_shipping_line_updated( ) {
350+ // Given
351+ let currencySettings = CurrencySettings ( currencyCode: . GBP, currencyPosition: . left, thousandSeparator: " " , decimalSeparator: " . " , numberOfDecimals: 2 )
352+ let product = Product . fake ( ) . copy ( siteID: sampleSiteID, productID: sampleProductID, price: " 8.50 " , purchasable: true )
353+ let storageManager = MockStorageManager ( )
354+ storageManager. insertSampleProduct ( readOnlyProduct: product)
355+ let viewModel = NewOrderViewModel ( siteID: sampleSiteID, storageManager: storageManager, currencySettings: currencySettings)
356+
357+ // When
358+ viewModel. addProductViewModel. selectProduct ( product. productID)
359+ let testShippingLine = ShippingLine ( shippingID: 0 ,
360+ methodTitle: " Flat Rate " ,
361+ methodID: " other " ,
362+ total: " 10 " ,
363+ totalTax: " " ,
364+ taxes: [ ] )
365+ viewModel. saveShippingLine ( testShippingLine)
366+
367+ // Then
368+ XCTAssertTrue ( viewModel. paymentDataViewModel. shouldShowShippingTotal)
369+ XCTAssertEqual ( viewModel. paymentDataViewModel. itemsTotal, " £8.50 " )
370+ XCTAssertEqual ( viewModel. paymentDataViewModel. shippingTotal, " £10.00 " )
371+ XCTAssertEqual ( viewModel. paymentDataViewModel. orderTotal, " £18.50 " )
372+
373+ // When
374+ viewModel. saveShippingLine ( nil )
375+
376+ // Then
377+ XCTAssertFalse ( viewModel. paymentDataViewModel. shouldShowShippingTotal)
378+ XCTAssertEqual ( viewModel. paymentDataViewModel. itemsTotal, " £8.50 " )
379+ XCTAssertEqual ( viewModel. paymentDataViewModel. shippingTotal, " £0.00 " )
380+ XCTAssertEqual ( viewModel. paymentDataViewModel. orderTotal, " £8.50 " )
381+ }
348382}
349383
350384private extension MockStorageManager {
0 commit comments