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:
@ -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;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
@ -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() {
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
|
@ -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',
|
||||||
|
@ -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() {
|
||||||
|
182
tests/unit/Router/FormsCest.php
Normal file
182
tests/unit/Router/FormsCest.php
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user