'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);
}
}