protected function processAutoresponderItemInQueue(AutoresponderItem $autoresponderItem)
 {
     $util = new AutoresponderItemsUtil();
     $util->processDueItem($autoresponderItem);
 }
 protected function processAutoresponderItemInQueue(AutoresponderItem $autoresponderItem)
 {
     AutoresponderItemsUtil::processDueItem($autoresponderItem);
 }
 /**
  * @depends testProcessDueAutoresponderItemWithCustomFromAddressAndFromName
  */
 public function testProcessDueAutoresponderItemWithValidMergeTags()
 {
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact = ContactTestHelper::createContactByNameForOwner('contact 05', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 05', 'description', 'CustomFromName', '*****@*****.**');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('autoresponder 05', 'subject 05', 'Dr. [[FIRST^NAME]] [[LAST^NAME]]', '<b>[[LAST^NAME]]</b>, [[FIRST^NAME]]', 1, Autoresponder::OPERATION_SUBSCRIBE, $marketingList);
     $processed = AutoresponderItem::NOT_PROCESSED;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     AutoresponderItemsUtil::processDueAutoresponderItem($autoresponderItem);
     $this->assertEquals(AutoresponderItem::PROCESSED, $autoresponderItem->processed);
     $emailMessage = $autoresponderItem->emailMessage;
     $this->assertEquals($marketingList->owner, $emailMessage->owner);
     $this->assertEquals($autoresponder->subject, $emailMessage->subject);
     $this->assertNotEquals($autoresponder->textContent, $emailMessage->content->textContent);
     $this->assertNotEquals($autoresponder->htmlContent, $emailMessage->content->htmlContent);
     $this->assertEquals('Dr. contact 05 contact 05son', $emailMessage->content->textContent);
     $this->assertEquals('<b>contact 05son</b>, contact 05', $emailMessage->content->htmlContent);
     $this->assertEquals($marketingList->fromAddress, $emailMessage->sender->fromAddress);
     $this->assertEquals($marketingList->fromName, $emailMessage->sender->fromName);
     $this->assertEquals(1, $emailMessage->recipients->count());
     $recipients = $emailMessage->recipients;
     $this->assertEquals(strval($contact), $recipients[0]->toName);
     $this->assertEquals($email->emailAddress, $recipients[0]->toAddress);
     $this->assertEquals(EmailMessageRecipient::TYPE_TO, $recipients[0]->type);
     $this->assertEquals($contact, $recipients[0]->personOrAccount);
 }
 /**
  * @depends testProcessDueAutoresponderItemWithUnsubscribeAndManageSubscriptionsUrlMergeTags
  */
 public function testProcessDueAutoresponderItemWithoutUnsubscribeAndManageSubscriptionsUrlMergeTags()
 {
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact = ContactTestHelper::createContactByNameForOwner('contact 13', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 13', 'description', 'CustomFromName', '*****@*****.**');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 13', 'Plain Text', 'HTML', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList);
     $processed = 0;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     AutoresponderItemsUtil::processDueItem($autoresponderItem);
     $this->assertEquals(1, $autoresponderItem->processed);
     $textContent = $autoresponderItem->emailMessage->content->textContent;
     $htmlContent = $autoresponderItem->emailMessage->content->htmlContent;
     $this->assertNotEquals($autoresponder->textContent, $textContent);
     $this->assertNotEquals($autoresponder->htmlContent, $htmlContent);
     $this->assertTrue(strpos($textContent, 'Plain Text') !== false);
     $this->assertTrue(strpos($textContent, '/marketingLists/external/unsubscribe?hash=') !== false);
     $this->assertEquals(1, substr_count($textContent, '/marketingLists/external/unsubscribe?hash='));
     $this->assertTrue(strpos($textContent, '/marketingLists/external/manageSubscriptions?hash=') !== false);
     $this->assertEquals(1, substr_count($textContent, '/marketingLists/external/manageSubscriptions?hash='));
     $this->assertTrue(strpos($htmlContent, 'HTML<br /><img width="1" height="1" src="localhost') !== false);
     $this->assertTrue(strpos($htmlContent, '/tracking/default/track?id=') !== false);
     $this->assertEquals(1, substr_count($htmlContent, '/tracking/default/track?id='));
     $this->assertTrue(strpos($htmlContent, '/marketingLists/external/unsubscribe?hash=') !== false);
     $this->assertEquals(1, substr_count($htmlContent, '/marketingLists/external/unsubscribe?hash='));
     $this->assertTrue(strpos($htmlContent, '">Unsubscribe</a><br /><a href="localhost') !== false);
     $this->assertEquals(1, substr_count($htmlContent, '">Unsubscribe</a><br /><a href="localhost'));
     $this->assertTrue(strpos($htmlContent, '/marketingLists/external/manageSubscriptions?hash=') !== false);
     $this->assertEquals(1, substr_count($htmlContent, '/marketingLists/external/manageSubscriptions?hash='));
     $this->assertTrue(strpos($htmlContent, '">Manage Subscriptions</a>') !== false);
     $this->assertEquals(1, substr_count($htmlContent, '">Manage Subscriptions</a>'));
 }
 public function testSkipMessage()
 {
     // Tests with Autoresponder
     $contact = ContactTestHelper::createContactByNameForOwner('contact 15', $this->user);
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 15');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 15', 'text content', 'html content', 1, Autoresponder::OPERATION_UNSUBSCRIBE, false, $marketingList);
     $autoresponderItemsUtil = new AutoresponderItemsUtil();
     // Test when the contact isn't in the marketing list at all, same as it was deleted
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is subscribed but the operation is OPERATION_UNSUBSCRIBE
     $marketingListMember = MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact);
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is unsubscribed, so skipMessage return false
     $marketingListMember->unsubscribed = true;
     $this->assertTrue($marketingListMember->unrestrictedSave());
     $this->assertFalse($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     $contact = ContactTestHelper::createContactByNameForOwner('contact 16', $this->user);
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 16');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 16', 'text content', 'html content', 1, Autoresponder::OPERATION_SUBSCRIBE, false, $marketingList);
     // Test when the contact isn't in the marketing list at all, same as it was deleted
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is unsubscribed but the operation is OPERATION_SUBSCRIBE
     $marketingListMember = MarketingListMemberTestHelper::createMarketingListMember(1, $marketingList, $contact);
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is subscribed, so skipMessage return false
     $marketingListMember->unsubscribed = false;
     $this->assertTrue($marketingListMember->unrestrictedSave());
     $this->assertFalse($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     //Tests with Campaign
     $contact = ContactTestHelper::createContactByNameForOwner('contact 17', $this->user);
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 17');
     $campaign = CampaignTestHelper::createCampaign('campaign 01', 'subject 01', 'text 01', 'html 01', null, null, null, null, null, null, $marketingList);
     $this->assertNotNull($campaign);
     // Test when the contact isn't in the marketing list at all, same as it was deleted
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $campaign));
     // Test when the contact is unsubscribed
     $marketingListMember = MarketingListMemberTestHelper::createMarketingListMember(1, $marketingList, $contact);
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $campaign));
     // Test when the contact is subscribed, so skipMessage return false
     $marketingListMember->unsubscribed = false;
     $this->assertTrue($marketingListMember->unrestrictedSave());
     $this->assertFalse($autoresponderItemsUtil->skipMessage($contact, $campaign));
 }