Fixed bulk_action success messages

- uptaded Subscriber & Segment routers' test
- moved add/remove segments logic to Subscriber::createOrUpdate
- fixed Router\Segments save not returning errors
This commit is contained in:
Jonathan Labreuille
2016-02-08 13:36:35 +01:00
parent 4b6fa0e760
commit 95b0b39366
8 changed files with 136 additions and 135 deletions

View File

@ -25,58 +25,49 @@ const columns = [
const messages = {
onTrash: function(response) {
if(response) {
let message = null;
if(~~response === 1) {
message = (
'1 form was moved to the trash.'
);
} else if(~~response > 1) {
message = (
'%$1d forms were moved to the trash.'
).replace('%$1d', ~~response);
}
var count = ~~response;
var message = null;
if(message !== null) {
MailPoet.Notice.success(message);
}
if(count === 1) {
message = (
'1 form was moved to the trash.'
);
} else {
message = (
'%$1d forms were moved to the trash.'
).replace('%$1d', count);
}
MailPoet.Notice.success(message);
},
onDelete: function(response) {
if(response) {
let message = null;
if(~~response === 1) {
message = (
'1 form was permanently deleted.'
);
} else if(~~response > 1) {
message = (
'%$1d forms were permanently deleted.'
).replace('%$1d', ~~response);
}
var count = ~~response;
var message = null;
if(message !== null) {
MailPoet.Notice.success(message);
}
if(count === 1) {
message = (
'1 form was permanently deleted.'
);
} else {
message = (
'%$1d forms were permanently deleted.'
).replace('%$1d', count);
}
MailPoet.Notice.success(message);
},
onRestore: function(response) {
if(response) {
let message = null;
if(~~response === 1) {
message = (
'1 form has been restored from the trash.'
);
} else if(~~response > 1) {
message = (
'%$1d forms have been restored from the trash.'
).replace('%$1d', ~~response);
}
var count = ~~response;
var message = null;
if(message !== null) {
MailPoet.Notice.success(message);
}
if(count === 1) {
message = (
'1 form has been restored from the trash.'
);
} else {
message = (
'%$1d forms have been restored from the trash.'
).replace('%$1d', count);
}
MailPoet.Notice.success(message);
}
};

View File

@ -43,58 +43,49 @@ define(
var messages = {
onTrash: function(response) {
var count = ~~response.newsletters;
var count = ~~response;
var message = null;
if(count === 1 || response === true) {
if(count === 1) {
message = (
'1 newsletter was moved to the trash.'
);
} else if(count > 1) {
} else {
message = (
'%$1d newsletters were moved to the trash.'
).replace('%$1d', count);
}
if(message !== null) {
MailPoet.Notice.success(message);
}
MailPoet.Notice.success(message);
},
onDelete: function(response) {
var count = ~~response.newsletters;
var count = ~~response;
var message = null;
if(count === 1 || response === true) {
if(count === 1) {
message = (
'1 newsletter was permanently deleted.'
);
} else if(count > 1) {
} else {
message = (
'%$1d newsletters were permanently deleted.'
).replace('%$1d', count);
}
if(message !== null) {
MailPoet.Notice.success(message);
}
MailPoet.Notice.success(message);
},
onRestore: function(response) {
var count = ~~response.newsletters;
var count = ~~response;
var message = null;
if(count === 1 || response === true) {
if(count === 1) {
message = (
'1 newsletter has been restored from the trash.'
);
} else if(count > 1) {
} else {
message = (
'%$1d newsletters have been restored from the trash.'
).replace('%$1d', count);
}
if(message !== null) {
MailPoet.Notice.success(message);
}
MailPoet.Notice.success(message);
}
};

View File

@ -42,58 +42,49 @@ var columns = [
const messages = {
onTrash: function(response) {
if(response) {
let message = null;
if(~~response === 1) {
message = (
'1 segment was moved to the trash.'
);
} else if(~~response > 1) {
message = (
'%$1d segments were moved to the trash.'
).replace('%$1d', ~~response);
}
var count = ~~response;
var message = null;
if(message !== null) {
MailPoet.Notice.success(message);
}
if(count === 1) {
message = (
'1 segment was moved to the trash.'
);
} else {
message = (
'%$1d segments were moved to the trash.'
).replace('%$1d', count);
}
MailPoet.Notice.success(message);
},
onDelete: function(response) {
if(response) {
let message = null;
if(~~response === 1) {
message = (
'1 segment was permanently deleted.'
);
} else if(~~response > 1) {
message = (
'%$1d segments were permanently deleted.'
).replace('%$1d', ~~response);
}
var count = ~~response;
var message = null;
if(message !== null) {
MailPoet.Notice.success(message);
}
if(count === 1) {
message = (
'1 segment was permanently deleted.'
);
} else {
message = (
'%$1d segments were permanently deleted.'
).replace('%$1d', count);
}
MailPoet.Notice.success(message);
},
onRestore: function(response) {
if(response) {
let message = null;
if(~~response === 1) {
message = (
'1 segment has been restored from the trash.'
);
} else if(~~response > 1) {
message = (
'%$1d segments have been restored from the trash.'
).replace('%$1d', ~~response);
}
var count = ~~response;
var message = null;
if(message !== null) {
MailPoet.Notice.success(message);
}
if(count === 1) {
message = (
'1 segment has been restored from the trash.'
);
} else {
message = (
'%$1d segments have been restored from the trash.'
).replace('%$1d', count);
}
MailPoet.Notice.success(message);
}
};

View File

@ -58,7 +58,7 @@ class Subscriber extends Model {
return false;
}
$subscriber = static::createOrUpdate($subscriber_data);
$subscriber = Subscriber::createOrUpdate($subscriber_data);
if($subscriber !== false && $subscriber->id() > 0) {
// restore deleted subscriber
@ -101,7 +101,10 @@ class Subscriber extends Model {
'value' => ''
);
$segment_list[] = array(
'label' => __('Subscribers without a segment'),
'label' => sprintf(
__('Subscribers without a segment (%d)'),
Subscriber::filter('withoutSegments')->count()
),
'value' => 'none'
);
@ -237,17 +240,25 @@ class Subscriber extends Model {
$subscriber = false;
if(isset($data['id']) && (int)$data['id'] > 0) {
$subscriber = static::findOne((int)$data['id']);
$subscriber = Subscriber::findOne((int)$data['id']);
unset($data['id']);
}
if($subscriber === false && !empty($data['email'])) {
$subscriber = static::where('email', $data['email'])->findOne();
$subscriber = Subscriber::where('email', $data['email'])->findOne();
if($subscriber !== false) {
unset($data['email']);
}
}
// segments
$segment_ids = array();
if(isset($data['segments'])) {
$segment_ids = (array)$data['segments'];
unset($data['segments']);
}
// custom fields
$custom_fields = array();
@ -259,7 +270,7 @@ class Subscriber extends Model {
}
if($subscriber === false) {
$subscriber = static::create();
$subscriber = Subscriber::create();
$subscriber->hydrate($data);
} else {
$subscriber->set($data);
@ -271,6 +282,7 @@ class Subscriber extends Model {
$subscriber->setCustomField($custom_field_id, $value);
}
}
$subscriber->addToSegments($segment_ids);
}
return $subscriber;
}

View File

@ -66,20 +66,19 @@ class Segments {
}
function save($data = array()) {
$errors = array();
$result = false;
$segment = Segment::createOrUpdate($data);
$errors = $segment->getErrors();
if($segment !== false && !$segment->id()) {
$errors = $segment->getValidationErrors();
if(!empty($errors)) {
return array(
'result' => false,
'errors' => $errors
);
} else {
$result = true;
return array(
'result' => true
);
}
return array(
'result' => $result,
'errors' => $errors
);
}
function restore($id) {

View File

@ -57,13 +57,6 @@ class Subscribers {
}
function save($data = array()) {
$segment_ids = array();
if(isset($data['segments'])) {
$segment_ids = (array)$data['segments'];
unset($data['segments']);
}
$subscriber = Subscriber::createOrUpdate($data);
$errors = $subscriber->getErrors();
@ -73,8 +66,6 @@ class Subscribers {
'errors' => $errors
);
} else {
$subscriber->addToSegments($segment_ids);
return array(
'result' => true
);

View File

@ -53,6 +53,17 @@ class SegmentsCest {
expect($segment->name)->equals($segment_data['name']);
}
function itCannotSaveDuplicate() {
$duplicate_entry = array(
'name' => 'Segment 1'
);
$router = new Segments();
$response = $router->save($duplicate_entry);
expect($response['result'])->false();
expect($response['errors'][0])->contains('Duplicate');
}
function itCanRestoreASegment() {
$this->segment_1->trash();

View File

@ -6,6 +6,9 @@ use \MailPoet\Models\Segment;
class SubscribersCest {
function _before() {
$this->segment_1 = Segment::createOrUpdate(array('name' => 'Segment 1'));
$this->segment_2 = Segment::createOrUpdate(array('name' => 'Segment 2'));
$this->subscriber_1 = Subscriber::createOrUpdate(array(
'email' => 'john.doe@mailpoet.com',
'first_name' => 'John',
@ -14,10 +17,12 @@ class SubscribersCest {
$this->subscriber_2 = Subscriber::createOrUpdate(array(
'email' => 'jane.doe@mailpoet.com',
'first_name' => 'Jane',
'last_name' => 'Doe'
'last_name' => 'Doe',
'segments' => array(
$this->segment_1->id(),
$this->segment_2->id()
)
));
$this->segment_1 = Segment::createOrUpdate(array('name' => 'Segment 1'));
$this->segment_2 = Segment::createOrUpdate(array('name' => 'Segment 2'));
}
function itCanGetASubscriber() {
@ -40,7 +45,11 @@ class SubscribersCest {
$valid_data = array(
'email' => 'john.doe@mailpoet.com',
'first_name' => 'John',
'last_name' => 'Doe'
'last_name' => 'Doe',
'segments' => array(
$this->segment_1->id(),
$this->segment_2->id()
)
);
$router = new Subscribers();
@ -48,6 +57,12 @@ class SubscribersCest {
expect($response['result'])->true();
expect($response)->hasntKey('errors');
$subscriber = Subscriber::where('email', 'john.doe@mailpoet.com')->findOne();
$subscriber_segments = $subscriber->segments()->findMany();
expect($subscriber_segments)->count(2);
expect($subscriber_segments[0]->name)->equals($this->segment_1->name);
expect($subscriber_segments[1]->name)->equals($this->segment_2->name);
$response = $router->save(/* missing data */);
expect($response['result'])->false();
expect($response['errors'][0])->equals('You need to enter your email address.');
@ -65,9 +80,9 @@ class SubscribersCest {
function itCanSaveAnExistingSubscriber() {
$router = new Subscribers();
$subscriber_data = $this->subscriber_2->asArray();
$subscriber_data['email'] = 'jane.doe@mailpoet.com';
unset($subscriber_data['created_at']);
$subscriber_data['segments'] = array($this->segment_1->id());
$subscriber_data['first_name'] = 'Super Jane';
$response = $router->save($subscriber_data);