More Unit Tests + Initializer fix

- added unit test for Router\Forms
- updated unit test for Model\Segment to reflect changes
This commit is contained in:
Jonathan Labreuille
2016-02-02 17:22:11 +01:00
parent 24ecc879d3
commit a2ef62302f
10 changed files with 213 additions and 33 deletions

View File

@ -125,8 +125,8 @@ const FormList = React.createClass({
endpoint: 'forms', endpoint: 'forms',
action: 'create' action: 'create'
}).done(function(response) { }).done(function(response) {
if(response !== false) { if(response.result && response.form_id) {
window.location = mailpoet_form_edit_url + response; window.location = mailpoet_form_edit_url + response.form_id;
} }
}); });
}, },

View File

@ -73,20 +73,4 @@ class Env {
); );
return implode('', $source_name); return implode('', $source_name);
} }
static function isPluginActivated() {
$activated_plugins = get_option('active_plugins');
$plugin_basename = plugin_basename(__FILE__);
$isActivated = (
in_array(
sprintf('%s/%s.php', basename(self::$path), self::$plugin_name),
$activated_plugins
) ||
in_array(
sprintf('%s/%s.php', explode('/', $plugin_basename[0]), self::$plugin_name),
$activated_plugins
)
);
return ($isActivated) ? true : false;
}
} }

View File

