Skip to content

Commit 9e2742a

Browse files
Add screen object for Order Status screen
Co-authored-by: thehenrybyrd <[email protected]>
1 parent eeb1b13 commit 9e2742a

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Details/Order Summary Section/Edit Order Status/OrderStatusListViewController.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ final class OrderStatusListViewController: UIViewController {
7474
func configureTableView() {
7575
view.backgroundColor = .listBackground
7676
tableView.backgroundColor = .listBackground
77+
tableView.accessibilityIdentifier = "order-status-list"
7778
tableView.dataSource = self
7879
tableView.delegate = self
7980
}
@@ -110,6 +111,7 @@ extension OrderStatusListViewController {
110111
target: self,
111112
action: #selector(applyButtonTapped))
112113
navigationItem.setRightBarButton(rightBarButton, animated: false)
114+
navigationItem.rightBarButtonItem?.accessibilityIdentifier = "order-status-list-apply-button"
113115
deActivateApplyButton()
114116
}
115117

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import ScreenObject
2+
import XCTest
3+
4+
public final class OrderStatusScreen: ScreenObject {
5+
6+
private let applyButtonGetter: (XCUIApplication) -> XCUIElement = {
7+
$0.buttons["order-status-list-apply-button"]
8+
}
9+
10+
private let orderStatusTableGetter: (XCUIApplication) -> XCUIElement = {
11+
$0.tables["order-status-list"]
12+
}
13+
14+
private var applyButton: XCUIElement { applyButtonGetter(app) }
15+
16+
/// Table with list of order statuses.
17+
///
18+
private var orderStatusTable: XCUIElement { orderStatusTableGetter(app) }
19+
20+
init(app: XCUIApplication = XCUIApplication()) throws {
21+
try super.init(
22+
expectedElementGetters: [ orderStatusTableGetter ],
23+
app: app
24+
)
25+
}
26+
27+
/// Selects a new order status from the list.
28+
/// - Returns: Order Status screen object (self).
29+
@discardableResult
30+
public func selectOrderStatus(atIndex index: Int) throws -> Self {
31+
orderStatusTable.cells.element(boundBy: index).tap()
32+
return self
33+
}
34+
35+
/// Updates the order with the selected order status.
36+
/// - Returns: New Order screen object.
37+
@discardableResult
38+
public func confirmSelectedOrderStatus() throws -> NewOrderScreen {
39+
applyButton.tap()
40+
return try NewOrderScreen()
41+
}
42+
}

WooCommerce/WooCommerce.xcodeproj/project.pbxproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,6 +1206,7 @@
12061206
CC07860526736B6500BA9AC1 /* ErrorTopBannerFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC07860426736B6500BA9AC1 /* ErrorTopBannerFactoryTests.swift */; };
12071207
CC13C0CB278E021300C0B5B5 /* AddProductVariationToOrderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC13C0CA278E021300C0B5B5 /* AddProductVariationToOrderViewModel.swift */; };
12081208
CC13C0CD278E086D00C0B5B5 /* AddProductVariationToOrderViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC13C0CC278E086D00C0B5B5 /* AddProductVariationToOrderViewModelTests.swift */; };
1209+
CC1AB56827FC5822003DEF43 /* OrderStatusScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC1AB56727FC5821003DEF43 /* OrderStatusScreen.swift */; };
12091210
CC200BB127847DE300EC5884 /* OrderPaymentSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC200BB027847DE300EC5884 /* OrderPaymentSection.swift */; };
12101211
CC254F2D26C17AB5005F3C82 /* BottomButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC254F2C26C17AB5005F3C82 /* BottomButtonView.swift */; };
12111212
CC254F3026C2A53D005F3C82 /* ShippingLabelAddNewPackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC254F2F26C2A53D005F3C82 /* ShippingLabelAddNewPackage.swift */; };
@@ -2898,6 +2899,8 @@
28982899
CC07860426736B6500BA9AC1 /* ErrorTopBannerFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorTopBannerFactoryTests.swift; sourceTree = "<group>"; };
28992900
CC13C0CA278E021300C0B5B5 /* AddProductVariationToOrderViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddProductVariationToOrderViewModel.swift; sourceTree = "<group>"; };
29002901
CC13C0CC278E086D00C0B5B5 /* AddProductVariationToOrderViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddProductVariationToOrderViewModelTests.swift; sourceTree = "<group>"; };
2902+
CC1AB56727FC5821003DEF43 /* OrderStatusScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderStatusScreen.swift; sourceTree = "<group>"; };
2903+
CC1AB56927FC60D1003DEF43 /* NewOrderFlow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewOrderFlow.swift; sourceTree = "<group>"; };
29012904
CC200BB027847DE300EC5884 /* OrderPaymentSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderPaymentSection.swift; sourceTree = "<group>"; };
29022905
CC254F2C26C17AB5005F3C82 /* BottomButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomButtonView.swift; sourceTree = "<group>"; };
29032906
CC254F2F26C2A53D005F3C82 /* ShippingLabelAddNewPackage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShippingLabelAddNewPackage.swift; sourceTree = "<group>"; };
@@ -7808,6 +7811,7 @@
78087811
CC5C278627EE19A600B25D2A /* NewOrderScreen.swift */,
78097812
F997173623DBF02400592D8E /* SingleOrderScreen.swift */,
78107813
F997173C23DBFBBF00592D8E /* OrderSearchScreen.swift */,
7814+
CC1AB56727FC5821003DEF43 /* OrderStatusScreen.swift */,
78117815
);
78127816
path = Orders;
78137817
sourceTree = "<group>";
@@ -8495,6 +8499,7 @@
84958499
3F0CF30D2704490A00EF3D71 /* LoginSiteAddressScreen.swift in Sources */,
84968500
80C3626B27704EE1005CEAD3 /* ProductDataStructs.swift in Sources */,
84978501
80C3627127745737005CEAD3 /* ReviewDataStructs.swift in Sources */,
8502+
CC1AB56827FC5822003DEF43 /* OrderStatusScreen.swift in Sources */,
84988503
3F0CF2FE270420DD00EF3D71 /* ScreenObject+Extension.swift in Sources */,
84998504
3FF314EA26FC751B0012E68E /* XCTest+Extensions.swift in Sources */,
85008505
3F0CF3002704490A00EF3D71 /* OrderSearchScreen.swift in Sources */,

0 commit comments

Comments
 (0)