/** * @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(); }
/** * @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. }