Skip to content

Commit b57b074

Browse files
committed
Add new items to the top of the Cart
1 parent e3950f9 commit b57b074

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

WooCommerce/Classes/POS/ViewModels/CartViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ final class CartViewModel: CartViewModelProtocol {
4545

4646
func addItemToCart(_ item: POSItem) {
4747
let cartItem = CartItem(id: UUID(), item: item, quantity: 1)
48-
itemsInCart.append(cartItem)
48+
itemsInCart.insert(cartItem, at: 0)
4949

5050
analytics.track(.pointOfSaleAddItemToCart)
5151
}

WooCommerce/WooCommerceTests/POS/ViewModels/CartViewModelTests.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ final class CartViewModelTests: XCTestCase {
4343
sut.submitCart()
4444
}
4545

46-
func test_cart_when_addItemToCart_is_invoked_then_adds_item_to_cart() {
46+
func test_addItemToCart_then_cart_is_not_empty() {
4747
// Given
4848
XCTAssertTrue(sut.itemsInCart.isEmpty, "Initial state")
4949
let item = Self.makeItem()
@@ -55,6 +55,19 @@ final class CartViewModelTests: XCTestCase {
5555
XCTAssertTrue(sut.itemsInCart.isNotEmpty)
5656
}
5757

58+
func test_addItemToCart_when_multiple_items_added_then_latest_item_is_first() {
59+
// Given
60+
XCTAssertTrue(sut.itemsInCart.isEmpty, "Initial state")
61+
let items = [Self.makeItem(), Self.makeItem(), Self.makeItem()]
62+
63+
// When
64+
items.forEach(sut.addItemToCart)
65+
66+
// Then
67+
XCTAssertEqual(sut.itemsInCart.map(\.item.itemID), items.reversed().map(\.itemID))
68+
XCTAssertNotEqual(sut.itemsInCart.map(\.item.itemID), items.map(\.itemID))
69+
}
70+
5871
func test_removeItemFromCart() {
5972
/* TODO:
6073
https://github.com/woocommerce/woocommerce-ios/issues/13209

0 commit comments

Comments
 (0)