/**
  * @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();
 }
Exemplo n.º 2
0
 /**
  * @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.
 }