Allow unsubscribing from the WooCommerce segment [MAILPOET-1483]

This commit is contained in:
wxa
2019-03-27 10:55:28 +03:00
committed by M. Shull
parent 41212d8a6f
commit 00c9e682ed
2 changed files with 5 additions and 14 deletions

View File

@@ -19,16 +19,13 @@ class SubscriberSegment extends Model {
$subscriber->save(); $subscriber->save();
$wp_segment = Segment::getWPSegment(); $wp_segment = Segment::getWPSegment();
$wc_segment = Segment::getWooCommerceSegment();
if (!empty($segment_ids)) { if (!empty($segment_ids)) {
// unsubscribe from segments // unsubscribe from segments
foreach ($segment_ids as $segment_id) { foreach ($segment_ids as $segment_id) {
// do not remove subscriptions to the WP Users or WooCommerce Customers segments // do not remove subscriptions to the WP Users segment
if (($wp_segment !== false && (int)$wp_segment->id === (int)$segment_id) if ($wp_segment !== false && (int)$wp_segment->id === (int)$segment_id) {
|| ($wc_segment !== false && (int)$wc_segment->id === (int)$segment_id)
) {
continue; continue;
} }
@@ -49,11 +46,6 @@ class SubscriberSegment extends Model {
'segment_id', $wp_segment->id 'segment_id', $wp_segment->id
); );
} }
if ($wc_segment !== false) {
$subscriptions = $subscriptions->whereNotEqual(
'segment_id', $wc_segment->id
);
}
$subscriptions->findResultSet() $subscriptions->findResultSet()
->set('status', Subscriber::STATUS_UNSUBSCRIBED) ->set('status', Subscriber::STATUS_UNSUBSCRIBED)

View File

@@ -79,7 +79,7 @@ class SubscriberSegmentTest extends \MailPoetTest {
expect($subscribed_segments[0]['name'])->equals($this->segment_2->name); expect($subscribed_segments[0]['name'])->equals($this->segment_2->name);
} }
function testItDoesNotUnsubscribeFromWPAndWooCommerceSegments() { function testItDoesNotUnsubscribeFromWPSegment() {
$subscriber = $this->subscriber; $subscriber = $this->subscriber;
$segment_1 = $this->segment_1; $segment_1 = $this->segment_1;
$segment_1->type = Segment::TYPE_WP_USERS; $segment_1->type = Segment::TYPE_WP_USERS;
@@ -126,7 +126,7 @@ class SubscriberSegmentTest extends \MailPoetTest {
expect($subscriber->subscriptions[0]['segment_id'])->equals($segment_1->id); expect($subscriber->subscriptions[0]['segment_id'])->equals($segment_1->id);
expect($subscriber->subscriptions[1]['status'])->equals(Subscriber::STATUS_UNSUBSCRIBED); expect($subscriber->subscriptions[1]['status'])->equals(Subscriber::STATUS_UNSUBSCRIBED);
expect($subscriber->subscriptions[1]['segment_id'])->equals($segment_2->id); expect($subscriber->subscriptions[1]['segment_id'])->equals($segment_2->id);
expect($subscriber->subscriptions[2]['status'])->equals(Subscriber::STATUS_SUBSCRIBED); expect($subscriber->subscriptions[2]['status'])->equals(Subscriber::STATUS_UNSUBSCRIBED);
expect($subscriber->subscriptions[2]['segment_id'])->equals($segment_3->id); expect($subscriber->subscriptions[2]['segment_id'])->equals($segment_3->id);
} }
@@ -301,9 +301,8 @@ class SubscriberSegmentTest extends \MailPoetTest {
// the subscriber should still be subscribed to the WP segment // the subscriber should still be subscribed to the WP segment
$subscribed_segments = $this->subscriber->segments()->findArray(); $subscribed_segments = $this->subscriber->segments()->findArray();
expect($subscribed_segments)->count(2); expect($subscribed_segments)->count(1);
expect($subscribed_segments[0]['name'])->equals($this->wp_segment->name); expect($subscribed_segments[0]['name'])->equals($this->wp_segment->name);
expect($subscribed_segments[1]['name'])->equals($this->wc_segment->name);
} }
function testItCannotDeleteSubscriptionToWPAndWooCommerceSegments() { function testItCannotDeleteSubscriptionToWPAndWooCommerceSegments() {