@ -18,13 +18,17 @@ class Initializer {
} }
function init() { function init() {
$this->setupWidget();
add_action('init', array($this, 'setup'));
}
function setup() {
try { try {
$this->setupDB(); $this->setupDB();
$this->setupRenderer(); $this->setupRenderer();
$this->setupLocalizer(); $this->setupLocalizer();
$this->setupMenu(); $this->setupMenu();
$this->setupRouter(); $this->setupRouter();
$this->setupWidget();
$this->setupAnalytics(); $this->setupAnalytics();
$this->setupPermissions(); $this->setupPermissions();
$this->setupChangelog(); $this->setupChangelog();
@ -156,9 +160,7 @@ class Initializer {
} }
function runQueueSupervisor() { function runQueueSupervisor() {
if(php_sapi_name() === 'cli' || if(php_sapi_name() === 'cli') return;
!Env::isPluginActivated()
) return;
try { try {
$supervisor = new Supervisor(); $supervisor = new Supervisor();
$supervisor->checkDaemon(); $supervisor->checkDaemon();

View File

@ -65,6 +65,8 @@ class Widget extends \WP_Widget {
) )
); );
$form_edit_url = admin_url('admin.php?page=mailpoet-form-editor&id=');
// set title // set title
$title = isset($instance['title']) ? strip_tags($instance['title']) : ''; $title = isset($instance['title']) ? strip_tags($instance['title']) : '';
@ -102,8 +104,9 @@ class Widget extends \WP_Widget {
endpoint: 'forms', endpoint: 'forms',
action: 'create' action: 'create'
}).done(function(response) { }).done(function(response) {
if(response !== false) { if(response.result && response.form_id) {
window.location = response; window.location =
"<?php echo $form_edit_url; ?>" + response.form_id;
} }
}); });
return false; return false;

View File

@ -21,8 +21,9 @@ class Model extends \Sudzy\ValidModel {
} catch (\Sudzy\ValidationException $e) { } catch (\Sudzy\ValidationException $e) {
return array_unique($e->getValidationErrors()); return array_unique($e->getValidationErrors());
} catch (\PDOException $e) { } catch (\PDOException $e) {
return $e->getMessage(); return array($e->getMessage());
} }
return false;
} }
function trash() { function trash() {

View File

@ -91,9 +91,15 @@ class Forms {
$form = Form::createOrUpdate($data); $form = Form::createOrUpdate($data);
if($form !== false && $form->id()) { if($form !== false && $form->id()) {
return $form->id(); return array(
'result' => true,
'form_id' => $form->id()
);
} else { } else {
return $form; return array(
'result' => false,
'errors' => $form->getValidationErrors()
);
} }
} }
@ -127,10 +133,10 @@ class Forms {
function saveEditor($data = array()) { function saveEditor($data = array()) {
$form_id = (isset($data['id']) ? (int)$data['id'] : 0); $form_id = (isset($data['id']) ? (int)$data['id'] : 0);
$name = (isset($data['name']) ? $data['name'] : array()); $name = (isset($data['name']) ? $data['name'] : __('New form'));
$body = (isset($data['body']) ? $data['body'] : array()); $body = (isset($data['body']) ? $data['body'] : array());
$settings = (isset($data['settings']) ? $data['settings'] : array()); $settings = (isset($data['settings']) ? $data['settings'] : array());
$styles = (isset($data['styles']) ? $data['styles'] : array()); $styles = (isset($data['styles']) ? $data['styles'] : '');
if(empty($body) || empty($settings)) { if(empty($body) || empty($settings)) {
// error // error
@ -166,7 +172,7 @@ class Forms {
} }
} }
// check list selectio // check list selection
if($has_segment_selection === true) { if($has_segment_selection === true) {
$settings['segments_selected_by'] = 'user'; $settings['segments_selected_by'] = 'user';
} else { } else {
@ -182,7 +188,6 @@ class Forms {
'styles' => $styles 'styles' => $styles
)); ));
// response
return array( return array(
'result' => ($form !== false), 'result' => ($form !== false),
'is_widget' => $is_widget 'is_widget' => $is_widget

View File

@ -36,4 +36,4 @@ $migrator = new Migrator();
register_activation_hook(__FILE__, array($migrator, 'up')); register_activation_hook(__FILE__, array($migrator, 'up'));
register_activation_hook(__FILE__, array($initializer, 'runPopulator')); register_activation_hook(__FILE__, array($initializer, 'runPopulator'));
add_action('init', array($initializer, 'init')); $initializer->init();

View File

@ -9,6 +9,7 @@ $console->writeln('Loading WP core... ('.$wp_load_file.')');
$console->writeln('Cleaning up database...'); $console->writeln('Cleaning up database...');
$models = array( $models = array(
'CustomField', 'CustomField',
'Form',
'Newsletter', 'Newsletter',
'NewsletterSegment', 'NewsletterSegment',
'NewsletterTemplate', 'NewsletterTemplate',

View File

@ -51,7 +51,9 @@ class SegmentCest {
function nameMustBeUnique() { function nameMustBeUnique() {
$segment = Segment::create(); $segment = Segment::create();
$segment->hydrate($this->data); $segment->hydrate($this->data);
expect($segment->save())->contains('Duplicate'); $errors = $segment->save();
expect(is_array($errors))->true();
expect($errors[0])->contains('Duplicate');
} }
function itCanHaveDescription() { function itCanHaveDescription() {

View File

@ -0,0 +1,182 @@
<?php
use \MailPoet\Router\Forms;
use \MailPoet\Models\Form;
use \MailPoet\Models\Segment;
class FormsCest {
function _before() {
Form::createOrUpdate(array('name' => 'Form 1'));
Form::createOrUpdate(array('name' => 'Form 2'));
Form::createOrUpdate(array('name' => 'Form 3'));
Segment::createOrUpdate(array('name' => 'Segment 1'));
Segment::createOrUpdate(array('name' => 'Segment 2'));
}
function itCanGetAForm() {
$form = Form::where('name', 'Form 1')->findOne();
$router = new Forms();
$response = $router->get(/* missing id */);
expect($response)->false();
$response = $router->get('not_an_id');
expect($response)->false();
$response = $router->get($form->id);
expect($response['id'])->equals($form->id);
expect($response['name'])->equals($form->name);
}
function itCanGetListingData() {
$router = new Forms();
$response = $router->listing();
expect($response)->hasKey('filters');
expect($response)->hasKey('groups');
expect($response['count'])->equals(3);
expect($response['items'])->count(3);
expect($response['items'][0]['name'])->equals('Form 1');
expect($response['items'][1]['name'])->equals('Form 2');
expect($response['items'][2]['name'])->equals('Form 3');
}
function itCanGetAllForms() {
$forms = Form::findArray();
$router = new Forms();
$response = $router->getAll();
expect($response)->count(3);
expect($response)->equals($forms);
}
function itCanCreateANewForm() {
$router = new Forms();
$response = $router->create();
expect($response['result'])->true();
expect($response['form_id'] > 0)->true();
expect($response)->hasntKey('errors');
$created_form = Form::findOne($response['form_id']);
expect($created_form->name)->equals('New form');
}
function itCanSaveAForm() {
$form_data = array(
'name' => 'My first form'
);
$router = new Forms();
$response = $router->save(/* missing data */);
expect($response['result'])->false();
expect($response['errors'][0])->equals('You need to specify a name.');
$response = $router->save($form_data);
expect($response['result'])->true();
expect($response['form_id'] > 0)->true();
$form = Form::where('name', 'My first form')->findOne();
expect($form->id)->equals($response['form_id']);
expect($form->name)->equals('My first form');
}
function itCanPreviewAForm() {
$router = new Forms();
$response = $router->create();
expect($response['result'])->true();
expect($response['form_id'] > 0)->true();
$form = Form::findOne($response['form_id']);
$response = $router->previewEditor($form->asArray());
expect($response['html'])->notEmpty();
expect($response['css'])->notEmpty();
}
function itCanExportAForm() {
$router = new Forms();
$response = $router->create();
expect($response['result'])->true();
expect($response['form_id'] > 0)->true();
$response = $router->exportsEditor($response['form_id']);
expect($response['html'])->notEmpty();
expect($response['php'])->notEmpty();
expect($response['iframe'])->notEmpty();
expect($response['shortcode'])->notEmpty();
}
function itCanSaveFormEditor() {
$router = new Forms();
$response = $router->create();
expect($response['result'])->true();
expect($response['form_id'] > 0)->true();
$form = Form::findOne($response['form_id'])->asArray();
$form['name'] = 'Updated form';
$response = $router->saveEditor($form);
expect($response['result'])->true();
expect($response['is_widget'])->false();
$saved_form = Form::findOne($form['id']);
expect($saved_form->name)->equals('Updated form');
}
function itCanRestoreAForm() {
$form = Form::where('name', 'Form 1')->findOne();
$form->trash();
$trashed_form = Form::findOne($form->id);
expect($trashed_form->deleted_at)->notNull();
$router = new Forms();
$response = $router->restore($form->id);
expect($response)->true();
$restored_form = Form::findOne($form->id);
expect($restored_form->deleted_at)->null();
}
function itCanTrashAForm() {
$form = Form::where('name', 'Form 1')->findOne();
expect($form->deleted_at)->null();
$router = new Forms();
$response = $router->trash($form->id);
expect($response)->true();
$trashed_form = Form::findOne($form->id);
expect($trashed_form->deleted_at)->notNull();
}
function itCanDeleteAForm() {
$form = Form::where('name', 'Form 2')->findOne();
expect($form->deleted_at)->null();
$router = new Forms();
$response = $router->delete($form->id);
expect($response)->equals(1);
$deleted_form = Form::findOne($form->id);
expect($deleted_form)->false();
}
function itCanDuplicateAForm() {
$form = Form::where('name', 'Form 3')->findOne();
$router = new Forms();
$response = $router->duplicate($form->id);
expect($response['name'])->equals('Copy of '.$form->name);
$duplicated_form = Form::findOne($response['id']);
expect($duplicated_form->name)->equals('Copy of '.$form->name);
}
function _after() {
Form::deleteMany();
Segment::deleteMany();
}
}