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

View File

@@ -63,8 +63,8 @@ class SubscriberCookieCest {
$this->checkSubscriberCookie($i, $email);
}
public function setSubscriberCookieOnWooCommerceCheckout(AcceptanceTester $i) {
$i->wantTo('Set subscriber cookie on WooCommerce checkout');
public function setSubscriberCookieOnWooCheckoutAndSubscriptionConfirmation(AcceptanceTester $i) {
$i->wantTo('Set subscriber cookie on WooCommerce checkout and subscription confirmation');
$i->activateWooCommerce();
$product = (new WooCommerceProduct($i))->create();
@@ -76,6 +76,18 @@ class SubscriberCookieCest {
// subscriber cookie should be set after order checkout
$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) {

View File

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