/**
  * @see BaseJob::run()
  */
 public function run()
 {
     // we need either this or need to call forget() on each campaign we are processing inside tests
     Campaign::forgetAll();
     $util = new CampaignItemsUtil();
     return $util->generateCampaignItemsForDueCampaigns();
 }
 public function testProcessDueCampaignItemContactUnsubscribed()
 {
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $email->optOut = false;
     $contact = ContactTestHelper::createContactByNameForOwner('contact 17', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 17', 'description', 'CustomFromName', '*****@*****.**');
     MarketingListMemberTestHelper::createMarketingListMember(true, $marketingList, $contact);
     $campaign = CampaignTestHelper::createCampaign('campaign 17', 'subject 17', 'Dear. Sir', 'Dear. Sir', null, null, null, null, null, null, $marketingList);
     $processed = 0;
     $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact);
     CampaignItemsUtil::processDueItem($campaignItem);
     $this->assertEquals(1, $campaignItem->processed);
     $personId = $contact->getClassId('Person');
     $activities = CampaignItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(CampaignItemActivity::TYPE_SKIP, $campaignItem->id, $personId);
     $this->assertNotEmpty($activities);
     $this->assertCount(1, $activities);
 }
 protected function processCampaignItemInQueue(CampaignItem $campaignItem)
 {
     CampaignItemsUtil::processDueItem($campaignItem);
 }
 /**
  * @see BaseJob::run()
  */
 public function run()
 {
     return CampaignItemsUtil::generateCampaignItemsForDueCampaigns();
 }
Example #5
0
 /**
  * @depends testIsSent
  */
 public function testHasFailedToSend()
 {
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 09');
     $campaign = CampaignTestHelper::createCampaign('campaign 08', 'subject 08', 'text 08', 'html 08', null, null, null, null, null, null, $marketingList);
     $this->assertNotNull($campaign);
     $contact = ContactTestHelper::createContactByNameForOwner('campaignContact 09', Yii::app()->user->userModel);
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $campaignItem = CampaignItemTestHelper::createCampaignItem(0, $campaign, $contact);
     $this->assertNotNull($campaignItem);
     $this->assertFalse($campaignItem->hasFailedToSend());
     CampaignItemsUtil::processDueItem($campaignItem);
     $this->assertFalse($campaignItem->hasFailedToSend());
     // Folder is outbox at the end of processDueItem and hence it fails
     $box = EmailBox::resolveAndGetByName(EmailBox::CAMPAIGNS_NAME);
     $campaignItem->emailMessage->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_OUTBOX_FAILURE);
     $this->assertTrue($campaignItem->unrestrictedSave());
     $this->assertTrue($campaignItem->hasFailedToSend());
 }
 protected function processCampaignItemInQueue(CampaignItem $campaignItem)
 {
     $util = new CampaignItemsUtil();
     $util->processDueItem($campaignItem);
 }
 /**
  * @depends testProcessDueCampaignItemWithAttachments
  */
 public function testGenerateCampaignItemsForDueCampaigns()
 {
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 07');
     $marketingListId = $marketingList->id;
     for ($i = 0; $i < 5; $i++) {
         $contact = ContactTestHelper::createContactByNameForOwner('campaignContact ' . $i, $this->user);
         MarketingListMemberTestHelper::createMarketingListMember($i % 2, $marketingList, $contact);
     }
     $marketingList->forgetAll();
     $marketingList = MarketingList::getById($marketingListId);
     $campaign = CampaignTestHelper::createCampaign('campaign 07', 'subject 07', 'text 07', 'html 07', null, null, null, null, null, null, $marketingList);
     $this->assertNotNull($campaign);
     $campaign->forgetAll();
     $campaignId = $campaign->id;
     $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId);
     $this->assertEmpty($campaignItems);
     //Process open campaigns.
     Yii::app()->jobQueue->deleteAll();
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
     $util = new CampaignItemsUtil();
     $this->assertTrue($util->generateCampaignItemsForDueCampaigns());
     $jobs = Yii::app()->jobQueue->getAll();
     $this->assertCount(1, $jobs);
     $this->assertEquals('CampaignQueueMessagesInOutbox', $jobs[5][0]['jobType']);
     $campaign = Campaign::getById($campaignId);
     $this->assertNotNull($campaign);
     $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status);
     $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId);
     $this->assertNotEmpty($campaignItems);
     $this->assertCount(5, $campaignItems);
     // TODO: @Shoaibi: Low: Add tests for the other campaign type.
 }