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")
* @var string
*/
private $ga_campaign;
private $ga_campaign = '';
/**
* @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity")

View File

@ -32,7 +32,7 @@ class Renderer {
$this->blocks_renderer = new Blocks\Renderer($this->newsletter);
$this->columns_renderer = new Columns\Renderer();
$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->premium_activated = License::getLicense();
$bridge = new Bridge();

View File

@ -61,7 +61,7 @@ class TransactionalEmails {
$saved_email_id = (bool)$this->settings->get(self::SETTING_EMAIL_ID, false);
if (!$saved_email_id) {
$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->setType(NewsletterEntity::TYPE_WC_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->flush();
return $newsletter;
}
private function getNewsletter() {

View File

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