internalHost = 'newsletters.mailpoet.com'; $this->gaCampaign = 'Spring email'; $this->link = add_query_arg(['foo' => 'bar', 'baz' => 'xyz'], 'http://www.mailpoet.com/'); $this->renderedNewsletter = [ 'html' => '

Click here. Do not process this [link:some_link_shortcode]

', 'text' => '[Click here](' . $this->link . '). [Do not process this](http://somehost.com/fff/?abc=123&email=[subscriber:email]) [link:some_link_shortcode]', ]; } public function testItConditionallyAppliesGATracking() { // No process (empty GA campaign) $newsletter = Newsletter::createOrUpdate(['id' => 123]); $tracking = new GATracking(); $result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost); expect($result)->equals($this->renderedNewsletter); // Process (filled GA campaign) $newsletter->gaCampaign = $this->gaCampaign; $newsletter->save(); $result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost); expect($result)->notEquals($this->renderedNewsletter); } public function testItGetsGACampaignFromParentNewsletterForPostNotifications() { $tracking = new GATracking(); $notification = Newsletter::create(); $notification->hydrate([ 'type' => Newsletter::TYPE_NOTIFICATION, 'ga_campaign' => $this->gaCampaign, ]); $notification->save(); $notificationHistory = Newsletter::create(); $notificationHistory->hydrate([ 'parent_id' => $notification->id, 'type' => Newsletter::TYPE_NOTIFICATION_HISTORY, ]); $notificationHistory->save(); $result = $tracking->applyGATracking($this->renderedNewsletter, $notificationHistory, $this->internalHost); expect($result)->notEquals($this->renderedNewsletter); } public function testItCanAddGAParamsToLinks() { $tracking = new GATracking(); $newsletter = Newsletter::createOrUpdate([ 'ga_campaign' => $this->gaCampaign, ]); $result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost); expect($result['text'])->contains('utm_campaign=' . urlencode($this->gaCampaign)); expect($result['html'])->contains('utm_campaign=' . urlencode($this->gaCampaign)); } public function testItKeepsShorcodes() { $tracking = new GATracking(); $newsletter = Newsletter::createOrUpdate([ 'ga_campaign' => $this->gaCampaign, ]); $result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost); expect($result['text'])->contains('email=[subscriber:email]'); expect($result['html'])->contains('email=[subscriber:email]'); } public function _after() { ORM::raw_execute('TRUNCATE ' . Newsletter::$_table); } }