Skip to content

Commit cf8a7ce

Browse files
committed
Add test with shipping and fee lines
1 parent 0aac7d5 commit cf8a7ce

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

WooCommerce/WooCommerceTests/ViewRelated/Orders/Order Creation/NewOrderViewModelTests.swift

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)