Files
piratepoet/tests/integration/Form/FormFactoryTest.php
2020-07-06 15:18:23 +02:00

74 lines
2.6 KiB
PHP

<?php
namespace MailPoet\Form;
use MailPoet\Entities\FormEntity;
use MailPoet\Form\Templates\TemplateRepository;
class FormFactoryTest extends \MailPoetTest {
/** @var FormFactory */
private $formFactory;
public function _before() {
parent::_before();
$this->formFactory = $this->diContainer->get(FormFactory::class);
}
public function testItCreatesAndPersistEmptyForm() {
$formEntity = $this->formFactory->createEmptyForm();
expect($formEntity)->isInstanceOf(FormEntity::class);
$this->entityManager->detach($formEntity);
$formEntity = $this->entityManager->find(FormEntity::class, $formEntity->getId());
assert($formEntity instanceof FormEntity);
expect($formEntity->getName())->equals('');
expect($formEntity->getBody())->notEmpty();
expect($formEntity->getSettings())->notEmpty();
expect($formEntity->getStyles())->string();
}
public function testItCreatesAndPersistFormFromTemplateId() {
$formEntity = $this->formFactory->createFormFromTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE);
expect($formEntity)->isInstanceOf(FormEntity::class);
$this->entityManager->detach($formEntity);
$formEntity = $this->entityManager->find(FormEntity::class, $formEntity->getId());
assert($formEntity instanceof FormEntity);
expect($formEntity->getName())->equals('');
expect($formEntity->getBody())->notEmpty();
expect($formEntity->getSettings())->notEmpty();
expect($formEntity->getStyles())->string();
}
public function testItCanOverrideTemplateSettings() {
$settings = [
'success_message' => 'Hello Buddy!',
'segments' => [1, 2, 3],
];
$formEntity = $this->formFactory->createFormFromTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE, $settings);
assert($formEntity instanceof FormEntity);
$formSettings = $formEntity->getSettings() ?? [];
expect($formSettings['success_message'])->equals('Hello Buddy!');
expect($formSettings['segments'])->equals([1, 2, 3]);
}
public function testItCanEnsureDefaultFormExists() {
$this->cleanup();
$formEntity = $this->formFactory->ensureDefaultFormExists(2);
assert($formEntity instanceof FormEntity);
$formSettings = $formEntity->getSettings() ?? [];
expect($formSettings['segments'])->equals(['2']);
// Doesn't create any form if some exists
$formEntity = $this->formFactory->ensureDefaultFormExists(2);
expect($formEntity)->null();
}
public function _after() {
parent::_after();
$this->cleanup();
}
private function cleanup() {
$this->truncateEntity(FormEntity::class);
}
}