diff --git a/lib/Newsletter/Shortcodes/Categories/Link.php b/lib/Newsletter/Shortcodes/Categories/Link.php index 537eedef11..17afd1239a 100644 --- a/lib/Newsletter/Shortcodes/Categories/Link.php +++ b/lib/Newsletter/Shortcodes/Categories/Link.php @@ -23,28 +23,26 @@ class Link { case 'subscription_unsubscribe_url': return self::processUrl( $action, - SubscriptionUrl::getUnsubscribeUrl($subscriber), - $queue, - $wp_user_preview + SubscriptionUrl::getUnsubscribeUrl($wp_user_preview ? false : $subscriber), + $queue ); case 'subscription_manage_url': return self::processUrl( $action, - SubscriptionUrl::getManageUrl($subscriber), - $queue, - $wp_user_preview + SubscriptionUrl::getManageUrl($wp_user_preview ? false : $subscriber), + $queue ); case 'newsletter_view_in_browser_url': $url = NewsletterUrl::getViewInBrowserUrl( $type = null, $newsletter, - $subscriber, + $wp_user_preview ? false : $subscriber, $queue, $wp_user_preview ); - return self::processUrl($action, $url, $queue, $wp_user_preview); + return self::processUrl($action, $url, $queue); default: $shortcode = self::getFullShortcode($action); @@ -62,8 +60,7 @@ class Link { } } - static function processUrl($action, $url, $queue, $wp_user_preview = false) { - if($wp_user_preview) return '#'; + static function processUrl($action, $url, $queue) { return ($queue !== false && (boolean)Setting::getValue('tracking.enabled')) ? self::getFullShortcode($action) : $url; @@ -111,4 +108,4 @@ class Link { private static function getFullShortcode($action) { return sprintf('[link:%s]', $action); } -} \ No newline at end of file +} diff --git a/tests/unit/API/JSON/v1/NewslettersTest.php b/tests/unit/API/JSON/v1/NewslettersTest.php index e9c7686821..5048671eb2 100644 --- a/tests/unit/API/JSON/v1/NewslettersTest.php +++ b/tests/unit/API/JSON/v1/NewslettersTest.php @@ -17,6 +17,7 @@ use MailPoet\Models\SendingQueue; use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Newsletter\Url; use MailPoet\Router\Router; +use MailPoet\Subscription\Url as SubscriptionUrl; class NewslettersTest extends \MailPoetTest { function _before() { @@ -699,21 +700,26 @@ class NewslettersTest extends \MailPoetTest { function testItCanSendAPreview() { $subscriber = 'test@subscriber.com'; + $unsubscribeLink = SubscriptionUrl::getUnsubscribeUrl(false); + $manageLink = SubscriptionUrl::getManageUrl(false); + $viewInBrowserLink = Url::getViewInBrowserUrl(null, $this->newsletter, false, false, true); $data = array( 'subscriber' => $subscriber, 'id' => $this->newsletter->id, 'mailer' => Stub::makeEmpty( '\MailPoet\Mailer\Mailer', array( - 'send' => function($newsletter, $subscriber, $extra_params) { + 'send' => function($newsletter, $subscriber, $extra_params) + use ($unsubscribeLink, $manageLink, $viewInBrowserLink) + { expect(is_array($newsletter))->true(); expect($newsletter['body']['text'])->contains('Hello test'); expect($subscriber)->equals($subscriber); expect($extra_params['unsubscribe_url'])->equals(home_url()); // system links are replaced with hashes - expect($newsletter['body']['html'])->contains('href="#">View in browser'); - expect($newsletter['body']['html'])->contains('href="#">Unsubscribe'); - expect($newsletter['body']['html'])->contains('href="#">Manage subscription'); + expect($newsletter['body']['html'])->contains('href="'.$viewInBrowserLink.'">View in browser'); + expect($newsletter['body']['html'])->contains('href="'.$unsubscribeLink.'">Unsubscribe'); + expect($newsletter['body']['html'])->contains('href="'.$manageLink.'">Manage subscription'); return array('response' => true); } ) @@ -812,4 +818,4 @@ class NewslettersTest extends \MailPoetTest { \ORM::raw_execute('TRUNCATE ' . Segment::$_table); \ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table); } -} \ No newline at end of file +} diff --git a/tests/unit/Newsletter/ShortcodesTest.php b/tests/unit/Newsletter/ShortcodesTest.php index b98bb8abf2..f0b2c8e22d 100644 --- a/tests/unit/Newsletter/ShortcodesTest.php +++ b/tests/unit/Newsletter/ShortcodesTest.php @@ -9,6 +9,8 @@ use MailPoet\Models\Setting; use MailPoet\Models\Subscriber; use MailPoet\Models\SubscriberCustomField; use MailPoet\Newsletter\Shortcodes\Categories\Date; +use MailPoet\Newsletter\Url as NewsletterUrl; +use MailPoet\Subscription\Url as SubscriptionUrl; require_once(ABSPATH . 'wp-includes/pluggable.php'); require_once(ABSPATH . 'wp-admin/includes/user.php'); @@ -270,7 +272,7 @@ class ShortcodesTest extends \MailPoetTest { } } - function testItReturnsHashInsteadofLinksWhenPreviewIsEnabled() { + function testItReturnsDefaultLinksWhenPreviewIsEnabled() { $shortcodes_object = $this->shortcodes_object; $shortcodes_object->wp_user_preview = true; $shortcodes = array( @@ -278,10 +280,15 @@ class ShortcodesTest extends \MailPoetTest { '[link:subscription_manage_url]', '[link:newsletter_view_in_browser_url]', ); + $links = array( + SubscriptionUrl::getUnsubscribeUrl(false), + SubscriptionUrl::getManageUrl(false), + NewsletterUrl::getViewInBrowserUrl(null, $this->newsletter, false, false, true) + ); $result = $shortcodes_object->process($shortcodes); // hash is returned foreach($result as $index => $transformed_shortcode) { - expect($transformed_shortcode)->equals('#'); + expect($transformed_shortcode)->equals($links[$index]); } } @@ -365,4 +372,4 @@ class ShortcodesTest extends \MailPoetTest { wp_delete_user($this->WP_user->ID); } -} \ No newline at end of file +} diff --git a/tests/unit/Newsletter/ViewInBrowserTest.php b/tests/unit/Newsletter/ViewInBrowserTest.php index 4bfcf98f46..880b0f9725 100644 --- a/tests/unit/Newsletter/ViewInBrowserTest.php +++ b/tests/unit/Newsletter/ViewInBrowserTest.php @@ -159,20 +159,6 @@ class ViewInBrowserTest extends \MailPoetTest { expect($rendered_body)->contains(''); } - function testReplacesLinkShortcodesWithUrlHashWhenPreviewIsEnabledAndNewsletterWasSent() { - $queue = $this->queue; - $queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking; - $rendered_body = $this->view_in_browser->renderNewsletter( - $this->newsletter, - $this->subscriber, - $queue, - $preview = true - ); - // link shortcodes should be replaced with a hash (#) - expect($rendered_body)->notContains('[mailpoet_click_data]'); - expect($rendered_body)->contains(''); - } - function testRemovesOpenTrackingTagWhenPreviewIsEnabledAndNewsletterWasSent() { $queue = $this->queue; $queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking; @@ -193,4 +179,4 @@ class ViewInBrowserTest extends \MailPoetTest { \ORM::raw_execute('TRUNCATE ' . Subscriber::$_table); \ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table); } -} \ No newline at end of file +}