Create FormMessageController

[MAILPOET-3643]
This commit is contained in:
Jan Lysý
2021-06-01 20:14:11 +02:00
committed by Veljko V
parent 30d42972ff
commit e7a0355ba1
2 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,48 @@
<?php declare(strict_types = 1);
namespace MailPoet\Form;
use MailPoet\Entities\FormEntity;
use MailPoet\Settings\SettingsController;
class FormMessageController {
/** @var FormsRepository */
private $formsRepository;
/** @var SettingsController */
private $settings;
public function __construct(
FormsRepository $formsRepository,
SettingsController $settingsController
) {
$this->formsRepository = $formsRepository;
$this->settings = $settingsController;
}
public function updateSuccessMessages(): void {
$rightMessage = $this->getDefaultSuccessMessage();
$wrongMessage = (
$rightMessage === __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')
? __('Youve been successfully subscribed to our newsletter!', 'mailpoet')
: __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')
);
/** @var FormEntity[] $forms */
$forms = $this->formsRepository->findAll();
foreach ($forms as $form) {
$settings = $form->getSettings();
if (isset($settings['success_message']) && $settings['success_message'] === $wrongMessage) {
$settings['success_message'] = $rightMessage;
$form->setSettings($settings);
$this->formsRepository->flush();
}
}
}
public function getDefaultSuccessMessage(): string {
if ($this->settings->get('signup_confirmation.enabled')) {
return __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet');
}
return __('Youve been successfully subscribed to our newsletter!', 'mailpoet');
}
}

View File

@ -0,0 +1,63 @@
<?php declare(strict_types = 1);
namespace MailPoet\Form;
use MailPoet\Entities\FormEntity;
use MailPoet\Settings\SettingsController;
class FormMessageControllerTest extends \MailPoetTest {
/** @var FormMessageController */
private $controller;
/** @var SettingsController */
private $settings;
/** @var FormsRepository */
private $formsRepository;
public function _before() {
parent::_before();
$this->controller = $this->diContainer->get(FormMessageController::class);
$this->settings = $this->diContainer->get(SettingsController::class);
$this->formsRepository = $this->diContainer->get(FormsRepository::class);
}
public function testItReturnsCorrectSuccessMessage(): void {
$this->settings->set('signup_confirmation.enabled', 1);
expect($this->controller->getDefaultSuccessMessage())->equals(__('Check your inbox or spam folder to confirm your subscription.', 'mailpoet'));
$this->settings->set('signup_confirmation.enabled', 0);
expect($this->controller->getDefaultSuccessMessage())->equals(__('Youve been successfully subscribed to our newsletter!', 'mailpoet'));
}
public function testItUpdatesSuccessMessagesForForms(): void {
$this->settings->set('signup_confirmation.enabled', 1);
$form = new FormEntity('test form');
$form->setSettings(['success_message' => __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')]);
$this->entityManager->persist($form);
$this->entityManager->flush();
$this->settings->set('signup_confirmation.enabled', 0);
$this->controller->updateSuccessMessages();
$forms = $this->formsRepository->findAll();
expect($forms)->count(1);
foreach ($forms as $form) {
expect($form->getSettings()['success_message'] ?? null)->equals(__('Youve been successfully subscribed to our newsletter!', 'mailpoet'));
}
$this->settings->set('signup_confirmation.enabled', 1);
$this->controller->updateSuccessMessages();
$forms = $this->formsRepository->findAll();
expect($forms)->count(1);
foreach ($forms as $form) {
expect($form->getSettings()['success_message'] ?? null)->equals(__('Check your inbox or spam folder to confirm your subscription.', 'mailpoet'));
}
}
private function clear() {
$this->truncateEntity(FormEntity::class);
}
public function _after() {
$this->clear();
}
}