@@ -552,6 +552,56 @@ final class NewOrderViewModelTests: XCTestCase {
552552 XCTAssertEqual ( viewModel. paymentDataViewModel. orderTotal, " £8.50 " )
553553 XCTAssertEqual ( viewModel. paymentDataViewModel. feesBaseAmountForPercentage, 8.50 )
554554 }
555+
556+ func test_payment_section_is_correct_when_shipping_line_and_fee_line_are_added( ) {
557+ // Given
558+ let currencySettings = CurrencySettings ( currencyCode: . GBP, currencyPosition: . left, thousandSeparator: " " , decimalSeparator: " . " , numberOfDecimals: 2 )
559+ let product = Product . fake ( ) . copy ( siteID: sampleSiteID, productID: sampleProductID, price: " 8.50 " , purchasable: true )
560+ let storageManager = MockStorageManager ( )
561+ storageManager. insertSampleProduct ( readOnlyProduct: product)
562+ let viewModel = NewOrderViewModel ( siteID: sampleSiteID, storageManager: storageManager, currencySettings: currencySettings)
563+
564+ // When
565+ viewModel. addProductViewModel. selectProduct ( product. productID)
566+
567+ let testShippingLine = ShippingLine ( shippingID: 0 ,
568+ methodTitle: " Flat Rate " ,
569+ methodID: " other " ,
570+ total: " -5 " ,
571+ totalTax: " " ,
572+ taxes: [ ] )
573+ viewModel. saveShippingLine ( testShippingLine)
574+
575+ let testFeeLine = OrderFeeLine ( feeID: 0 ,
576+ name: " Fee " ,
577+ taxClass: " " ,
578+ taxStatus: . none,
579+ total: " 10 " ,
580+ totalTax: " " ,
581+ taxes: [ ] ,
582+ attributes: [ ] )
583+ viewModel. saveFeeLine ( testFeeLine)
584+
585+ // Then
586+ XCTAssertTrue ( viewModel. paymentDataViewModel. shouldShowShippingTotal)
587+ XCTAssertEqual ( viewModel. paymentDataViewModel. itemsTotal, " £8.50 " )
588+ XCTAssertEqual ( viewModel. paymentDataViewModel. shippingTotal, " -£5.00 " )
589+ XCTAssertEqual ( viewModel. paymentDataViewModel. orderTotal, " £13.50 " )
590+ XCTAssertEqual ( viewModel. paymentDataViewModel. feesTotal, " £10.00 " )
591+ XCTAssertEqual ( viewModel. paymentDataViewModel. feesBaseAmountForPercentage, 3.50 )
592+
593+ // When
594+ viewModel. saveShippingLine ( nil )
595+
596+ // Then
597+ XCTAssertFalse ( viewModel. paymentDataViewModel. shouldShowShippingTotal)
598+ XCTAssertEqual ( viewModel. paymentDataViewModel. itemsTotal, " £8.50 " )
599+ XCTAssertEqual ( viewModel. paymentDataViewModel. shippingTotal, " £0.00 " )
600+ XCTAssertEqual ( viewModel. paymentDataViewModel. orderTotal, " £18.50 " )
601+ XCTAssertEqual ( viewModel. paymentDataViewModel. feesTotal, " £10.00 " )
602+ XCTAssertEqual ( viewModel. paymentDataViewModel. feesBaseAmountForPercentage, 8.50 )
603+ }
604+
555605 func test_payment_section_loading_indicator_is_enabled_while_order_syncs( ) {
556606 // Given
557607 let stores = MockStoresManager ( sessionManager: . testingInstance)
0 commit comments