Set subscriber cookie on subscription confirmation link click

[MAILPOET-3924]
This commit is contained in:
Jan Jakes
2021-12-16 14:52:49 +01:00
committed by Veljko V
parent 1902db54e1
commit 6a512b1df7
3 changed files with 25 additions and 2 deletions

View File

@@ -10,6 +10,7 @@ use MailPoet\Models\SubscriberSegment;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler; use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Settings\TrackingConfig; use MailPoet\Settings\TrackingConfig;
use MailPoet\Statistics\Track\SubscriberHandler;
use MailPoet\Statistics\Track\Unsubscribes; use MailPoet\Statistics\Track\Unsubscribes;
use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscribers\NewSubscriberNotificationMailer; use MailPoet\Subscribers\NewSubscriberNotificationMailer;
@@ -64,6 +65,9 @@ class Pages {
/** @var ManageSubscriptionFormRenderer */ /** @var ManageSubscriptionFormRenderer */
private $manageSubscriptionFormRenderer; private $manageSubscriptionFormRenderer;
/** @var SubscriberHandler */
private $subscriberHandler;
/** @var SubscribersRepository */ /** @var SubscribersRepository */
private $subscribersRepository; private $subscribersRepository;
@@ -82,6 +86,7 @@ class Pages {
TemplateRenderer $templateRenderer, TemplateRenderer $templateRenderer,
Unsubscribes $unsubscribesTracker, Unsubscribes $unsubscribesTracker,
ManageSubscriptionFormRenderer $manageSubscriptionFormRenderer, ManageSubscriptionFormRenderer $manageSubscriptionFormRenderer,
SubscriberHandler $subscriberHandler,
SubscribersRepository $subscribersRepository, SubscribersRepository $subscribersRepository,
TrackingConfig $trackingConfig TrackingConfig $trackingConfig
) { ) {
@@ -96,6 +101,7 @@ class Pages {
$this->templateRenderer = $templateRenderer; $this->templateRenderer = $templateRenderer;
$this->unsubscribesTracker = $unsubscribesTracker; $this->unsubscribesTracker = $unsubscribesTracker;
$this->manageSubscriptionFormRenderer = $manageSubscriptionFormRenderer; $this->manageSubscriptionFormRenderer = $manageSubscriptionFormRenderer;
$this->subscriberHandler = $subscriberHandler;
$this->subscribersRepository = $subscribersRepository; $this->subscribersRepository = $subscribersRepository;
$this->trackingConfig = $trackingConfig; $this->trackingConfig = $trackingConfig;
} }
@@ -169,6 +175,9 @@ class Pages {
$this->subscriber->unconfirmedData = null; $this->subscriber->unconfirmedData = null;
$this->subscriber->save(); $this->subscriber->save();
// start subscriber tracking
$this->subscriberHandler->identifyByEmail($this->subscriber->email);
if ($this->subscriber->getErrors() !== false) { if ($this->subscriber->getErrors() !== false) {
return false; return false;
} }

View File

@@ -63,8 +63,8 @@ class SubscriberCookieCest {
$this->checkSubscriberCookie($i, $email); $this->checkSubscriberCookie($i, $email);
} }
public function setSubscriberCookieOnWooCommerceCheckout(AcceptanceTester $i) { public function setSubscriberCookieOnWooCheckoutAndSubscriptionConfirmation(AcceptanceTester $i) {
$i->wantTo('Set subscriber cookie on WooCommerce checkout'); $i->wantTo('Set subscriber cookie on WooCommerce checkout and subscription confirmation');
$i->activateWooCommerce(); $i->activateWooCommerce();
$product = (new WooCommerceProduct($i))->create(); $product = (new WooCommerceProduct($i))->create();
@@ -76,6 +76,18 @@ class SubscriberCookieCest {
// subscriber cookie should be set after order checkout // subscriber cookie should be set after order checkout
$this->checkSubscriberCookie($i, $email); $this->checkSubscriberCookie($i, $email);
// click on subscription confirmation link
$i->resetCookie(self::SUBSCRIBER_COOKIE_NAME);
$i->cantSeeCookie(self::SUBSCRIBER_COOKIE_NAME);
$i->checkEmailWasReceived('Confirm your subscription to MP Dev');
$i->click(Locator::contains('span.subject', 'Confirm your subscription to MP Dev'));
$i->switchToIframe('#preview-html');
$i->click('I confirm my subscription!');
$i->switchToNextTab();
// subscriber cookie should be set after subscription confirmation
$this->checkSubscriberCookie($i, $email);
} }
public function setSubscriberCookieOnLinkClick(AcceptanceTester $i) { public function setSubscriberCookieOnLinkClick(AcceptanceTester $i) {

View File

@@ -19,6 +19,7 @@ use MailPoet\Models\SubscriberSegment;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler; use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Settings\TrackingConfig; use MailPoet\Settings\TrackingConfig;
use MailPoet\Statistics\Track\SubscriberHandler;
use MailPoet\Statistics\Track\Unsubscribes; use MailPoet\Statistics\Track\Unsubscribes;
use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscribers\NewSubscriberNotificationMailer; use MailPoet\Subscribers\NewSubscriberNotificationMailer;
@@ -214,6 +215,7 @@ class PagesTest extends \MailPoetTest {
$container->get(Renderer::class), $container->get(Renderer::class),
$unsubscribesMock ?? $container->get(Unsubscribes::class), $unsubscribesMock ?? $container->get(Unsubscribes::class),
$container->get(ManageSubscriptionFormRenderer::class), $container->get(ManageSubscriptionFormRenderer::class),
$container->get(SubscriberHandler::class),
$this->subscribersRepository, $this->subscribersRepository,
$container->get(TrackingConfig::class) $container->get(TrackingConfig::class)
); );