Files
piratepoet/mailpoet/tests/integration/Subscribers/ConfirmationEmailCustomizerTest.php
Rodrigo Primo a1f57361c5 Replace expect()->array() with verify()->isArray()
codeception/verify 2.1 removed support for expect()->array() so we need
to replace it with verify()->isArray().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00

119 lines
4.1 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Subscribers;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Settings\SettingsController;
use MailPoet\Test\DataFactories\Newsletter as NewsletterFactory;
class ConfirmationEmailCustomizerTest extends \MailPoetTest {
/** @var SettingsController */
private $settings;
/** @var NewsletterFactory */
private $newsletterFactory;
private $partialTemplateContent = 'Please confirm your subscription to receive emails from us';
public function _before() {
parent::_before();
$this->settings = $this->diContainer->get(SettingsController::class);
$this->newsletterFactory = new NewsletterFactory();
}
public function testItGeneratesNewsletterOnInit() {
$controller = $this->generateController();
verify($this->settings->get(ConfirmationEmailCustomizer::SETTING_EMAIL_ID, false))->equals(false);
$controller->init();
verify($this->settings->get(ConfirmationEmailCustomizer::SETTING_EMAIL_ID, false))->notEquals(false);
}
public function testItGenerateNewsletterIfNoneExist() {
$controller = $this->generateController();
verify($this->settings->get(ConfirmationEmailCustomizer::SETTING_EMAIL_ID, false))->equals(false);
$newsletter = $controller->getNewsletter();
verify($newsletter)->instanceOf(NewsletterEntity::class);
verify($this->settings->get(ConfirmationEmailCustomizer::SETTING_EMAIL_ID, false))->notEquals(false);
}
public function testItRegenerateNewsletterIfIdIsSetButNewsletterDoesNotExist() {
$this->settings->set(ConfirmationEmailCustomizer::SETTING_EMAIL_ID, 5);
$controller = $this->generateController();
$newsletter = $controller->getNewsletter();
verify($newsletter)->instanceOf(NewsletterEntity::class);
verify($newsletter->getId())->notEquals(5);
verify($this->settings->get(ConfirmationEmailCustomizer::SETTING_EMAIL_ID, false))->equals($newsletter->getId());
}
public function testItGenerateNewsletterOfTypeConfirmationEmail() {
$controller = $this->generateController();
$newsletter = $controller->getNewsletter();
verify($newsletter->getType())->equals(NewsletterEntity::TYPE_CONFIRMATION_EMAIL_CUSTOMIZER);
}
public function testItFetchAlreadyCreatedNewsletter() {
$newsletter = $this->newsletterFactory
->loadBodyFrom('newsletterThreeCols.json')
->withType(NewsletterEntity::TYPE_CONFIRMATION_EMAIL_CUSTOMIZER)
->create();
$this->settings->set(ConfirmationEmailCustomizer::SETTING_EMAIL_ID, $newsletter->getId());
$controller = $this->generateController();
$newNewsletter = $controller->getNewsletter();
verify($newNewsletter->getId())->equals($newsletter->getId());
}
public function testItFetchesConfirmationEmailTemplate() {
$controller = $this->generateController();
$newsletter = $controller->getNewsletter();
verify($newsletter->getBody())->isArray();
$stringBody = json_encode($newsletter->getBody());
verify($stringBody)->stringContainsString($this->partialTemplateContent);
}
public function testItRendersEmail() {
$controller = $this->generateController();
$newsletter = $controller->getNewsletter();
$renderedContent = $controller->render($newsletter);
verify($renderedContent)->isArray();
verify($renderedContent)->arrayHasKey('html');
verify($renderedContent)->arrayHasKey('text');
verify($renderedContent)->arrayHasKey('subject');
}
public function testItRendersEmailWithDefaultTemplateContent() {
$subject = 'Confirm your subscription';
$this->settings->set('signup_confirmation.subject', $subject);
$controller = $this->generateController();
$newsletter = $controller->getNewsletter();
$renderedContent = (array)$controller->render($newsletter);
verify($renderedContent['html'])->stringContainsString($this->partialTemplateContent);
verify($renderedContent['text'])->stringContainsString($this->partialTemplateContent);
verify($renderedContent['subject'])->stringContainsString($subject);
}
private function generateController(): ConfirmationEmailCustomizer {
return $this->diContainer->get(ConfirmationEmailCustomizer::class);
}
}