Set last_subscribed_at within subscribers import
[MAILPOET-1993]
This commit is contained in:
committed by
M. Shull
parent
42f570f295
commit
0b40475e7a
@@ -282,11 +282,18 @@ class Import {
|
|||||||
return $subscribers;
|
return $subscribers;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setSubscriptionStatusToSubscribed($subscribers_data) {
|
private function setSubscriptionStatusToSubscribed($subscribers_data) {
|
||||||
if (!in_array('status', $subscribers_data['fields'])) return $subscribers_data;
|
if (!in_array('status', $subscribers_data['fields'])) return $subscribers_data;
|
||||||
$subscribers_data['data']['status'] = array_map(function() {
|
$subscribers_data['data']['status'] = array_map(function() {
|
||||||
return Subscriber::STATUS_SUBSCRIBED;
|
return Subscriber::STATUS_SUBSCRIBED;
|
||||||
}, $subscribers_data['data']['status']);
|
}, $subscribers_data['data']['status']);
|
||||||
|
|
||||||
|
if (!in_array('last_subscribed_at', $subscribers_data['fields'])) {
|
||||||
|
$subscribers_data['fields'][] = 'last_subscribed_at';
|
||||||
|
}
|
||||||
|
$subscribers_data['data']['last_subscribed_at'] = array_map(function() {
|
||||||
|
return $this->created_at;
|
||||||
|
}, $subscribers_data['data']['status']);
|
||||||
return $subscribers_data;
|
return $subscribers_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -436,7 +436,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
expect($updated_subscriber->status)->equals('unsubscribed');
|
expect($updated_subscriber->status)->equals('unsubscribed');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItImportsNewsSubscribersWithSubscribedStatus() {
|
function testItImportsNewsSubscribersWithSubscribedStatusAndLastSubscribedAt() {
|
||||||
$data = $this->test_data;
|
$data = $this->test_data;
|
||||||
$data['columns']['status'] = ['index' => 4];
|
$data['columns']['status'] = ['index' => 4];
|
||||||
$data['subscribers'][0][] = 'unsubscribed';
|
$data['subscribers'][0][] = 'unsubscribed';
|
||||||
@@ -453,6 +453,29 @@ class ImportTest extends \MailPoetTest {
|
|||||||
expect($new_subscribers[1]->status)->equals('subscribed');
|
expect($new_subscribers[1]->status)->equals('subscribed');
|
||||||
expect($new_subscribers[0]->source)->equals('imported');
|
expect($new_subscribers[0]->source)->equals('imported');
|
||||||
expect($new_subscribers[1]->source)->equals('imported');
|
expect($new_subscribers[1]->source)->equals('imported');
|
||||||
|
$test_time = date('Y-m-d H:i:s', $this->test_data['timestamp']);
|
||||||
|
expect($new_subscribers[0]->last_subscribed_at)->equals($test_time);
|
||||||
|
expect($new_subscribers[1]->last_subscribed_at)->equals($test_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItDoesNotUpdateExistingSubscribersLastSubscribedAtWhenItIsPresent() {
|
||||||
|
$data = $this->test_data;
|
||||||
|
$data['columns']['last_subscribed_at'] = ['index' => 4];
|
||||||
|
$data['subscribers'][0][] = '2018-12-12 12:12:00';
|
||||||
|
$data['subscribers'][1][] = '2018-12-12 12:12:00';
|
||||||
|
$import = new Import($data);
|
||||||
|
$existing_subscriber = Subscriber::create();
|
||||||
|
$existing_subscriber->hydrate(
|
||||||
|
[
|
||||||
|
'first_name' => 'Adam',
|
||||||
|
'last_name' => 'Smith',
|
||||||
|
'email' => 'Adam@Smith.com',
|
||||||
|
'last_subscribed_at' => '2017-12-12 12:12:00',
|
||||||
|
]);
|
||||||
|
$existing_subscriber->save();
|
||||||
|
$import->process();
|
||||||
|
$updated_subscriber = Subscriber::where('email', $existing_subscriber->email)->findOne();
|
||||||
|
expect($updated_subscriber->last_subscribed_at)->equals('2017-12-12 12:12:00');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItRunsImport() {
|
function testItRunsImport() {
|
||||||
|
Reference in New Issue
Block a user