Skip to content

Commit 76c6b0a

Browse files
authored
Merge pull request #7116 from woocommerce/issue/7106-coupons-empty-allowed-emails
Coupons: Allow empty email list
2 parents 408a575 + 74a235d commit 76c6b0a

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

WooCommerce/Classes/ViewRelated/Coupons/Add and Edit Coupons/UsageDetails/CouponAllowedEmailsViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ final class CouponAllowedEmailsViewModel: ObservableObject {
2424
func validateEmails(dismissHandler: @escaping () -> Void) {
2525
let emails = emailPatterns.components(separatedBy: ", ")
2626
let foundInvalidPatterns = emails.contains(where: { !EmailFormatValidator.validate(string: $0) })
27-
if !foundInvalidPatterns {
27+
if emailPatterns.isEmpty || !foundInvalidPatterns {
2828
onCompletion(emailPatterns)
2929
dismissHandler()
3030
} else {

WooCommerce/Classes/ViewRelated/Coupons/Add and Edit Coupons/UsageDetails/CouponRestrictionsViewModel.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ final class CouponRestrictionsViewModel: ObservableObject {
7575
}
7676
}()
7777

78-
lazy var allowedEmailsViewModel = {
78+
var allowedEmailsViewModel: CouponAllowedEmailsViewModel {
7979
CouponAllowedEmailsViewModel(allowedEmails: allowedEmails) { [weak self] updatedEmails in
8080
self?.allowedEmails = updatedEmails
8181
}
82-
}()
82+
}
8383

8484
private let siteID: Int64
8585
private let stores: StoresManager

WooCommerce/WooCommerceTests/ViewRelated/Coupons/CouponAllowedEmailsViewModelTests.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,23 @@ final class CouponAllowedEmailsViewModelTests: XCTestCase {
2020
XCTAssertNil(viewModel.notice)
2121
}
2222

23+
func test_completion_block_is_triggered_when_allowed_email_list_is_empty() {
24+
// Given
25+
var savedAddresses: String?
26+
let completionBlock: (String) -> Void = { email in
27+
savedAddresses = email
28+
}
29+
let viewModel = CouponAllowedEmailsViewModel(allowedEmails: "[email protected]", onCompletion: completionBlock)
30+
31+
// When
32+
viewModel.emailPatterns = ""
33+
viewModel.validateEmails {}
34+
35+
// Then
36+
XCTAssertEqual(savedAddresses, "")
37+
XCTAssertNil(viewModel.notice)
38+
}
39+
2340
func test_completion_block_is_not_triggered_and_notice_is_not_nil_when_address_validation_fails() {
2441
var savedAddresses: String?
2542
let completionBlock: (String) -> Void = { email in

0 commit comments

Comments
 (0)