Files
piratepoet/tests/integration/Models/FormTest.php
2019-05-07 11:23:55 -04:00

162 lines
4.7 KiB
PHP

<?php
namespace MailPoet\Test\Models;
use MailPoet\Models\Form;
use MailPoet\Settings\SettingsController;
class FormTest extends \MailPoetTest {
/** @var SettingsController */
private $settings;
function _before() {
parent::_before();
$this->settings = new SettingsController();
$this->form = Form::createOrUpdate(array(
'name' => 'My Form'
));
}
function testItCanBeCreated() {
expect($this->form->id() > 0)->true();
expect($this->form->getErrors())->false();
}
function testItHasToBeValid() {
$invalid_form = Form::create();
$result = $invalid_form->save();
$errors = $result->getErrors();
expect(is_array($errors))->true();
expect($errors[0])->equals('Please specify a name.');
}
function testItCanBeGrouped() {
$forms = Form::filter('groupBy', 'all')->findArray();
expect($forms)->count(1);
$forms = Form::filter('groupBy', 'trash')->findArray();
expect($forms)->count(0);
$this->form->trash();
$forms = Form::filter('groupBy', 'trash')->findArray();
expect($forms)->count(1);
$forms = Form::filter('groupBy', 'all')->findArray();
expect($forms)->count(0);
$this->form->restore();
$forms = Form::filter('groupBy', 'all')->findArray();
expect($forms)->count(1);
}
function testItCanBeSearched() {
$form = Form::filter('search', 'my F')->findOne();
expect($form->name)->equals('My Form');
}
function testItHasACreatedAtOnCreation() {
$form = Form::findOne($this->form->id);
expect($form->created_at)->notNull();
}
function testItHasAnUpdatedAtOnCreation() {
$form = Form::findOne($this->form->id);
expect($form->updated_at)
->equals($form->created_at);
}
function testItUpdatesTheUpdatedAtOnUpdate() {
$form = Form::findOne($this->form->id);
$created_at = $form->created_at;
sleep(1);
$form->name = 'new name';
$form->save();
$updated_form = Form::findOne($form->id);
expect($updated_form->created_at)->equals($created_at);
$is_time_updated = (
$updated_form->updated_at > $updated_form->created_at
);
expect($is_time_updated)->true();
}
function testItCanCreateOrUpdate() {
$created_form = Form::createOrUpdate(array(
'name' => 'Created Form'
));
expect($created_form->id > 0)->true();
expect($created_form->getErrors())->false();
$form = Form::findOne($created_form->id);
expect($form->name)->equals('Created Form');
$is_updated = Form::createOrUpdate(array(
'id' => $created_form->id,
'name' => 'Updated Form'
));
$form = Form::findOne($created_form->id);
expect($form->name)->equals('Updated Form');
}
function testItCanProvideAFieldList() {
$form = Form::createOrUpdate(array(
'name' => 'My Form',
'body' => array(
array(
'type' => 'text',
'id' => 'email',
),
array(
'type' => 'text',
'id' => 2,
),
array(
'type' => 'submit',
'id' => 'submit',
)
)
));
expect($form->getFieldList())->equals(array('email', 'cf_2'));
}
function testItUpdatesSuccessMessagesWhenConfirmationIsDisabled() {
$default = Form::createOrUpdate([
'name' => 'with default message',
'settings' => ['success_message' => Form::MESSAGE_WHEN_CONFIRMATION_ENABLED]
]);
$custom = Form::createOrUpdate([
'name' => 'with custom message',
'settings' => ['success_message' => 'Thanks for joining us!']
]);
$this->settings->set('signup_confirmation.enabled', '0');
Form::updateSuccessMessages();
$default = Form::findOne($default->id)->asArray();
$custom = Form::findOne($custom->id)->asArray();
expect($default['settings']['success_message'])->equals(Form::MESSAGE_WHEN_CONFIRMATION_DISABLED);
expect($custom['settings']['success_message'])->equals('Thanks for joining us!');
}
function testItUpdatesSuccessMessagesWhenConfirmationIsEnabled() {
$default = Form::createOrUpdate([
'name' => 'with default message',
'settings' => ['success_message' => Form::MESSAGE_WHEN_CONFIRMATION_DISABLED]
]);
$custom = Form::createOrUpdate([
'name' => 'with custom message',
'settings' => ['success_message' => 'Thanks for joining us!']
]);
$this->settings->set('signup_confirmation.enabled', '1');
Form::updateSuccessMessages();
$default = Form::findOne($default->id)->asArray();
$custom = Form::findOne($custom->id)->asArray();
expect($default['settings']['success_message'])->equals(Form::MESSAGE_WHEN_CONFIRMATION_ENABLED);
expect($custom['settings']['success_message'])->equals('Thanks for joining us!');
}
function _after() {
Form::deleteMany();
}
}