Fix tests and default values

[MAILPOET-2286]
This commit is contained in:
Amine Ben hammou
2019-11-26 22:51:57 +01:00
committed by Jack Kitterhing
parent d61d7ce483
commit 2c0f16b0dd
4 changed files with 39 additions and 26 deletions

View File

@ -117,7 +117,7 @@ class NewsletterEntity {
* @ORM\Column(type="string") * @ORM\Column(type="string")
* @var string * @var string
*/ */
private $ga_campaign; private $ga_campaign = '';
/** /**
* @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity") * @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity")

View File

@ -32,7 +32,7 @@ class Renderer {
$this->blocks_renderer = new Blocks\Renderer($this->newsletter); $this->blocks_renderer = new Blocks\Renderer($this->newsletter);
$this->columns_renderer = new Columns\Renderer(); $this->columns_renderer = new Columns\Renderer();
$this->preprocessor = new Preprocessor($this->blocks_renderer, WPFunctions::get()); $this->preprocessor = new Preprocessor($this->blocks_renderer, WPFunctions::get());
$this->CSS_inliner = new \MailPoet\Util\CSS(); $this->CSS_inliner = new \MailPoetVendor\CSS();
$this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE); $this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE);
$this->premium_activated = License::getLicense(); $this->premium_activated = License::getLicense();
$bridge = new Bridge(); $bridge = new Bridge();

View File

@ -61,7 +61,7 @@ class TransactionalEmails {
$saved_email_id = (bool)$this->settings->get(self::SETTING_EMAIL_ID, false); $saved_email_id = (bool)$this->settings->get(self::SETTING_EMAIL_ID, false);
if (!$saved_email_id) { if (!$saved_email_id) {
$email = $this->createNewsletter(); $email = $this->createNewsletter();
$this->settings->set(self::SETTING_EMAIL_ID, $email->id); $this->settings->set(self::SETTING_EMAIL_ID, $email->getId());
} }
} }
@ -103,9 +103,10 @@ class TransactionalEmails {
$newsletter = new NewsletterEntity; $newsletter = new NewsletterEntity;
$newsletter->setType(NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL); $newsletter->setType(NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL);
$newsletter->setSubject('WooCommerce Transactional Email'); $newsletter->setSubject('WooCommerce Transactional Email');
$newsletter->setBody(json_encode($this->template->create($wc_email_settings))); $newsletter->setBody($this->template->create($wc_email_settings));
$this->newsletters_repository->persist($newsletter); $this->newsletters_repository->persist($newsletter);
$this->newsletters_repository->flush(); $this->newsletters_repository->flush();
return $newsletter;
} }
private function getNewsletter() { private function getNewsletter() {

View File

@ -4,6 +4,7 @@ namespace MailPoet\WooCommerce;
use Codeception\Stub; use Codeception\Stub;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Newsletter\Editor\LayoutHelper as L; use MailPoet\Newsletter\Editor\LayoutHelper as L;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
@ -26,32 +27,36 @@ class TransactionalEmailsTest extends \MailPoetTest {
/** @var TransactionalEmails */ /** @var TransactionalEmails */
private $transactional_emails; private $transactional_emails;
/** @var NewslettersRepository */
private $newsletters_repository;
function _before() { function _before() {
$this->wp = new WPFunctions(); $this->wp = new WPFunctions();
$this->settings = SettingsController::getInstance(); $this->settings = SettingsController::getInstance();
$this->original_wc_settings = $this->settings->get('woocommerce'); $this->original_wc_settings = $this->settings->get('woocommerce');
$this->newsletters_repository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
$this->transactional_emails = new TransactionalEmails( $this->transactional_emails = new TransactionalEmails(
$this->wp, $this->wp,
$this->settings, $this->settings,
ContainerWrapper::getInstance()->get(Template::class), ContainerWrapper::getInstance()->get(Template::class),
ContainerWrapper::getInstance()->get(Renderer::class), ContainerWrapper::getInstance()->get(Renderer::class),
ContainerWrapper::getInstance()->get(NewslettersRepository::class) $this->newsletters_repository
); );
} }
function testInitCreatesTransactionalEmailAndSavesItsId() { function testInitCreatesTransactionalEmailAndSavesItsId() {
$this->transactional_emails->init(); $this->transactional_emails->init();
$email = Newsletter::where('type', Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL)->findOne(); $email = $this->newsletters_repository->findOneBy(['type' => Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL]);
$id = $this->settings->get(TransactionalEmails::SETTING_EMAIL_ID, null); $id = $this->settings->get(TransactionalEmails::SETTING_EMAIL_ID, null);
expect($email)->notEmpty(); expect($email)->notEmpty();
expect($id)->notNull(); expect($id)->notNull();
expect($email->id)->equals($id); expect($email->getId())->equals($id);
} }
function testInitDoesntCreateTransactionalEmailIfSettingAlreadySet() { function testInitDoesntCreateTransactionalEmailIfSettingAlreadySet() {
$this->settings->set(TransactionalEmails::SETTING_EMAIL_ID, 1); $this->settings->set(TransactionalEmails::SETTING_EMAIL_ID, 1);
$this->transactional_emails->init(); $this->transactional_emails->init();
$email = Newsletter::where('type', Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL)->findOne(); $email = $this->newsletters_repository->findOneBy(['type' => Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL]);
expect($email)->equals(null); expect($email)->equals(null);
} }
@ -66,22 +71,23 @@ class TransactionalEmailsTest extends \MailPoetTest {
$this->settings, $this->settings,
ContainerWrapper::getInstance()->get(Template::class), ContainerWrapper::getInstance()->get(Template::class),
ContainerWrapper::getInstance()->get(Renderer::class), ContainerWrapper::getInstance()->get(Renderer::class),
ContainerWrapper::getInstance()->get(NewslettersRepository::class) $this->newsletters_repository
); );
$transactional_emails->init(); $transactional_emails->init();
$email = Newsletter::where('type', Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL)->findOne(); $email = $this->newsletters_repository->findOneBy([
'type' => NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL,
]);
expect($email)->notEmpty(); expect($email)->notEmpty();
expect($email->body)->contains('my-awesome-image-url'); expect(json_encode($email->getBody()))->contains('my-awesome-image-url');
} }
function testUseTemplateForWCEmails() { function testUseTemplateForWCEmails() {
$added_actions = []; $added_actions = [];
$removed_actions = []; $removed_actions = [];
$newsletter = Newsletter::createOrUpdate([ $newsletter = new NewsletterEntity;
'type' => Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL, $newsletter->setType(Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL);
'subject' => 'WooCommerce Transactional Email', $newsletter->setSubject('WooCommerce Transactional Email');
'preheader' => '', $newsletter->setBody([
'body' => json_encode([
'content' => L::col([ 'content' => L::col([
L::row([L::col([['type' => 'text', 'text' => 'Some text before heading']])]), L::row([L::col([['type' => 'text', 'text' => 'Some text before heading']])]),
['type' => 'woocommerceHeading'], ['type' => 'woocommerceHeading'],
@ -89,9 +95,10 @@ class TransactionalEmailsTest extends \MailPoetTest {
['type' => 'woocommerceContent'], ['type' => 'woocommerceContent'],
L::row([L::col([['type' => 'text', 'text' => 'Some text after content']])]), L::row([L::col([['type' => 'text', 'text' => 'Some text after content']])]),
]), ]),
]),
]); ]);
$this->settings->set(TransactionalEmails::SETTING_EMAIL_ID, $newsletter->id); $this->newsletters_repository->persist($newsletter);
$this->newsletters_repository->flush();
$this->settings->set(TransactionalEmails::SETTING_EMAIL_ID, $newsletter->getId());
$wp = Stub::make(new WPFunctions, [ $wp = Stub::make(new WPFunctions, [
'getOption' => function($name) { 'getOption' => function($name) {
return ''; return '';
@ -105,7 +112,7 @@ class TransactionalEmailsTest extends \MailPoetTest {
]); ]);
$renderer = Stub::make(Renderer::class, [ $renderer = Stub::make(Renderer::class, [
'render' => function($email) use(&$newsletter) { 'render' => function($email) use(&$newsletter) {
expect($email->id)->equals($newsletter->id); expect($email->id)->equals($newsletter->getId());
}, },
'getHTMLBeforeContent' => function($heading_text) { 'getHTMLBeforeContent' => function($heading_text) {
return 'HTML before content with ' . $heading_text; return 'HTML before content with ' . $heading_text;
@ -144,7 +151,12 @@ class TransactionalEmailsTest extends \MailPoetTest {
} }
function _after() { function _after() {
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table); $this->entity_manager
->createQueryBuilder()
->delete()
->from(NewsletterEntity::class, 'n')
->getQuery()
->execute();
$this->settings->set('woocommerce', $this->original_wc_settings); $this->settings->set('woocommerce', $this->original_wc_settings);
} }
} }