'http://example.com', 'hash' => 'some_hash', ], ]; $newsletter = (object)['id' => 1]; $queue = (object)['id' => 2]; $result = Links::saveLinks($links, $newsletter, $queue); $newsletterLink = NewsletterLink::where('hash', $links[0]['hash']) ->findOne(); expect($newsletterLink->newsletterId)->equals($newsletter->id); expect($newsletterLink->queueId)->equals($queue->id); expect($newsletterLink->url)->equals($links[0]['link']); } public function testItCanHashAndReplaceLinks() { $renderedNewsletter = [ 'html' => 'Example Link', 'text' => 'Example Link', ]; $result = Links::hashAndReplaceLinks($renderedNewsletter, 0, 0); $processedRenderedNewsletterBody = $result[0]; $processedAndHashedLinks = $result[1]; expect($processedRenderedNewsletterBody['html']) ->contains($processedAndHashedLinks[0]['hash']); expect($processedRenderedNewsletterBody['text']) ->contains($processedAndHashedLinks[0]['hash']); expect($processedAndHashedLinks[0]['link'])->equals('http://example.com'); } public function testItCanProcessRenderedBody() { $newsletter = Newsletter::create(); $newsletter->type = Newsletter::TYPE_STANDARD; $newsletter->save(); $renderedNewsletter = [ 'html' => 'Example Link', 'text' => 'Example Link', ]; $queue = (object)['id' => 2]; $result = Links::process($renderedNewsletter, $newsletter, $queue); $newsletterLink = NewsletterLink::where('newsletter_id', $newsletter->id) ->findOne(); expect($result['html'])->contains($newsletterLink->hash); } public function testItCanEnsureThatInstantUnsubscribeLinkIsAlwaysPresent() { $newsletter = Newsletter::create(); $newsletter->type = Newsletter::TYPE_STANDARD; $newsletter->save(); $renderedNewsletter = [ 'html' => 'Example Link', 'text' => 'Example Link', ]; $queue = (object)['id' => 2]; Links::process($renderedNewsletter, $newsletter, $queue); $unsubscribeCount = NewsletterLink::where('newsletter_id', $newsletter->id) ->where('url', NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE)->count(); expect($unsubscribeCount)->equals(1); } public function _after() { ORM::raw_execute('TRUNCATE ' . Newsletter::$_table); ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table); } }