Fix all lists removal when editing subscribers [MAILPOET-726]
This commit is contained in:
@ -107,6 +107,9 @@ class Subscribers extends APIEndpoint {
|
||||
}
|
||||
|
||||
function save($data = array()) {
|
||||
if (empty($data['segments'])) {
|
||||
$data['segments'] = array();
|
||||
}
|
||||
$subscriber = Subscriber::createOrUpdate($data);
|
||||
$errors = $subscriber->getErrors();
|
||||
|
||||
|
@ -54,6 +54,15 @@ class SubscriberSegment extends Model {
|
||||
return true;
|
||||
}
|
||||
|
||||
static function resubscribeToAllSegments($subscriber) {
|
||||
if($subscriber === false) return false;
|
||||
// (re)subscribe to all segments linked to the subscriber
|
||||
return self::where('subscriber_id', $subscriber->id)
|
||||
->findResultSet()
|
||||
->set('status', Subscriber::STATUS_SUBSCRIBED)
|
||||
->save();
|
||||
}
|
||||
|
||||
static function subscribeToSegments($subscriber, $segment_ids = array()) {
|
||||
if($subscriber === false) return false;
|
||||
if(!empty($segment_ids)) {
|
||||
@ -68,12 +77,6 @@ class SubscriberSegment extends Model {
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
// (re)subscribe to all segments linked to the subscriber
|
||||
return self::where('subscriber_id', $subscriber->id)
|
||||
->findResultSet()
|
||||
->set('status', Subscriber::STATUS_SUBSCRIBED)
|
||||
->save();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -116,6 +116,20 @@ class SubscribersTest extends MailPoetTest {
|
||||
expect($response->data['first_name'])->equals('Super Jane');
|
||||
}
|
||||
|
||||
function testItCanRemoveListsFromAnExistingSubscriber() {
|
||||
$router = new Subscribers();
|
||||
$subscriber_data = $this->subscriber_2->asArray();
|
||||
unset($subscriber_data['created_at']);
|
||||
unset($subscriber_data['segments']);
|
||||
|
||||
$response = $router->save($subscriber_data);
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
expect($response->data)->equals(
|
||||
Subscriber::findOne($this->subscriber_2->id)->asArray()
|
||||
);
|
||||
expect($this->subscriber_2->segments()->findArray())->count(0);
|
||||
}
|
||||
|
||||
function testItCanRestoreASubscriber() {
|
||||
$this->subscriber_1->trash();
|
||||
|
||||
|
@ -103,6 +103,28 @@ class SubscriberSegmentTest extends MailPoetTest {
|
||||
expect($subscriptions_count)->equals(2);
|
||||
}
|
||||
|
||||
function testItCanResubscribeToAllSegments() {
|
||||
$result = SubscriberSegment::subscribeToSegments($this->subscriber, array(
|
||||
$this->segment_1->id,
|
||||
$this->segment_2->id
|
||||
));
|
||||
expect($result)->true();
|
||||
|
||||
$subscribed_segments = $this->subscriber->segments()->findArray();
|
||||
expect($subscribed_segments)->count(2);
|
||||
|
||||
$result = SubscriberSegment::unsubscribeFromSegments($this->subscriber);
|
||||
expect($result)->true();
|
||||
|
||||
$subscribed_segments = $this->subscriber->segments()->findArray();
|
||||
expect($subscribed_segments)->count(0);
|
||||
|
||||
SubscriberSegment::resubscribeToAllSegments($this->subscriber);
|
||||
|
||||
$subscribed_segments = $this->subscriber->segments()->findArray();
|
||||
expect($subscribed_segments)->count(2);
|
||||
}
|
||||
|
||||
function testItCanDeleteSubscriptions() {
|
||||
SubscriberSegment::createOrUpdate(array(
|
||||
'subscriber_id' => $this->subscriber->id,
|
||||
|
Reference in New Issue
Block a user