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;
|
||||
}
|
||||
|
||||
function setSubscriptionStatusToSubscribed($subscribers_data) {
|
||||
private function setSubscriptionStatusToSubscribed($subscribers_data) {
|
||||
if (!in_array('status', $subscribers_data['fields'])) return $subscribers_data;
|
||||
$subscribers_data['data']['status'] = array_map(function() {
|
||||
return Subscriber::STATUS_SUBSCRIBED;
|
||||
}, $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;
|
||||
}
|
||||
|
||||
|
@@ -436,7 +436,7 @@ class ImportTest extends \MailPoetTest {
|
||||
expect($updated_subscriber->status)->equals('unsubscribed');
|
||||
}
|
||||
|
||||
function testItImportsNewsSubscribersWithSubscribedStatus() {
|
||||
function testItImportsNewsSubscribersWithSubscribedStatusAndLastSubscribedAt() {
|
||||
$data = $this->test_data;
|
||||
$data['columns']['status'] = ['index' => 4];
|
||||
$data['subscribers'][0][] = 'unsubscribed';
|
||||
@@ -453,6 +453,29 @@ class ImportTest extends \MailPoetTest {
|
||||
expect($new_subscribers[1]->status)->equals('subscribed');
|
||||
expect($new_subscribers[0]->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() {
|
||||
|
Reference in New Issue
Block a user