Use Doctrine to create the newsletter
[MAILPOET-2286]
This commit is contained in:
committed by
Jack Kitterhing
parent
a178b5d1e8
commit
a5dc30c4b6
@@ -63,13 +63,13 @@ class NewsletterEntity {
|
||||
* @ORM\Column(type="string")
|
||||
* @var string
|
||||
*/
|
||||
private $sender_address;
|
||||
private $sender_address = '';
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="string")
|
||||
* @var string
|
||||
*/
|
||||
private $sender_name;
|
||||
private $sender_name = '';
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="string")
|
||||
@@ -81,19 +81,19 @@ class NewsletterEntity {
|
||||
* @ORM\Column(type="string")
|
||||
* @var string
|
||||
*/
|
||||
private $reply_to_address;
|
||||
private $reply_to_address = '';
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="string")
|
||||
* @var string
|
||||
*/
|
||||
private $reply_to_name;
|
||||
private $reply_to_name = '';
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="string")
|
||||
* @var string
|
||||
*/
|
||||
private $preheader;
|
||||
private $preheader = '';
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="json")
|
||||
|
@@ -2,7 +2,9 @@
|
||||
|
||||
namespace MailPoet\WooCommerce;
|
||||
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\WooCommerce\TransactionalEmails\Renderer;
|
||||
use MailPoet\WooCommerce\TransactionalEmails\Template;
|
||||
@@ -26,11 +28,15 @@ class TransactionalEmails {
|
||||
/** @var array */
|
||||
private $email_headings;
|
||||
|
||||
function __construct(WPFunctions $wp, SettingsController $settings, Template $template, Renderer $renderer) {
|
||||
/** @var NewslettersRepository */
|
||||
private $newsletters_repository;
|
||||
|
||||
function __construct(WPFunctions $wp, SettingsController $settings, Template $template, Renderer $renderer, NewslettersRepository $newsletters_repository) {
|
||||
$this->wp = $wp;
|
||||
$this->settings = $settings;
|
||||
$this->template = $template;
|
||||
$this->renderer = $renderer;
|
||||
$this->newsletters_repository = $newsletters_repository;
|
||||
$this->email_headings = [
|
||||
'new_account' => [
|
||||
'option_name' => 'woocommerce_new_order_settings',
|
||||
@@ -94,12 +100,12 @@ class TransactionalEmails {
|
||||
|
||||
private function createNewsletter() {
|
||||
$wc_email_settings = $this->getWCEmailSettings();
|
||||
return Newsletter::createOrUpdate([
|
||||
'type' => Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL,
|
||||
'subject' => 'WooCommerce Transactional Email',
|
||||
'preheader' => '',
|
||||
'body' => json_encode($this->template->create($wc_email_settings)),
|
||||
]);
|
||||
$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)));
|
||||
$this->newsletters_repository->persist($newsletter);
|
||||
$this->newsletters_repository->flush();
|
||||
}
|
||||
|
||||
private function getNewsletter() {
|
||||
|
@@ -3,8 +3,10 @@
|
||||
namespace MailPoet\WooCommerce;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Newsletter\Editor\LayoutHelper as L;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\WooCommerce\TransactionalEmails\Renderer;
|
||||
use MailPoet\WooCommerce\TransactionalEmails\Template;
|
||||
@@ -28,7 +30,13 @@ class TransactionalEmailsTest extends \MailPoetTest {
|
||||
$this->wp = new WPFunctions();
|
||||
$this->settings = SettingsController::getInstance();
|
||||
$this->original_wc_settings = $this->settings->get('woocommerce');
|
||||
$this->transactional_emails = new TransactionalEmails($this->wp, $this->settings, new Template, new Renderer);
|
||||
$this->transactional_emails = new TransactionalEmails(
|
||||
$this->wp,
|
||||
$this->settings,
|
||||
ContainerWrapper::getInstance()->get(Template::class),
|
||||
ContainerWrapper::getInstance()->get(Renderer::class),
|
||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class)
|
||||
);
|
||||
}
|
||||
|
||||
function testInitCreatesTransactionalEmailAndSavesItsId() {
|
||||
@@ -53,7 +61,13 @@ class TransactionalEmailsTest extends \MailPoetTest {
|
||||
return 'my-awesome-image-url';
|
||||
}
|
||||
}]);
|
||||
$transactional_emails = new TransactionalEmails($wp, $this->settings, new Template, new Renderer);
|
||||
$transactional_emails = new TransactionalEmails(
|
||||
$wp,
|
||||
$this->settings,
|
||||
ContainerWrapper::getInstance()->get(Template::class),
|
||||
ContainerWrapper::getInstance()->get(Renderer::class),
|
||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class)
|
||||
);
|
||||
$transactional_emails->init();
|
||||
$email = Newsletter::where('type', Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL)->findOne();
|
||||
expect($email)->notEmpty();
|
||||
@@ -104,7 +118,13 @@ class TransactionalEmailsTest extends \MailPoetTest {
|
||||
},
|
||||
]);
|
||||
|
||||
$transactional_emails = new TransactionalEmails($wp, $this->settings, new Template, $renderer);
|
||||
$transactional_emails = new TransactionalEmails(
|
||||
$wp,
|
||||
$this->settings,
|
||||
ContainerWrapper::getInstance()->get(Template::class),
|
||||
$renderer,
|
||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class)
|
||||
);
|
||||
$transactional_emails->useTemplateForWoocommerceEmails();
|
||||
expect($added_actions)->count(1);
|
||||
expect($added_actions['woocommerce_init'])->isCallable();
|
||||
|
@@ -3,6 +3,7 @@
|
||||
namespace MailPoet\WooCommerce;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\WooCommerce\TransactionalEmails\Renderer;
|
||||
use MailPoet\WooCommerce\TransactionalEmails\Template;
|
||||
@@ -36,7 +37,8 @@ class TransactionalEmailsTest extends \MailPoetUnitTest {
|
||||
$settings = Stub::make(SettingsController::class);
|
||||
$template = Stub::make(Template::class);
|
||||
$renderer = Stub::make(Renderer::class);
|
||||
$transactional_emails = new TransactionalEmails($wp, $settings, $template, $renderer);
|
||||
$newsletters_repository = Stub::make(NewslettersRepository::class);
|
||||
$transactional_emails = new TransactionalEmails($wp, $settings, $template, $renderer, $newsletters_repository);
|
||||
expect($transactional_emails->getEmailHeadings())->equals([
|
||||
'new_account' => 'Test: New Order: #0001',
|
||||
'processing_order' => 'Thank you for your order',
|
||||
|
Reference in New Issue
Block a user