Skip to content

Commit d36da15

Browse files
committed
Update Tests
1 parent 4dee457 commit d36da15

File tree

5 files changed

+41
-22
lines changed

5 files changed

+41
-22
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Creation/NewOrderViewModel.swift

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ final class NewOrderViewModel: ObservableObject {
162162
case .success(let newOrder):
163163
self.onOrderCreated(newOrder)
164164
case .failure(let error):
165-
self.notice = self.createOrderCreationErrorNotice()
165+
self.notice = NoticeFactory.createOrderCreationErrorNotice()
166166
DDLogError("⛔️ Error creating new order: \(error)")
167167
}
168168
}
@@ -381,15 +381,22 @@ private extension NewOrderViewModel {
381381
}
382382
.assign(to: &$paymentDataViewModel)
383383
}
384+
}
385+
386+
// MARK: Constants
384387

385-
/// Returns a default order creation error notice.
388+
extension NewOrderViewModel {
389+
/// New Order notices
386390
///
387-
func createOrderCreationErrorNotice() -> Notice {
388-
Notice(title: Localization.errorMessage, feedbackType: .error)
391+
enum NoticeFactory {
392+
/// Returns a default order creation error notice.
393+
///
394+
static func createOrderCreationErrorNotice() -> Notice {
395+
Notice(title: Localization.errorMessage, feedbackType: .error)
396+
}
389397
}
390398
}
391399

392-
// MARK: Constants
393400
private extension NewOrderViewModel {
394401
enum Localization {
395402
static let errorMessage = NSLocalizedString("Unable to create new order", comment: "Notice displayed when order creation fails")

WooCommerce/Classes/ViewRelated/Orders/Order Details/Address Edit/AddressFormViewModelProtocol.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,7 @@ open class AddressFormViewModel: ObservableObject {
233233
/// Defines the current notice that should be shown.
234234
/// Defaults to `nil`.
235235
///
236-
@Published var notice: Notice? {
237-
didSet {
238-
print("notice set")
239-
}
240-
}
236+
@Published var notice: Notice?
241237

242238
/// Defines if the state field should be defined as a list selector.
243239
///
@@ -304,10 +300,14 @@ extension AddressFormViewModel {
304300
}
305301
}
306302

307-
/// Creates an error notice based on the provided edit address error.
303+
/// Creates address form general notices.
308304
///
309-
static func createErrorNotice(from error: EditAddressError) -> Notice {
310-
Notice(title: error.errorDescription ?? "", message: error.recoverySuggestion, feedbackType: .error)
305+
enum NoticeFactory {
306+
/// Creates an error notice based on the provided edit address error.
307+
///
308+
static func createErrorNotice(from error: EditAddressError) -> Notice {
309+
Notice(title: error.errorDescription ?? "", message: error.recoverySuggestion, feedbackType: .error)
310+
}
311311
}
312312
}
313313

@@ -396,7 +396,7 @@ private extension AddressFormViewModel {
396396
let syncCountries = makeSyncCountriesFuture()
397397
.catch { [weak self] error -> AnyPublisher<Void, Never> in
398398
DDLogError("⛔️ Failed to load countries with: \(error)")
399-
self?.notice = Self.createErrorNotice(from: error)
399+
self?.notice = NoticeFactory.createErrorNotice(from: error)
400400
return Just(()).eraseToAnyPublisher()
401401
}
402402

WooCommerce/Classes/ViewRelated/Orders/Order Details/Address Edit/EditOrderAddressFormViewModel.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,15 +124,15 @@ final class EditOrderAddressFormViewModel: AddressFormViewModel, AddressFormView
124124
switch result {
125125
case .success(let updatedOrder):
126126
self.onOrderUpdate?(updatedOrder)
127-
self.notice = .init(title: Localization.success, feedbackType: .success)
127+
self.notice = NoticeFactory.createSuccessNotice()
128128
self.analytics.track(event: WooAnalyticsEvent.OrderDetailsEdit.orderDetailEditFlowCompleted(subject: self.analyticsFlowType()))
129129

130130
case .failure(let error):
131131
DDLogError("⛔️ Error updating order: \(error)")
132132
if self.type == .billing, self.updatedAddress.hasEmailAddress == false {
133133
DDLogError("⛔️ Email is nil in address. It won't work in WC < 5.9.0 (https://git.io/J68Gl)")
134134
}
135-
self.notice = Self.createErrorNotice(from: .unableToUpdateAddress)
135+
self.notice = AddressFormViewModel.NoticeFactory.createErrorNotice(from: .unableToUpdateAddress)
136136
self.analytics.track(event: WooAnalyticsEvent.OrderDetailsEdit.orderDetailEditFlowFailed(subject: self.analyticsFlowType()))
137137
}
138138
onFinish(result.isSuccess)
@@ -151,6 +151,18 @@ final class EditOrderAddressFormViewModel: AddressFormViewModel, AddressFormView
151151
}
152152
}
153153

154+
extension EditOrderAddressFormViewModel {
155+
/// Creates edit address form notices.
156+
///
157+
enum NoticeFactory {
158+
/// Creates a success notice for editing an address.
159+
///
160+
static func createSuccessNotice() -> Notice {
161+
.init(title: Localization.success, feedbackType: .success)
162+
}
163+
}
164+
}
165+
154166
private extension EditOrderAddressFormViewModel {
155167

156168
/// Returns the correct analytics subject for the current address form type.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class NewOrderViewModelTests: XCTestCase {
9292
viewModel.createOrder()
9393

9494
// Then
95-
XCTAssertEqual(viewModel.presentNotice, .error)
95+
XCTAssertEqual(viewModel.notice, NewOrderViewModel.NoticeFactory.createOrderCreationErrorNotice())
9696
}
9797

9898
func test_view_model_loads_synced_pending_order_status() {

WooCommerce/WooCommerceTests/ViewRelated/Orders/Order Details/Addresses/EditOrderAddressFormViewModelTests.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -382,12 +382,12 @@ final class EditOrderAddressFormViewModelTests: XCTestCase {
382382
// When
383383
let noticeRequest = waitFor { promise in
384384
viewModel.saveAddress { _ in
385-
promise(viewModel.presentNotice)
385+
promise(viewModel.notice)
386386
}
387387
}
388388

389389
// Then
390-
assertEqual(noticeRequest, .success)
390+
assertEqual(noticeRequest, EditOrderAddressFormViewModel.NoticeFactory.createSuccessNotice())
391391
}
392392

393393
func test_view_model_fires_error_notice_after_failing_to_update_address() {
@@ -405,12 +405,12 @@ final class EditOrderAddressFormViewModelTests: XCTestCase {
405405
// When
406406
let noticeRequest = waitFor { promise in
407407
viewModel.saveAddress { _ in
408-
promise(viewModel.presentNotice)
408+
promise(viewModel.notice)
409409
}
410410
}
411411

412412
// Then
413-
assertEqual(noticeRequest, .error(.unableToUpdateAddress))
413+
assertEqual(noticeRequest, AddressFormViewModel.NoticeFactory.createErrorNotice(from: .unableToUpdateAddress))
414414
}
415415

416416
func test_view_model_fires_error_notice_after_failing_to_fetch_countries() {
@@ -427,7 +427,7 @@ final class EditOrderAddressFormViewModelTests: XCTestCase {
427427
viewModel.onLoadTrigger.send()
428428

429429
// Then
430-
assertEqual(viewModel.presentNotice, .error(.unableToLoadCountries))
430+
assertEqual(viewModel.notice, AddressFormViewModel.NoticeFactory.createErrorNotice(from: .unableToLoadCountries))
431431
}
432432

433433
func test_copying_empty_shipping_address_for_billing_does_not_sends_an_empty_email_field() {

0 commit comments

Comments
 (0)