public function testMakeFormAndSetConfigurationFromForm() { $form = ZurmoSystemConfigurationFormAdapter::makeFormFromSystemConfiguration(); $this->assertEquals(AutoresponderOrCampaignBatchSizeConfigUtil::CONFIG_DEFAULT_VALUE, $form->autoresponderOrCampaignBatchSize); $this->assertEquals(AutoresponderOrCampaignBatchSizeConfigUtil::getBatchSize(), $form->autoresponderOrCampaignBatchSize); $this->assertEquals(OutboundEmailBatchSizeConfigUtil::getBatchSize(), $form->outboundEmailBatchSize); $this->assertEquals(ZurmoSystemConfigurationUtil::getBatchSize(), $form->listPageSizeMaxLimit); //User is not root so he cant change batch size $form->autoresponderOrCampaignBatchSize = 20; $form->outboundEmailBatchSize = 30; $form->listPageSizeMaxLimit = 10; ZurmoSystemConfigurationFormAdapter::setConfigurationFromForm($form); $form = ZurmoSystemConfigurationFormAdapter::makeFormFromSystemConfiguration(); $this->assertEquals(AutoresponderOrCampaignBatchSizeConfigUtil::CONFIG_DEFAULT_VALUE, $form->autoresponderOrCampaignBatchSize); $this->assertEquals(OutboundEmailBatchSizeConfigUtil::getBatchSize(), $form->outboundEmailBatchSize); $this->assertEquals(ZurmoSystemConfigurationUtil::getBatchSize(), $form->listPageSizeMaxLimit); //User is root so he can change batch size $super = User::getByUsername('super'); $super->setIsRootUser(); Yii::app()->user->userModel = $super; $form->autoresponderOrCampaignBatchSize = 20; $form->outboundEmailBatchSize = 30; $form->listPageSizeMaxLimit = 10; ZurmoSystemConfigurationFormAdapter::setConfigurationFromForm($form); $form = ZurmoSystemConfigurationFormAdapter::makeFormFromSystemConfiguration(); $this->assertEquals(20, $form->autoresponderOrCampaignBatchSize); $this->assertEquals(30, $form->outboundEmailBatchSize); $this->assertEquals(10, $form->listPageSizeMaxLimit); }
/** * Given a SystemConfigurationForm, save the system configuration global values. */ public static function setConfigurationFromForm(ZurmoSystemConfigurationForm $form) { if (Yii::app()->user->userModel->isRootUser) { AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize((int) $form->autoresponderOrCampaignBatchSize); OutboundEmailBatchSizeConfigUtil::setBatchSize((int) $form->outboundEmailBatchSize); ZurmoSystemConfigurationUtil::setBatchSize((int) $form->listPageSizeMaxLimit); } }
/** * @depends testGetBatchSizeReturnsNullFirstAndDefaultWithSetOnMissing */ public function testSetBatchSize() { $size = AutoresponderOrCampaignBatchSizeConfigUtil::getBatchSize(false, false); $this->assertNotNull($size); $this->assertEquals(AutoresponderOrCampaignBatchSizeConfigUtil::CONFIG_DEFAULT_VALUE, $size); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(7); $size = AutoresponderOrCampaignBatchSizeConfigUtil::getBatchSize(false, false); $this->assertNotNull($size); $this->assertEquals(7, $size); }
/** * Given a ZurmoConfigurationForm, save the configuration global values. */ public static function setConfigurationFromForm(ZurmoConfigurationForm $form) { ZurmoConfigurationUtil::setByModuleName('ZurmoModule', 'applicationName', $form->applicationName); Yii::app()->timeZoneHelper->setGlobalValue((string) $form->timeZone); Yii::app()->pagination->setGlobalValueByType('listPageSize', (int) $form->listPageSize); Yii::app()->pagination->setGlobalValueByType('subListPageSize', (int) $form->subListPageSize); Yii::app()->pagination->setGlobalValueByType('modalListPageSize', (int) $form->modalListPageSize); Yii::app()->pagination->setGlobalValueByType('dashboardListPageSize', (int) $form->dashboardListPageSize); ZurmoConfigurationUtil::setByModuleName('ZurmoModule', 'gamificationModalNotificationsEnabled', (bool) $form->gamificationModalNotificationsEnabled); ZurmoConfigurationUtil::setByModuleName('ZurmoModule', 'realtimeUpdatesEnabled', (bool) $form->realtimeUpdatesEnabled); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize((int) $form->autoresponderOrCampaignBatchSize); UnsubscribeAndManageSubscriptionsPlaceholderUtil::setContentByType($form->autoresponderOrCampaignFooterPlainText, false); UnsubscribeAndManageSubscriptionsPlaceholderUtil::setContentByType($form->autoresponderOrCampaignFooterRichText, true); self::setLogoAttributes($form); }
/** * @depends testRunWithCampaignWithProcessingStatusAndProcessedItems */ public function testRunWithCustomBatchSize() { Campaign::deleteAll(); $contact = ContactTestHelper::createContactByNameForOwner('contact 03', $this->user); $marketingList = MarketingListTestHelper::populateMarketingListByName('marketingList 04'); $campaign01 = CampaignTestHelper::createCampaign('campaign 01', 'subject', 'text Content', 'Html Content', null, null, null, Campaign::STATUS_PROCESSING, null, null, $marketingList); $this->assertNotNull($campaign01); $campaign01Id = $campaign01->id; CampaignItemTestHelper::createCampaignItem(1, $campaign01, $contact); $campaign02 = CampaignTestHelper::createCampaign('campaign 02', 'subject', 'text Content', 'Html Content', null, null, null, Campaign::STATUS_PROCESSING, null, null, $marketingList); $this->assertNotNull($campaign02); $campaign02Id = $campaign02->id; CampaignItemTestHelper::createCampaignItem(1, $campaign02, $contact); $campaign03 = CampaignTestHelper::createCampaign('campaign 03', 'subject', 'text Content', 'Html Content', null, null, null, Campaign::STATUS_PROCESSING, null, null, $marketingList); $this->assertNotNull($campaign03); $campaign03Id = $campaign03->id; $campaign01->forgetAll(); $campaign02->forgetAll(); $campaign03->forgetAll(); $job = new CampaignMarkCompletedJob(); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(1); $this->assertTrue($job->run()); $campaign01 = Campaign::getById($campaign01Id); $this->assertNotNull($campaign01); $this->assertEquals(Campaign::STATUS_COMPLETED, $campaign01->status); $campaign02 = Campaign::getById($campaign02Id); $this->assertNotNull($campaign02); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign02->status); $campaign03 = Campaign::getById($campaign03Id); $this->assertNotNull($campaign03); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign03->status); $campaign01->forgetAll(); $campaign02->forgetAll(); $campaign03->forgetAll(); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(null); $this->assertTrue($job->run()); $campaign01 = Campaign::getById($campaign01Id); $this->assertNotNull($campaign01); $this->assertEquals(Campaign::STATUS_COMPLETED, $campaign01->status); $campaign02 = Campaign::getById($campaign02Id); $this->assertNotNull($campaign02); $this->assertEquals(Campaign::STATUS_COMPLETED, $campaign02->status); $campaign03 = Campaign::getById($campaign03Id); $this->assertNotNull($campaign03); $this->assertEquals(Campaign::STATUS_COMPLETED, $campaign03->status); }
protected function resolveBatchSize() { return AutoresponderOrCampaignBatchSizeConfigUtil::getBatchSize(); }
/** * @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. }
public function generateAndProcessCampaignItems($count) { $contacts = array(); $emails = array(); for ($i = 0; $i < $count; $i++) { $emails[$i] = new Email(); $emails[$i]->emailAddress = "demo{$i}@zurmo.com"; $account = AccountTestHelper::createAccountByNameForOwner('account ' . $i, $this->user); $contact = ContactTestHelper::createContactWithAccountByNameForOwner('contact ' . $i, $this->user, $account); $contact->primaryEmail = $emails[$i]; $this->assertTrue($contact->save()); $contacts[$i] = $contact; } $content = <<<MTG [[COMPANY^NAME]] [[CREATED^DATE^TIME]] [[DEPARTMENT]] [[DESCRIPTION]] [[FIRST^NAME]] [[GOOGLE^WEB^TRACKING^ID]] [[INDUSTRY]] [[JOB^TITLE]] [[LAST^NAME]] [[LATEST^ACTIVITY^DATE^TIME]] [[MOBILE^PHONE]] [[MODIFIED^DATE^TIME]] [[OFFICE^FAX]] [[OFFICE^PHONE]] [[TITLE]] [[SOURCE]] [[STATE]] [[WEBSITE]] [[MODEL^URL]] [[BASE^URL]] [[APPLICATION^NAME]] [[CURRENT^YEAR]] [[LAST^YEAR]] [[OWNERS^AVATAR^SMALL]] [[OWNERS^AVATAR^MEDIUM]] [[OWNERS^AVATAR^LARGE]] [[OWNERS^EMAIL^SIGNATURE]] [[UNSUBSCRIBE^URL]] [[MANAGE^SUBSCRIPTIONS^URL]] [[PRIMARY^EMAIL__EMAIL^ADDRESS]] [[PRIMARY^EMAIL__EMAIL^ADDRESS]] [[SECONDARY^ADDRESS__CITY]] [[SECONDARY^ADDRESS__COUNTRY]] [[SECONDARY^ADDRESS__INVALID]] [[SECONDARY^ADDRESS__LATITUDE]] [[SECONDARY^ADDRESS__LONGITUDE]] [[SECONDARY^ADDRESS__POSTAL^CODE]] [[SECONDARY^ADDRESS__STATE]] [[SECONDARY^ADDRESS__STREET1]] [[SECONDARY^ADDRESS__STREET2]] [[OWNER__DEPARTMENT]] [[OWNER__FIRST^NAME]] [[OWNER__IS^ACTIVE]] [[OWNER__MOBILE^PHONE]] [[OWNER__LAST^LOGIN^DATE^TIME]] [[OWNER__LAST^NAME]] [[CREATED^BY^USER__FIRST^NAME]] [[CREATED^BY^USER__LAST^NAME]] [[CREATED^BY^USER__MOBILE^PHONE]] [[CREATED^BY^USER__TITLE]] [[CREATED^BY^USER__USERNAME]] [[ACCOUNT__ANNUAL^REVENUE]] [[ACCOUNT__INDUSTRY]] [[ACCOUNT__NAME]] [[ACCOUNT__WEBSITE]] [[ACCOUNT__BILLING^ADDRESS__COUNTRY]] [[ACCOUNT__BILLING^ADDRESS__CITY]] [[ACCOUNT__OWNER__FIRST^NAME]] ' " ` " ' MTG; $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList Test', 'description goes here', 'fromName', '*****@*****.**'); $campaign = CampaignTestHelper::createCampaign('campaign Test', 'subject', $content, $content, null, null, null, Campaign::STATUS_PROCESSING, null, null, $marketingList, false); $fileNames = array('testImage.png', 'testZip.zip', 'testPDF.pdf'); $files = array(); foreach ($fileNames as $index => $fileName) { $file = ZurmoTestHelper::createFileModel($fileName); $files[$index]['name'] = $fileName; $files[$index]['type'] = $file->type; $files[$index]['size'] = $file->size; $files[$index]['contents'] = $file->fileContent->content; $campaign->files->add($file); } $this->assertTrue($campaign->save(false)); $processed = 0; foreach ($contacts as $contact) { MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact); CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact); } AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize($count); Yii::app()->jobQueue->deleteAll(); ForgetAllCacheUtil::forgetAllCaches(); $job = new CampaignQueueMessagesInOutboxJob(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); $startedAt = microtime(true); $this->assertTrue($job->run()); $timeTaken = microtime(true) - $startedAt; ForgetAllCacheUtil::forgetAllCaches(); $campaignItemsCountExpected = $count; $campaignItemsCountAfter = CampaignItem::getCount(); $this->assertEquals($campaignItemsCountExpected, $campaignItemsCountAfter); $campaignItemsProcessed = CampaignItem::getByProcessedAndCampaignId(1, $campaign->id); $this->assertCount($count, $campaignItemsProcessed); foreach ($campaignItemsProcessed as $i => $campaignItem) { $contact = $contacts[$i]; $email = $emails[$i]; $emailMessage = $campaignItem->emailMessage; $this->assertEquals($marketingList->owner->id, $emailMessage->owner->id); $marketingListPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($marketingList); $emailMessagePermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($emailMessage); $this->assertEquals($marketingListPermissions, $emailMessagePermissions); $this->assertEquals($campaign->subject, $emailMessage->subject); $this->assertNotEquals($campaign->textContent, $emailMessage->content->textContent); $this->assertNotEquals($campaign->htmlContent, $emailMessage->content->htmlContent); $this->assertEquals(2, substr_count($emailMessage->content->textContent, '/marketingLists/external/')); $this->assertContains('/marketingLists/external/', $emailMessage->content->htmlContent); $this->assertEquals(2, substr_count($emailMessage->content->htmlContent, '/marketingLists/external/')); $this->assertEquals('*****@*****.**', $emailMessage->sender->fromAddress); $this->assertEquals('Support Team', $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->assertNotEmpty($emailMessage->files); $this->assertCount(count($files), $emailMessage->files); foreach ($campaign->files as $index => $file) { $this->assertEquals($file->name, $emailMessage->files[$index]->name); $this->assertEquals($file->type, $emailMessage->files[$index]->type); $this->assertEquals($file->size, $emailMessage->files[$index]->size); //CampaingItem should share the Attachments content from Campaign $this->assertEquals($file->fileContent->content, $emailMessage->files[$index]->fileContent->content); $this->assertEquals($file->fileContent->id, $emailMessage->files[$index]->fileContent->id); } $headersArray = array('zurmoItemId' => $campaignItem->id, 'zurmoItemClass' => get_class($campaignItem), 'zurmoPersonId' => $contact->getClassId('Person')); $expectedHeaders = serialize($headersArray); $this->assertEquals($expectedHeaders, $emailMessage->headers); } return $timeTaken; }
/** * @depends testRunWithValidMergeTags */ public function testRunWithCustomBatchSize() { $unprocessedItems = CampaignItem::getByProcessed(0); $this->assertCount(1, $unprocessedItems); $job = new CampaignQueueMessagesInOutboxJob(); $email = new Email(); $email->emailAddress = '*****@*****.**'; $contact = ContactTestHelper::createContactByNameForOwner('contact 06', $this->user); $contact->primaryEmail = $email; $this->assertTrue($contact->save()); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 07', 'description goes here', 'fromName', '*****@*****.**'); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact); $campaign = CampaignTestHelper::createCampaign('campaign 07', 'subject', '[[FIRST^NAME]]', '[[LAST^NAME]]', null, null, null, Campaign::STATUS_PROCESSING, null, null, $marketingList); for ($i = 0; $i < 10; $i++) { $processed = 0; CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact); } $unprocessedItems = CampaignItem::getByProcessedAndCampaignId(0, $campaign->id); $this->assertCount(10, $unprocessedItems); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(5); Yii::app()->jobQueue->deleteAll(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); $this->assertTrue($job->run()); $unprocessedItems = CampaignItem::getByProcessedAndCampaignId(0, $campaign->id); $this->assertCount(5, $unprocessedItems); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(2, $jobs); $this->assertEquals('ProcessOutboundEmail', $jobs[0][0]['jobType']); $this->assertEquals('CampaignQueueMessagesInOutbox', $jobs[5][0]['jobType']); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(3); $this->assertTrue($job->run()); $unprocessedItems = CampaignItem::getByProcessedAndCampaignId(0, $campaign->id); $this->assertCount(2, $unprocessedItems); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(2, $jobs); $this->assertEquals('ProcessOutboundEmail', $jobs[0][0]['jobType']); $this->assertEquals('CampaignQueueMessagesInOutbox', $jobs[5][0]['jobType']); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(10); Yii::app()->jobQueue->deleteAll(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); $this->assertTrue($job->run()); $unprocessedItems = CampaignItem::getByProcessedAndCampaignId(0, $campaign->id); $this->assertCount(0, $unprocessedItems); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(2, $jobs); $this->assertCount(1, $jobs[5]); $this->assertEquals('CampaignMarkCompleted', $jobs[5][0]['jobType']); }
/** * @depends testRunWithValidMergeTags */ public function testRunWithCustomBatchSize() { $unprocessedItems = AutoresponderItem::getByProcessed(0); $this->assertEmpty($unprocessedItems); $job = new AutoresponderQueueMessagesInOutboxJob(); $email = new Email(); $email->emailAddress = '*****@*****.**'; $contact = ContactTestHelper::createContactByNameForOwner('contact 06', $this->user); $contact->primaryEmail = $email; $this->assertTrue($contact->save()); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 07', 'description goes here', 'fromName', '*****@*****.**'); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact); $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 07', '[[FIRST^NAME]]', '[[LAST^NAME]]', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList); for ($i = 0; $i < 10; $i++) { $processed = 0; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - rand(10, 500)); AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact); } $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id); $this->assertCount(10, $unprocessedItems); Yii::app()->jobQueue->deleteAll(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(5); $this->assertTrue($job->run()); $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id); $this->assertCount(5, $unprocessedItems); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(2, $jobs); $this->assertEquals('ProcessOutboundEmail', $jobs[0][0]['jobType']); $this->assertEquals('AutoresponderQueueMessagesInOutbox', $jobs[5][0]['jobType']); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(3); $this->assertTrue($job->run()); $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id); $this->assertCount(2, $unprocessedItems); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(10); Yii::app()->jobQueue->deleteAll(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); $this->assertTrue($job->run()); $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id); $this->assertCount(0, $unprocessedItems); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(1, $jobs); $this->assertEquals('ProcessOutboundEmail', $jobs[0][0]['jobType']); }
public function generateCampaignItemsForDueCampaigns($count) { $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList Test', 'description goes here', 'fromName', '*****@*****.**'); $marketingListId = $marketingList->id; $contacts = array(); $emails = array(); for ($i = 0; $i < $count; $i++) { $emails[$i] = new Email(); $emails[$i]->emailAddress = "demo{$i}@zurmo.com"; $account = AccountTestHelper::createAccountByNameForOwner('account ' . $i, $this->user); $contact = ContactTestHelper::createContactWithAccountByNameForOwner('contact ' . $i, $this->user, $account); $contact->primaryEmail = $emails[$i]; $this->assertTrue($contact->save()); $contacts[$i] = $contact; MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact); } $marketingList->forgetAll(); $marketingList = MarketingList::getById($marketingListId); $content = <<<MTG [[COMPANY^NAME]] [[CREATED^DATE^TIME]] [[DEPARTMENT]] [[DESCRIPTION]] [[FIRST^NAME]] [[GOOGLE^WEB^TRACKING^ID]] [[INDUSTRY]] [[JOB^TITLE]] [[LAST^NAME]] [[LATEST^ACTIVITY^DATE^TIME]] [[MOBILE^PHONE]] [[MODIFIED^DATE^TIME]] [[OFFICE^FAX]] [[OFFICE^PHONE]] [[TITLE]] [[SOURCE]] [[STATE]] [[WEBSITE]] [[MODEL^URL]] [[BASE^URL]] [[APPLICATION^NAME]] [[CURRENT^YEAR]] [[LAST^YEAR]] [[OWNERS^AVATAR^SMALL]] [[OWNERS^AVATAR^MEDIUM]] [[OWNERS^AVATAR^LARGE]] [[OWNERS^EMAIL^SIGNATURE]] [[UNSUBSCRIBE^URL]] [[MANAGE^SUBSCRIPTIONS^URL]] [[PRIMARY^EMAIL__EMAIL^ADDRESS]] [[PRIMARY^EMAIL__EMAIL^ADDRESS]] [[SECONDARY^ADDRESS__CITY]] [[SECONDARY^ADDRESS__COUNTRY]] [[SECONDARY^ADDRESS__INVALID]] [[SECONDARY^ADDRESS__LATITUDE]] [[SECONDARY^ADDRESS__LONGITUDE]] [[SECONDARY^ADDRESS__POSTAL^CODE]] [[SECONDARY^ADDRESS__STATE]] [[SECONDARY^ADDRESS__STREET1]] [[SECONDARY^ADDRESS__STREET2]] [[OWNER__DEPARTMENT]] [[OWNER__FIRST^NAME]] [[OWNER__IS^ACTIVE]] [[OWNER__MOBILE^PHONE]] [[OWNER__LAST^LOGIN^DATE^TIME]] [[OWNER__LAST^NAME]] [[CREATED^BY^USER__FIRST^NAME]] [[CREATED^BY^USER__LAST^NAME]] [[CREATED^BY^USER__MOBILE^PHONE]] [[CREATED^BY^USER__TITLE]] [[CREATED^BY^USER__USERNAME]] [[ACCOUNT__ANNUAL^REVENUE]] [[ACCOUNT__INDUSTRY]] [[ACCOUNT__NAME]] [[ACCOUNT__WEBSITE]] [[ACCOUNT__BILLING^ADDRESS__COUNTRY]] [[ACCOUNT__BILLING^ADDRESS__CITY]] [[ACCOUNT__OWNER__FIRST^NAME]] ' " ` " ' MTG; $sendOnDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 600); $campaign = CampaignTestHelper::createCampaign('campaign Test', 'subject', $content, $content, null, null, null, Campaign::STATUS_ACTIVE, $sendOnDateTime, null, $marketingList, false); $fileNames = array('testImage.png', 'testZip.zip', 'testPDF.pdf'); $files = array(); foreach ($fileNames as $index => $fileName) { $file = ZurmoTestHelper::createFileModel($fileName); $files[$index]['name'] = $fileName; $files[$index]['type'] = $file->type; $files[$index]['size'] = $file->size; $files[$index]['contents'] = $file->fileContent->content; $campaign->files->add($file); } $this->assertTrue($campaign->save(false)); $campaignId = $campaign->id; $campaign->forgetAll(); $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId); $this->assertEmpty($campaignItems); //Process open campaigns. Yii::app()->jobQueue->deleteAll(); AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize($count); Yii::app()->jobQueue->deleteAll(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); ForgetAllCacheUtil::forgetAllCaches(); $job = new CampaignGenerateDueCampaignItemsJob(); $startedAt = microtime(true); $this->assertTrue($job->run()); $timeTaken = microtime(true) - $startedAt; ForgetAllCacheUtil::forgetAllCaches(); $campaign->forgetAll(); unset($campaign); $campaign = Campaign::getById($campaignId); $this->assertNotNull($campaign); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId); $this->assertNotEmpty($campaignItems); $this->assertCount($count, $campaignItems); return $timeTaken; }