@@ -102,47 +102,41 @@ public final class UnifiedOrderScreen: ScreenObject {
102102
103103 /// Opens the Order Status screen (to set a new order status).
104104 /// - Returns: Order Status screen object.
105- @discardableResult
106105 private func openOrderStatusScreen( ) throws -> OrderStatusScreen {
107106 orderStatusEditButton. tap ( )
108107 return try OrderStatusScreen ( )
109108 }
110109
111110 /// Opens the Add Product screen (to add a new product).
112111 /// - Returns: Add Product screen object.
113- @discardableResult
114112 private func openAddProductScreen( ) throws -> AddProductScreen {
115113 addProductButton. tap ( )
116114 return try AddProductScreen ( )
117115 }
118116
119117 /// Opens the Customer Details screen.
120118 /// - Returns: Customer Details screen object.
121- @discardableResult
122119 public func openCustomerDetailsScreen( ) throws -> CustomerDetailsScreen {
123120 addCustomerDetailsButton. tap ( )
124121 return try CustomerDetailsScreen ( )
125122 }
126123
127124 /// Opens the Add Shipping screen.
128125 /// - Returns: Add Shipping screen object.
129- @discardableResult
130126 public func openAddShippingScreen( ) throws -> AddShippingScreen {
131127 addShippingButton. tap ( )
132128 return try AddShippingScreen ( )
133129 }
134130
135131 /// Opens the Add Fee screen.
136132 /// - Returns: Add Fee screen object.
137- @discardableResult
138133 public func openAddFeeScreen( ) throws -> AddFeeScreen {
139134 addFeeButton. tap ( )
140135 return try AddFeeScreen ( )
141136 }
142137
143138 /// Opens the Customer Note screen.
144139 /// - Returns: Customer Note screen object.
145- @discardableResult
146140 public func openCustomerNoteScreen( ) throws -> CustomerNoteScreen {
147141 addNoteButton. tap ( )
148142 return try CustomerNoteScreen ( )
@@ -152,23 +146,20 @@ public final class UnifiedOrderScreen: ScreenObject {
152146
153147 /// Creates a remote order with all of the entered order data.
154148 /// - Returns: Single Order Detail screen object.
155- @discardableResult
156149 public func createOrder( ) throws -> SingleOrderScreen {
157150 createButton. tap ( )
158151 return try SingleOrderScreen ( )
159152 }
160153
161154 /// Changes the new order status to the second status in the Order Status list.
162155 /// - Returns: Unified Order screen object.
163- @discardableResult
164156 public func editOrderStatus( ) throws -> UnifiedOrderScreen {
165157 return try openOrderStatusScreen ( )
166158 . selectOrderStatus ( atIndex: 1 )
167159 }
168160
169161 /// Select the first product from the addProductScreen
170162 /// - Returns: Unified Order screen object.
171- @discardableResult
172163 public func addProduct( byName name: String ) throws -> UnifiedOrderScreen {
173164 return try openAddProductScreen ( )
174165 . selectProduct ( byName: name)
@@ -214,7 +205,6 @@ public final class UnifiedOrderScreen: ScreenObject {
214205
215206 /// Cancels Order Creation process
216207 /// - Returns: Orders Screen object.
217- @discardableResult
218208 public func cancelOrderCreation( ) throws -> OrdersScreen {
219209 // This cancel button exists only if the feature flag `.splitViewInOrdersTab` is on.
220210 // For taking app store screenshot, the beta feature is turned off so we should pop to get out of this screen.
@@ -236,4 +226,25 @@ public final class UnifiedOrderScreen: ScreenObject {
236226
237227 return self
238228 }
229+
230+ /// Checks the screen for existence of all products, checking each name.
231+ /// - Parameter productNames: Array of product names to check.
232+ /// - Returns: Unified Order screen object.
233+ @discardableResult
234+ public func checkForExistingProducts( byName productNames: [ String ] ) throws -> UnifiedOrderScreen {
235+ for productName in productNames {
236+ let productNamePredicate = NSPredicate ( format: " label MATCHES %@ " , productName)
237+ XCTAssertTrue ( app. staticTexts. containing ( productNamePredicate) . element. exists)
238+ }
239+
240+ return self
241+ }
242+
243+ /// Finishes Order Editing process
244+ /// - Returns: Single Order Screen object.
245+ public func closeEditingFlow( ) throws -> SingleOrderScreen {
246+ doneButton. tap ( )
247+
248+ return try SingleOrderScreen ( )
249+ }
239250}
0 commit comments