/** * @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(); }
/** * @depends testGenerateCampaignItemsForDueCampaigns */ public function testGenerateCampaignItemsForDueCampaignsWithCustomBatchSize() { $contactIds = array(); $marketingListIds = array(); $campaignIds = array(); for ($index = 6; $index < 9; $index++) { $contact = ContactTestHelper::createContactByNameForOwner('campaignContact 0' . $index, $this->user); $contactIds[] = $contact->id; $contact->forgetAll(); } for ($index = 8; $index < 12; $index++) { $suffix = $index; if ($index < 10) { $suffix = "0{$suffix}"; } $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList ' . $suffix); $marketingListId = $marketingList->id; $marketingListIds[] = $marketingListId; foreach ($contactIds as $contactId) { $contact = Contact::getById($contactId); $unsubscribed = rand(10, 20) % 2; MarketingListMemberTestHelper::createMarketingListMember($unsubscribed, $marketingList, $contact); } $marketingList->forgetAll(); $marketingList = MarketingList::getById($marketingListId); $campaignSuffix = substr($marketingList->name, -2); $campaign = CampaignTestHelper::createCampaign('campaign ' . $campaignSuffix, 'subject ' . $campaignSuffix, 'text ' . $campaignSuffix, 'html ' . $campaignSuffix, null, null, null, null, null, null, $marketingList); $this->assertNotNull($campaign); $campaignIds[] = $campaign->id; $campaign->forgetAll(); } foreach ($campaignIds as $campaignId) { $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId); $this->assertEmpty($campaignItems); } $this->assertTrue(CampaignItemsUtil::generateCampaignItemsForDueCampaigns(5)); foreach ($campaignIds as $index => $campaignId) { $campaign = Campaign::getById($campaignId); $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId); if ($index === 0) { $expectedCount = AutoresponderOrCampaignBatchSizeConfigUtil::getBatchSize(); $memberCount = count($campaign->marketingList->marketingListMembers); if ($memberCount < $expectedCount) { $expectedCount = $memberCount; } $this->assertNotEmpty($campaignItems); $this->assertCount($expectedCount, $campaignItems); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); } else { $this->assertEmpty($campaignItems); $this->assertEquals(Campaign::STATUS_ACTIVE, $campaign->status); } } $this->assertTrue(CampaignItemsUtil::generateCampaignItemsForDueCampaigns()); foreach ($campaignIds as $index => $campaignId) { $campaign = Campaign::getById($campaignId); $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId); if ($index < 2) { $expectedCount = AutoresponderOrCampaignBatchSizeConfigUtil::getBatchSize(); $memberCount = count($campaign->marketingList->marketingListMembers); if ($memberCount < $expectedCount) { $expectedCount = $memberCount; } $this->assertNotEmpty($campaignItems); $this->assertCount($expectedCount, $campaignItems); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); } else { $this->assertEmpty($campaignItems); $this->assertEquals(Campaign::STATUS_ACTIVE, $campaign->status); } } // TODO: @Shoaibi: Medium: Add tests for the other campaign type. }
/** * @see BaseJob::run() */ public function run() { return CampaignItemsUtil::generateCampaignItemsForDueCampaigns(); }
/** * @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. }