Unit tests fixed + models & routers update

This commit is contained in:
Jonathan Labreuille
2016-02-04 11:41:05 +01:00
parent 12c9623e2f
commit c2cb88f995
18 changed files with 148 additions and 154 deletions

View File

@ -12,7 +12,6 @@ class Widget {
$this->registerWidget(); $this->registerWidget();
if(!is_admin()) { if(!is_admin()) {
//$this->setupActions();
$this->setupDependencies(); $this->setupDependencies();
} else { } else {
$this->setupAdminDependencies(); $this->setupAdminDependencies();
@ -69,6 +68,9 @@ class Widget {
} }
} }
// TODO: extract this method into an Initializer
// - the "ajax" part might probably be useless
// - the "post" (non-ajax) part needs to be redone properly
function setupActions() { function setupActions() {
// ajax requests // ajax requests
add_action( add_action(

View File

@ -39,7 +39,6 @@ class Model extends \Sudzy\ValidModel {
$this->setTimestamp(); $this->setTimestamp();
try { try {
parent::save(); parent::save();
return true;
} catch(\Sudzy\ValidationException $e) { } catch(\Sudzy\ValidationException $e) {
$this->setError($e->getValidationErrors()); $this->setError($e->getValidationErrors());
} catch(\PDOException $e) { } catch(\PDOException $e) {
@ -47,7 +46,7 @@ class Model extends \Sudzy\ValidModel {
} catch(\Exception $e) { } catch(\Exception $e) {
$this->setError($e->getMessage()); $this->setError($e->getMessage());
} }
return false; return $this;
} }
function trash() { function trash() {

View File

@ -32,16 +32,7 @@ class NewsletterTemplate extends Model {
$template->set($data); $template->set($data);
} }
$saved = $template->save(); $template->save();
return $template;
if($saved === true) {
return true;
} else {
$errors = $template->getValidationErrors();
if(!empty($errors)) {
return $errors;
}
}
return false;
} }
} }

View File

@ -164,8 +164,7 @@ class Segment extends Model {
$segment->set($data); $segment->set($data);
} }
$segment->save(); return $segment->save();
return $segment;
} }
static function getPublic() { static function getPublic() {

View File

@ -10,8 +10,7 @@ class Setting extends Model {
parent::__construct(); parent::__construct();
$this->addValidations('name', array( $this->addValidations('name', array(
'required' => 'name_is_blank', 'required' => __('You need to specify a name.')
'isString' => 'name_is_not_string'
)); ));
} }
@ -55,10 +54,11 @@ class Setting extends Model {
$value = serialize($value); $value = serialize($value);
} }
return Setting::createOrUpdate(array( $setting = Setting::createOrUpdate(array(
'name' => $key, 'name' => $key,
'value' => $value 'value' => $value
)); ));
return ($setting->id() > 0 && $setting->getErrors() === false);
} else { } else {
$main_key = array_shift($keys); $main_key = array_shift($keys);
@ -101,8 +101,7 @@ class Setting extends Model {
} }
public static function createOrUpdate($model) { public static function createOrUpdate($model) {
$exists = self::where('name', $model['name']) $exists = self::where('name', $model['name'])->findOne();
->find_one();
if($exists === false) { if($exists === false) {
$new_model = self::create(); $new_model = self::create();

View File

@ -202,37 +202,28 @@ class Forms {
} }
function restore($id) { function restore($id) {
$result = false;
$form = Form::findOne($id); $form = Form::findOne($id);
if($form !== false) { if($form !== false) {
$result = $form->restore(); $form->restore();
} }
return ($form->getErrors() === false);
return $result;
} }
function trash($id) { function trash($id) {
$result = false;
$form = Form::findOne($id); $form = Form::findOne($id);
if($form !== false) { if($form !== false) {
$result = $form->trash(); $form->trash();
} }
return ($form->getErrors() === false);
return $result;
} }
function delete($id) { function delete($id) {
$result = false;
$form = Form::findOne($id); $form = Form::findOne($id);
if($form !== false) { if($form !== false) {
$form->delete(); $form->delete();
$result = 1; return 1;
} }
return false;
return $result;
} }
function duplicate($id) { function duplicate($id) {

View File

@ -85,17 +85,17 @@ class Newsletters {
NewsletterOption::where('newsletter_id', $newsletter->id) NewsletterOption::where('newsletter_id', $newsletter->id)
->deleteMany(); ->deleteMany();
$optionFields = NewsletterOptionField::where( $option_fields = NewsletterOptionField::where(
'newsletter_type', 'newsletter_type',
$data['type'] $data['type']
)->findArray(); )->findArray();
foreach($optionFields as $optionField) { foreach($option_fields as $option_field) {
if(isset($options[$optionField['name']])) { if(isset($options[$option_field['name']])) {
$relation = NewsletterOption::create(); $relation = NewsletterOption::create();
$relation->newsletter_id = $newsletter->id; $relation->newsletter_id = $newsletter->id;
$relation->option_field_id = $optionField['id']; $relation->option_field_id = $option_field['id'];
$relation->value = $options[$optionField['name']]; $relation->value = $options[$option_field['name']];
$relation->save(); $relation->save();
} }
} }
@ -263,15 +263,14 @@ class Newsletters {
$sender = false, $sender = false,
$reply_to = false $reply_to = false
); );
$result = $mailer->send($newsletter, $data['subscriber'])
wp_send_json(array( return array('result' => $result);
'result' => $mailer->send($newsletter, $data['subscriber'])
));
} catch(\Exception $e) { } catch(\Exception $e) {
wp_send_json(array( return array(
'result' => false, 'result' => false,
'errors' => array($e->getMessage()), 'errors' => array($e->getMessage()),
)); );
} }
} }
@ -299,7 +298,7 @@ class Newsletters {
$item['queue'] = ($queue !== false) ? $queue->asArray() : null; $item['queue'] = ($queue !== false) ? $queue->asArray() : null;
} }
wp_send_json($listing_data); return $listing_data;
} }
function bulkAction($data = array()) { function bulkAction($data = array()) {
@ -307,7 +306,7 @@ class Newsletters {
'\MailPoet\Models\Newsletter', '\MailPoet\Models\Newsletter',
$data $data
); );
wp_send_json($bulk_action->apply()); return $bulk_action->apply();
} }
function create($data = array()) { function create($data = array()) {
@ -328,25 +327,28 @@ class Newsletters {
unset($data['options']); unset($data['options']);
} }
$result = $newsletter->save(); $newsletter->save();
if($result !== true) { $errors = $newsletter->getErrors();
wp_send_json($newsletter->getValidationErrors()); if(!empty($errors)) {
return $errors;
} else { } else {
if(!empty($options)) { if(!empty($options)) {
$optionFields = NewsletterOptionField::where('newsletter_type', $newsletter->type)->findArray(); $option_fields = NewsletterOptionField::where(
'newsletter_type', $newsletter->type
)->findArray();
foreach($optionFields as $optionField) { foreach($option_fields as $option_field) {
if(isset($options[$optionField['name']])) { if(isset($options[$option_field['name']])) {
$relation = NewsletterOption::create(); $relation = NewsletterOption::create();
$relation->newsletter_id = $newsletter->id; $relation->newsletter_id = $newsletter->id;
$relation->option_field_id = $optionField['id']; $relation->option_field_id = $option_field['id'];
$relation->value = $options[$optionField['name']]; $relation->value = $options[$option_field['name']];
$relation->save(); $relation->save();
} }
} }
} }
$newsletter->body = json_decode($newsletter->body); $newsletter->body = json_decode($newsletter->body);
wp_send_json($newsletter->asArray()); return $newsletter->asArray();
} }
} }
} }

