diff --git a/lib/Entities/NewsletterEntity.php b/lib/Entities/NewsletterEntity.php index 8b2d17e729..4ecf5b5303 100644 --- a/lib/Entities/NewsletterEntity.php +++ b/lib/Entities/NewsletterEntity.php @@ -117,7 +117,7 @@ class NewsletterEntity { * @ORM\Column(type="string") * @var string */ - private $ga_campaign; + private $ga_campaign = ''; /** * @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity") diff --git a/lib/Newsletter/Renderer/Renderer.php b/lib/Newsletter/Renderer/Renderer.php index 319180a6fd..0620ecf112 100644 --- a/lib/Newsletter/Renderer/Renderer.php +++ b/lib/Newsletter/Renderer/Renderer.php @@ -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(); diff --git a/lib/WooCommerce/TransactionalEmails.php b/lib/WooCommerce/TransactionalEmails.php index 4e4975b54a..38ca884955 100644 --- a/lib/WooCommerce/TransactionalEmails.php +++ b/lib/WooCommerce/TransactionalEmails.php @@ -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() { diff --git a/tests/integration/WooCommerce/TransactionalEmailsTest.php b/tests/integration/WooCommerce/TransactionalEmailsTest.php index cdd1a102a0..c542da59f8 100644 --- a/tests/integration/WooCommerce/TransactionalEmailsTest.php +++ b/tests/integration/WooCommerce/TransactionalEmailsTest.php @@ -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,32 +71,34 @@ 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([ - 'content' => L::col([ - L::row([L::col([['type' => 'text', 'text' => 'Some text before heading']])]), - ['type' => 'woocommerceHeading'], - L::row([L::col([['type' => 'text', 'text' => 'Some text between heading and content']])]), - ['type' => 'woocommerceContent'], - L::row([L::col([['type' => 'text', 'text' => 'Some text after content']])]), - ]), + $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'], + L::row([L::col([['type' => 'text', 'text' => 'Some text between heading and content']])]), + ['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); } }