View File

@ -87,37 +87,28 @@ class Segments {
} }
function restore($id) { function restore($id) {
$result = false;
$segment = Segment::findOne($id); $segment = Segment::findOne($id);
if($segment !== false) { if($segment !== false) {
$result = $segment->restore(); $segment->restore();
} }
return ($segment->getErrors() === false);
return $result;
} }
function trash($id) { function trash($id) {
$result = false;
$segment = Segment::findOne($id); $segment = Segment::findOne($id);
if($segment !== false) { if($segment !== false) {
$result = $segment->trash(); $segment->trash();
} }
return ($segment->getErrors() === false);
return $result;
} }
function delete($id) { function delete($id) {
$result = false;
$segment = Segment::findOne($id); $segment = Segment::findOne($id);
if($segment !== false) { if($segment !== false) {
$segment->delete(); $segment->delete();
$result = 1; return 1;
} }
return false;
return $result;
} }
function duplicate($id) { function duplicate($id) {

View File

@ -191,37 +191,28 @@ class Subscribers {
} }
function restore($id) { function restore($id) {
$result = false;
$subscriber = Subscriber::findOne($id); $subscriber = Subscriber::findOne($id);
if($subscriber !== false) { if($subscriber !== false) {
$result = $subscriber->restore(); $subscriber->restore();
} }
return ($subscriber->getErrors() === false);
return $result;
} }
function trash($id) { function trash($id) {
$result = false;
$subscriber = Subscriber::findOne($id); $subscriber = Subscriber::findOne($id);
if($subscriber !== false) { if($subscriber !== false) {
$result = $subscriber->trash(); $subscriber->trash();
} }
return ($subscriber->getErrors() === false);
return $result;
} }
function delete($id) { function delete($id) {
$result = false;
$subscriber = Subscriber::findOne($id); $subscriber = Subscriber::findOne($id);
if($subscriber !== false) { if($subscriber !== false) {
$subscriber->delete(); $subscriber->delete();
$result = 1; return 1;
} }
return false;
return $result;
} }
function bulkAction($data = array()) { function bulkAction($data = array()) {

View File

@ -30,7 +30,8 @@ class CustomFieldCest {
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->saved)->equals(true); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itCanHaveName() { function itCanHaveName() {
@ -46,10 +47,14 @@ class CustomFieldCest {
} }
function itHasToBeValid() { function itHasToBeValid() {
$empty_model = CustomField::create(); $invalid_custom_field = CustomField::create();
expect($empty_model->save())->notEquals(true);
$validations = $empty_model->getValidationErrors(); $result = $invalid_custom_field->save();
expect(count($validations))->equals(2); $errors = $result->getErrors();
expect(is_array($errors))->true();
expect($errors[0])->equals('You need to specify a name.');
expect($errors[1])->equals('You need to specify a type.');
} }
function itHasACreatedAtOnCreation() { function itHasACreatedAtOnCreation() {

View File

@ -14,15 +14,17 @@ class FormCest {
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->saved)->equals(true); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itHasToBeValid() { function itHasToBeValid() {
expect($this->saved)->equals(true); $invalid_form = Form::create();
$empty_model = Form::create(); $result = $invalid_form->save();
expect($empty_model->save())->notEquals(true); $errors = $result->getErrors();
$validations = $empty_model->getValidationErrors();
expect(count($validations))->equals(1); expect(is_array($errors))->true();
expect($errors[0])->equals('You need to specify a name.');
} }
function itHasACreatedAtOnCreation() { function itHasACreatedAtOnCreation() {

View File

@ -19,11 +19,12 @@ class NewsletterCest {
$newsletter = Newsletter::create(); $newsletter = Newsletter::create();
$newsletter->hydrate($this->data); $newsletter->hydrate($this->data);
$this->newsletter = $newsletter; $this->newsletter = $newsletter;
$this->result = $newsletter->save(); $this->saved = $newsletter->save();
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->result)->equals(true); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itHasSubject() { function itHasSubject() {

View File

@ -29,7 +29,8 @@ class NewsletterOptionFieldCest {
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->saved)->equals(true); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itHasName() { function itHasName() {
@ -45,11 +46,13 @@ class NewsletterOptionFieldCest {
} }
function itHasToBeValid() { function itHasToBeValid() {
expect($this->saved)->equals(true); $invalid_newsletter_option = NewsletterOptionField::create();
$empty_model = NewsletterOptionField::create(); $result = $invalid_newsletter_option->save();
expect($empty_model->save())->notEquals(true); $errors = $result->getErrors();
$validations = $empty_model->getValidationErrors();
expect(count($validations))->equals(2); expect(is_array($errors))->true();
expect($errors[0])->equals('You need to specify a name.');
expect($errors[1])->equals('You need to specify a newsletter type.');
} }
function itHasACreatedAtOnCreation() { function itHasACreatedAtOnCreation() {

View File

@ -13,18 +13,22 @@ class NewsletterTemplateCest {
$template = NewsletterTemplate::create(); $template = NewsletterTemplate::create();
$template->hydrate($this->data); $template->hydrate($this->data);
$this->result = $template->save(); $this->saved = $template->save();
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->result)->equals(true); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itHasToBeValid() { function itHasToBeValid() {
$empty_model = NewsletterTemplate::create(); $invalid_newsletter_template = NewsletterTemplate::create();
expect($empty_model->save())->notEquals(true); $result = $invalid_newsletter_template->save();
$validations = $empty_model->getValidationErrors(); $errors = $result->getErrors();
expect(count($validations))->equals(2);
expect(is_array($errors))->true();
expect($errors[0])->equals('You need to specify a name.');
expect($errors[1])->equals('Template body cannot be empty.');
} }
function itHasName() { function itHasName() {
@ -46,25 +50,28 @@ class NewsletterTemplateCest {
} }
function itCanCreateOrUpdate() { function itCanCreateOrUpdate() {
$is_created = NewsletterTemplate::createOrUpdate( $created_template = NewsletterTemplate::createOrUpdate(
array( array(
'name' => 'Another template', 'name' => 'Another template',
'description' => 'Another template description', 'description' => 'Another template description',
'body' => '{content: {}, globalStyles: {}}', 'body' => '{content: {}, globalStyles: {}}',
)); ));
expect($is_created)->equals(true); expect($created_template->id() > 0)->true();
expect($created_template->getErrors())->false();
$template = NewsletterTemplate::where('name', 'Another template') $template = NewsletterTemplate::where('name', 'Another template')
->findOne(); ->findOne();
expect($template->name)->equals('Another template'); expect($template->name)->equals('Another template');
$is_updated = NewsletterTemplate::createOrUpdate( $updated_template = NewsletterTemplate::createOrUpdate(
array( array(
'id' => $template->id, 'id' => $template->id,
'name' => 'Another template updated', 'name' => 'Another template updated',
'body' => '{}' 'body' => '{}'
)); ));
expect($is_updated)->equals(true); expect($updated_template->id() > 0)->true();
expect($updated_template->getErrors())->false();
$template = NewsletterTemplate::findOne($template->id); $template = NewsletterTemplate::findOne($template->id);
expect($template->name)->equals('Another template updated'); expect($template->name)->equals('Another template updated');
} }

View File

@ -41,7 +41,8 @@ class SegmentCest {
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->saved)->equals(true); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itCanHaveName() { function itCanHaveName() {
@ -51,7 +52,9 @@ class SegmentCest {
function nameMustBeUnique() { function nameMustBeUnique() {
$segment = Segment::create(); $segment = Segment::create();
$segment->hydrate($this->data); $segment->hydrate($this->data);
$errors = $segment->save(); $result = $segment->save();
$errors = $result->getErrors();
expect(is_array($errors))->true(); expect(is_array($errors))->true();
expect($errors[0])->contains('Duplicate'); expect($errors[0])->contains('Duplicate');
} }
@ -61,11 +64,13 @@ class SegmentCest {
} }
function itHasToBeValid() { function itHasToBeValid() {
expect($this->saved)->equals(true); $invalid_segment = Segment::create();
$empty_model = Segment::create();
expect($empty_model->save())->notEquals(true); $result = $invalid_segment->save();
$validations = $empty_model->getValidationErrors(); $errors = $result->getErrors();
expect(count($validations))->equals(1);
expect(is_array($errors))->true();
expect($errors[0])->equals('You need to specify a name.');
} }
function itHasACreatedAtOnCreation() { function itHasACreatedAtOnCreation() {

View File

@ -11,19 +11,21 @@ class SettingCest {
$setting = Setting::create(); $setting = Setting::create();
$setting->hydrate($this->data); $setting->hydrate($this->data);
$this->result = $setting->save(); $this->saved = $setting->save();
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->result)->equals(true); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itHasToBeValid() { function itHasToBeValid() {
expect($this->result)->equals(true); $invalid_setting = Setting::create();
$empty_model = Setting::create(); $result = $invalid_setting->save();
expect($empty_model->save())->notEquals(true); $errors = $result->getErrors();
$validations = $empty_model->getValidationErrors();
expect(count($validations))->equals(2); expect(is_array($errors))->true();
expect($errors[0])->equals('You need to specify a name.');
} }
function itHasACreatedAtOnCreation() { function itHasACreatedAtOnCreation() {
@ -65,18 +67,20 @@ class SettingCest {
'value' => 'data' 'value' => 'data'
); );
$result = Setting::createOrUpdate($data); $created_setting = Setting::createOrUpdate($data);
expect($result)->equals(true); expect($created_setting->id() > 0)->true();
$record = Setting::where('name', $data['name']) expect($created_setting->getErrors())->false();
->find_one();
expect($record->value)->equals($data['value']); $setting = Setting::where('name', $data['name'])->findOne();
expect($setting->value)->equals($data['value']);
$data['value'] = 'new data'; $data['value'] = 'new data';
$result = Setting::createOrUpdate($data); $updated_setting = Setting::createOrUpdate($data);
expect($result)->equals(true); expect($updated_setting->id() > 0)->true();
$record = Setting::where('name', $data['name']) expect($updated_setting->getErrors())->false();
->find_one();
expect($record->value)->equals('new data'); $setting = Setting::where('name', $data['name'])->findOne();
expect($setting->value)->equals('new data');
} }
function itCanGetAndSetValue() { function itCanGetAndSetValue() {

View File

@ -20,7 +20,8 @@ class SubscriberCest {
} }
function itCanBeCreated() { function itCanBeCreated() {
expect($this->saved)->true(); expect($this->saved->id() > 0)->true();
expect($this->saved->getErrors())->false();
} }
function itHasFirstName() { function itHasFirstName() {
@ -62,14 +63,13 @@ class SubscriberCest {
} }
function itCanChangeStatus() { function itCanChangeStatus() {
$subscriber = Subscriber::where('email', $this->data['email']) $subscriber = Subscriber::where('email', $this->data['email'])->findOne();
->findOne();
$subscriber->status = 'subscribed'; $subscriber->status = 'subscribed';
expect($subscriber->save())->equals(true); $subscriber->save();
$subscriber_updated = Subscriber::where(
'email', expect($subscriber->id() > 0)->true();
$this->data['email'] expect($subscriber->getErrors())->false();
) $subscriber_updated = Subscriber::where('email', $this->data['email'])
->findOne(); ->findOne();
expect($subscriber_updated->status)->equals('subscribed'); expect($subscriber_updated->status)->equals('subscribed');
} }
@ -89,17 +89,17 @@ class SubscriberCest {
function itHasGroupFilter() { function itHasGroupFilter() {
$subscribers = Subscriber::filter('groupBy', 'unconfirmed') $subscribers = Subscriber::filter('groupBy', 'unconfirmed')
->findMany(); ->findMany();
foreach ($subscribers as $subscriber) { foreach($subscribers as $subscriber) {
expect($subscriber->status)->equals('unconfirmed'); expect($subscriber->status)->equals('unconfirmed');
} }
$subscribers = Subscriber::filter('groupBy', 'subscribed') $subscribers = Subscriber::filter('groupBy', 'subscribed')
->findMany(); ->findMany();
foreach ($subscribers as $subscriber) { foreach($subscribers as $subscriber) {
expect($subscriber->status)->equals('subscribed'); expect($subscriber->status)->equals('subscribed');
} }
$subscribers = Subscriber::filter('groupBy', 'unsubscribed') $subscribers = Subscriber::filter('groupBy', 'unsubscribed')
->findMany(); ->findMany();
foreach ($subscribers as $subscriber) { foreach($subscribers as $subscriber) {
expect($subscriber->status)->equals('unsubscribed'); expect($subscriber->status)->equals('unsubscribed');
} }
} }
@ -150,7 +150,7 @@ class SubscriberCest {
'type' => 'text', 'type' => 'text',
) )
); );
foreach ($customFieldData as $data) { foreach($customFieldData as $data) {
$customField = CustomField::create(); $customField = CustomField::create();
$customField->hydrate($data); $customField->hydrate($data);
$customField->save(); $customField->save();
@ -168,7 +168,7 @@ class SubscriberCest {
'value' => 'France' 'value' => 'France'
) )
); );
foreach ($subscriberCustomFieldData as $data) { foreach($subscriberCustomFieldData as $data) {
$association = SubscriberCustomField::create(); $association = SubscriberCustomField::create();
$association->hydrate($data); $association->hydrate($data);
$association->save(); $association->save();

View File

@ -20,7 +20,9 @@ class SubscriberCustomFieldCest {
function itCanBeCreated() { function itCanBeCreated() {
$subscriberCustomField = SubscriberCustomField::create(); $subscriberCustomField = SubscriberCustomField::create();
$subscriberCustomField->hydrate($this->data[0]); $subscriberCustomField->hydrate($this->data[0]);
expect($subscriberCustomField->save())->true(); $subscriberCustomField->save();
expect($subscriberCustomField->id() > 0)->true();
expect($subscriberCustomField->getErrors())->false();
} }
function itCanCreateOrUpdateMultipleRecords() { function itCanCreateOrUpdateMultipleRecords() {