public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); SecurityTestHelper::createUsers(); // set up data owned by super Yii::app()->user->userModel = User::getByUsername('super'); $account1 = AccountTestHelper::createAccountByNameForOwner('account1', Yii::app()->user->userModel); $contact1 = ContactTestHelper::createContactWithAccountByNameForOwner('contact1', Yii::app()->user->userModel, $account1); $contact2 = ContactTestHelper::createContactWithAccountByNameForOwner('contact2', Yii::app()->user->userModel, $account1); $contact3 = ContactTestHelper::createContactWithAccountByNameForOwner('contact3', Yii::app()->user->userModel, $account1); $marketingList1 = MarketingListTestHelper::createMarketingListByName('MarketingList1'); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList1, $contact1); MarketingListMemberTestHelper::createMarketingListMember(1, $marketingList1, $contact2); $member1 = MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList1, $contact3); static::$superUserMarketingListId = $marketingList1->id; static::$superUserMemberId = $member1->id; // set up data owned by nobody Yii::app()->user->userModel = UserTestHelper::createBasicUser('nobody'); $account2 = AccountTestHelper::createAccountByNameForOwner('account2', Yii::app()->user->userModel); $contact4 = ContactTestHelper::createContactWithAccountByNameForOwner('contact4', Yii::app()->user->userModel, $account2); $contact5 = ContactTestHelper::createContactWithAccountByNameForOwner('contact5', Yii::app()->user->userModel, $account2); $contact6 = ContactTestHelper::createContactWithAccountByNameForOwner('contact6', Yii::app()->user->userModel, $account2); $marketingList2 = MarketingListTestHelper::createMarketingListByName('MarketingList2'); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList2, $contact4); $member2 = MarketingListMemberTestHelper::createMarketingListMember(1, $marketingList2, $contact5); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList2, $contact6); static::$regularUserMarketingListId = $marketingList2->id; static::$regularUserMemberId = $member2->id; ReadPermissionsOptimizationUtil::rebuild(); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $nobody = UserTestHelper::createBasicUser('nobody'); $nobody->setRight('MarketingListsModule', MarketingListsModule::getAccessRight()); $saved = $nobody->save(); static::assertTrue($saved); Yii::app()->user->userModel = $nobody; //Setup test data owned by the super user. $account = AccountTestHelper::createAccountByNameForOwner('nobodyAccount', $nobody); $marketingList1 = MarketingListTestHelper::createMarketingListByName('MarketingList1', 'MarketingList Description1'); $marketingList2 = MarketingListTestHelper::createMarketingListByName('MarketingList2', 'MarketingList Description2'); for ($i = 0; $i < 17; $i++) { if ($i % 2) { $unsubscribed = 0; } else { $unsubscribed = 1; } $contact1 = ContactTestHelper::createContactWithAccountByNameForOwner('nobodyContact1' . $i, $nobody, $account); $contact2 = ContactTestHelper::createContactWithAccountByNameForOwner('nobodyContact2' . $i, $nobody, $account); MarketingListMemberTestHelper::createMarketingListMember($unsubscribed, $marketingList1, $contact1); MarketingListMemberTestHelper::createMarketingListMember($unsubscribed, $marketingList2, $contact2); } AllPermissionsOptimizationUtil::rebuild(); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); SecurityTestHelper::createUsers(); $super = User::getByUsername('super'); $super->primaryEmail->emailAddress = '*****@*****.**'; $saved = $super->save(); if (!$saved) { throw new FailedToSaveModelException(); } MarketingListTestHelper::createMarketingListByName('testMarketingList'); $campaign = CampaignTestHelper::createCampaign('testCampaign', 'testSubject', 'testContent', 'testHtmlContent'); $contact = ContactTestHelper::createContactByNameForOwner('test', $super); $emailMessage = EmailMessageTestHelper::createArchivedUnmatchedSentMessage($super); $campaignItem = new CampaignItem(); $campaignItem->contact = $contact; $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->emailMessage = $emailMessage; $campaignItem->unrestrictedSave(); if (!$saved) { throw new FailedToSaveModelException(); } AllPermissionsOptimizationUtil::rebuild(); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); SecurityTestHelper::createUsers(); self::$marketingList = MarketingListTestHelper::createMarketingListByName('a new list'); }
public function setUp() { parent::setUp(); Yii::app()->user->userModel = User::getByUsername('super'); $emailBoxes = EmailBox::getAll(); $this->emailBox = $emailBoxes[0]; $this->marketingList = MarketingListTestHelper::createMarketingListByName('Test Marketing List'); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); SecurityTestHelper::createUsers(); // Delete item from jobQueue, that is created when new user is created Yii::app()->jobQueue->deleteAll(); self::$marketingList = MarketingListTestHelper::createMarketingListByName('a new list'); }
public function testRegularUserAllDefaultControllerActions() { $marketingList = MarketingListTestHelper::createMarketingListByName('MarketingListName 01', 'MarketingListDescription 01'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/index'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/list'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/create'); $this->setGetArray(array('id' => $marketingList->id)); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/edit'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/details'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/getInfoToCopyToCampaign'); $this->setGetArray(array('term' => 'inexistant')); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/autoComplete'); $this->setGetArray(array('modalTransferInformation' => array('sourceIdFieldId' => 'Campaign_marketingList_id', 'sourceNameFieldId' => 'Campaign_marketingList_name', 'modalId' => 'modalContainer-edit-form'))); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/modalList'); $this->resetGetArray(); $this->user->setRight('MarketingListsModule', MarketingListsModule::getAccessRight()); $this->assertTrue($this->user->save()); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/index'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/list'); $this->setGetArray(array('term' => 'inexistant')); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/autoComplete'); $this->setGetArray(array('id' => $marketingList->id)); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/getInfoToCopyToCampaign'); $this->setGetArray(array('modalTransferInformation' => array('sourceIdFieldId' => 'Campaign_marketingList_id', 'sourceNameFieldId' => 'Campaign_marketingList_name', 'modalId' => 'modalContainer-edit-form'))); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/modalList'); $this->setGetArray(array('id' => $marketingList->id)); $content = $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/details'); $this->assertContains('<p>To manage Marketing Lists you must have access to either contacts' . ' or leads. Contact the CRM administrator about this issue.</p>', $content); $this->resetGetArray(); $this->user->setRight('MarketingListsModule', MarketingListsModule::getCreateRight()); $this->assertTrue($this->user->save()); $content = $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/create'); $this->assertContains('<p>To manage Marketing Lists you must have access to either contacts' . ' or leads. Contact the CRM administrator about this issue.</p>', $content); $this->user->setRight('ContactsModule', ContactsModule::getAccessRight()); $this->user->setRight('LeadsModule', LeadsModule::getAccessRight()); $this->assertTrue($this->user->save()); $this->setGetArray(array('id' => $marketingList->id)); $content = $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/details'); $this->assertNotContains('<p>To manage Marketing Lists you must have access to either contacts' . ' or leads. Contact the CRM administrator about this issue.</p>', $content); $this->resetGetArray(); $this->user->setRight('MarketingListsModule', MarketingListsModule::getCreateRight()); $this->assertTrue($this->user->save()); $content = $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/create'); $this->assertNotContains('<p>To manage Marketing Lists you must have access to either contacts' . ' or leads. Contact the CRM administrator about this issue.</p>', $content); $this->setGetArray(array('id' => $marketingList->id)); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/edit'); $this->user->setRight('MarketingListsModule', MarketingListsModule::getDeleteRight()); $this->assertTrue($this->user->save()); $this->runControllerWithRedirectExceptionAndGetUrl('marketingLists/default/delete'); $this->setGetArray(array('id' => static::$listOwnedBySuper->id)); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/edit'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/details'); $this->runControllerShouldResultInAccessFailureAndGetContent('marketingLists/default/delete'); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; MarketingListTestHelper::createMarketingListByName('MarketingListName', 'MarketingList Description', 'first', '*****@*****.**'); MarketingListTestHelper::createMarketingListByName('MarketingListName2', 'MarketingList Description2', 'second', '*****@*****.**'); ReadPermissionsOptimizationUtil::rebuild(); }
public function setUp() { parent::setUp(); Yii::app()->user->userModel = User::getByUsername('super'); $emailBoxes = EmailBox::getAll(); $this->emailBox = $emailBoxes[0]; $this->marketingList = MarketingListTestHelper::createMarketingListByName('Test Marketing List'); $this->campaign = CampaignTestHelper::createCampaign('Test Campaing 01', 'text', 'text exemple'); $this->autoresponder = AutoresponderTestHelper::createAutoresponder('Test Autoresponder 01', 'text', 'html', 60, Autoresponder::OPERATION_SUBSCRIBE, true); }
public function testRegularUserAllDefaultControllerActions() { MarketingListTestHelper::createMarketingListByName('MarketingListName02', 'MarketingList Description', 'first', '*****@*****.**'); $campaign = CampaignTestHelper::createCampaign('campaign02', 'campaign subject 02', 'text content for campaign 02', 'html content for campaign 02', 'fromCampaign', '*****@*****.**'); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default'); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/index'); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/list'); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/create'); $this->setGetArray(array('id' => $campaign->id)); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/edit'); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/details'); $this->resetGetArray(); $this->user->setRight('CampaignsModule', CampaignsModule::getAccessRight()); $this->assertTrue($this->user->save()); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default'); $this->assertContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $this->user->setRight('MarketingListsModule', MarketingListsModule::getAccessRight()); $this->user->setRight('EmailTemplatesModule', EmailTemplatesModule::getAccessRight()); $this->assertTrue($this->user->save()); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/index'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/list'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $this->setGetArray(array('id' => $campaign->id)); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/details'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/details'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $this->resetGetArray(); $this->user->setRight('CampaignsModule', CampaignsModule::getCreateRight()); $this->assertTrue($this->user->save()); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/create'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $this->setGetArray(array('id' => $campaign->id)); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/details'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $this->resetGetArray(); $this->user->setRight('CampaignsModule', CampaignsModule::getCreateRight()); $this->assertTrue($this->user->save()); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/create'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $this->setGetArray(array('id' => $campaign->id)); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/edit'); $this->assertNotContains('<p>To manage campaigns you must have access to email templates and ' . 'marketing lists. Contact the CRM administrator about this issue.</p>', $content); $this->user->setRight('CampaignsModule', CampaignsModule::getDeleteRight()); $this->assertTrue($this->user->save()); $this->runControllerWithRedirectExceptionAndGetUrl('campaigns/default/delete'); $this->setGetArray(array('id' => static::$campaignOwnedBySuper->id)); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/edit'); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/details'); $this->runControllerShouldResultInAccessFailureAndGetContent('campaigns/default/delete'); }
/** * @depends testMarkProcessedCampaignsAsCompleted */ public function testMarkProcessedCampaignsAsCompletedWithCustomPageSize() { Campaign::deleteAll(); $contact = ContactTestHelper::createContactByNameForOwner('contact 02', $this->user); $marketingList = MarketingListTestHelper::populateMarketingListByName('marketingList 02'); $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(); Yii::app()->jobQueue->deleteAll(); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(0, $jobs); $this->assertTrue(CampaignsUtil::markProcessedCampaignsAsCompleted(1)); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(1, $jobs); $this->assertEquals('CampaignMarkCompleted', $jobs[5][0]['jobType']); $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(); Yii::app()->jobQueue->deleteAll(); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(0, $jobs); $this->assertTrue(CampaignsUtil::markProcessedCampaignsAsCompleted()); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(0, $jobs); $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); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $account = AccountTestHelper::createAccountByNameForOwner('account', $super); static::$contact = ContactTestHelper::createContactWithAccountByNameForOwner('contact', $super, $account); static::$marketingList = MarketingListTestHelper::createMarketingListByName('marketingList', 'description', 'fromName', '*****@*****.**', true); static::$marketingListMember = MarketingListMemberTestHelper::createMarketingListMember(1, static::$marketingList, static::$contact); AllPermissionsOptimizationUtil::rebuild(); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); $super = User::getByUsername('super'); $bobby = UserTestHelper::createBasicUser('bobby'); $sarah = UserTestHelper::createBasicUser('sarah'); self::$superUserId = $super->id; self::$bobbyUserId = $bobby->id; self::$sarahUserId = $sarah->id; $marketingList = MarketingListTestHelper::createMarketingListByName('testList'); self::$marketingListId = $marketingList->id; }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; //Setup test data owned by the super user. LeadTestHelper::createLeadbyNameForOwner('superLead', $super); //Setup default dashboard. Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super); //Setup test marketingList MarketingListTestHelper::createMarketingListByName('MarketingListName', 'MarketingList Description', 'first', '*****@*****.**'); }
public function testSuperUserAllDefaultControllerActions() { // Test all default controller actions that do not require any POST/GET variables to be passed. $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/index'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/list'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/create'); MarketingListTestHelper::createMarketingListByName('MarketingListName', 'MarketingList Description', 'first', '*****@*****.**'); MarketingListTestHelper::createMarketingListByName('MarketingListName2', 'MarketingList Description2', 'second', '*****@*****.**'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/index'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/list'); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/create'); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); Yii::app()->user->userModel = User::getByUsername('super'); $superUserMarketingList = MarketingListTestHelper::createMarketingListByName('superMarketingList'); static::$superUserMarketingListId = $superUserMarketingList->id; $superUserAutoresponder = AutoresponderTestHelper::createAutoresponder('superAutoresponder', 'superText', 'superHtml', 10, Autoresponder::OPERATION_SUBSCRIBE, true, $superUserMarketingList); static::$superUserAutoresponderId = $superUserAutoresponder->id; Yii::app()->user->userModel = UserTestHelper::createBasicUser('nobody'); $regularUserMarketingList = MarketingListTestHelper::createMarketingListByName('regularMarketingList'); static::$regularUserMarketingListId = $regularUserMarketingList->id; $regularUserAutoresponder = AutoresponderTestHelper::createAutoresponder('regularAutoresponder', 'regularText', 'regularHtml', 10, Autoresponder::OPERATION_SUBSCRIBE, true, $regularUserMarketingList); static::$regularUserAutoresponderId = $regularUserAutoresponder->id; AllPermissionsOptimizationUtil::rebuild(); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; EmailTemplateTestHelper::create('EmailTemplate 01', 'Subject 01', 'Contact', 'Html Content 01', 'Text Content 01'); EmailTemplateTestHelper::create('EmailTemplate 02', 'Subject 02', 'Contact', 'Html Content 02', 'Text Content 02'); EmailTemplateTestHelper::create('EmailTemplate 03', 'Subject 03', 'Contact', 'Html Content 03', 'Text Content 03'); EmailTemplateTestHelper::create('EmailTemplate 04', 'Subject 04', 'Contact', 'Html Content 04', 'Text Content 04'); EmailTemplateTestHelper::create('EmailTemplate 05', 'Subject 05', 'Contact', 'Html Content 05', 'Text Content 05'); $marketingList = MarketingListTestHelper::createMarketingListByName('MarketingListName', 'MarketingList Description'); static::$marketingListId = $marketingList->id; AutoresponderTestHelper::createAutoresponder('Subject 01', 'This is text Content 01', 'This is html Content 01', 10, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList); AutoresponderTestHelper::createAutoresponder('Subject 02', 'This is text Content 02', 'This is html Content 02', 5, Autoresponder::OPERATION_UNSUBSCRIBE, false, $marketingList); AllPermissionsOptimizationUtil::rebuild(); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); static::$user = User::getByUsername('super'); Yii::app()->user->userModel = static::$user; $contact = ContactTestHelper::createContactByNameForOwner('contact 01', static::$user); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 01', 'description 01', 'fromName 01', '*****@*****.**'); $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 01', 'textContent 01', 'htmlContent 01', 10, Autoresponder::OPERATION_SUBSCRIBE, 1, $marketingList); $processed = 0; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 100); $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact); static::$personId = $contact->getClassId('Person'); static::$autoresponderItemId = $autoresponderItem->id; $campaign = CampaignTestHelper::createCampaign('campaign 01', 'subject 01', 'text Content 01', 'html Content 01', 'fromName 01', '*****@*****.**', null, Campaign::STATUS_ACTIVE, null, null, $marketingList); $processed = 0; $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact); static::$campaignItemId = $campaignItem->id; AllPermissionsOptimizationUtil::rebuild(); }
public function testCreateAndGetCampaignItemActivityWithCampaignItemById() { $contact = ContactTestHelper::createContactByNameForOwner('contact 01', $this->user); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 01'); $campaign = CampaignTestHelper::createCampaign('campaign 01', 'subject 01', 'text Content 01', 'html Content 01', 'fromName 01', '*****@*****.**', null, null, null, null, $marketingList); $processed = 0; $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact); $campaignItemActivity = new CampaignItemActivity(); $campaignItemActivity->type = CampaignItemActivity::TYPE_CLICK; $campaignItemActivity->quantity = 1; $campaignItemActivity->campaignItem = $campaignItem; $campaignItemActivity->latestSourceIP = '121.212.122.112'; $this->assertTrue($campaignItemActivity->save()); $id = $campaignItemActivity->id; unset($campaignItemActivity); $campaignItemActivity = CampaignItemActivity::getById($id); $this->assertEquals(CampaignItemActivity::TYPE_CLICK, $campaignItemActivity->type); $this->assertEquals(1, $campaignItemActivity->quantity); $this->assertEquals($campaignItem, $campaignItemActivity->campaignItem); $this->assertEquals('121.212.122.112', $campaignItemActivity->latestSourceIP); }
public function testCreateAndGetAutoresponderItemActivityWithAutoresponderItemById() { $contact = ContactTestHelper::createContactByNameForOwner('contact 01', $this->user); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 01'); $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 01', 'text content', 'html content', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList); $processed = 0; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 100); $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact); $autoresponderItemActivity = new AutoresponderItemActivity(); $autoresponderItemActivity->type = AutoresponderItemActivity::TYPE_CLICK; $autoresponderItemActivity->quantity = 1; $autoresponderItemActivity->latestSourceIP = '11.12.13.14'; $autoresponderItemActivity->autoresponderItem = $autoresponderItem; $this->assertTrue($autoresponderItemActivity->save()); $id = $autoresponderItemActivity->id; unset($autoresponderItemActivity); $autoresponderItemActivity = AutoresponderItemActivity::getById($id); $this->assertEquals(AutoresponderItemActivity::TYPE_CLICK, $autoresponderItemActivity->type); $this->assertEquals(1, $autoresponderItemActivity->quantity); $this->assertEquals('11.12.13.14', $autoresponderItemActivity->latestSourceIP); $this->assertEquals($autoresponderItem, $autoresponderItemActivity->autoresponderItem); }
public function testGetCountByTypeAndEmailMessageActivity() { // setup pre-req data $contact = ContactTestHelper::createContactByNameForOwner('contact 01', $this->user); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 01', 'description 01', 'fromName 01', '*****@*****.**'); $campaign = CampaignTestHelper::createCampaign('campaign 01', 'subject 01', 'text Content 01', 'html Content 01', 'fromName 01', '*****@*****.**', null, null, null, null, $marketingList); $processed = 0; $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact); $modelId = $campaignItem->id; $modelType = get_class($campaignItem); $personId = $contact->getClassId('Person'); $this->assertNotNull($personId); $activityData = array('modelId' => $campaignItem->id, 'modelType' => 'CampaignItem', 'personId' => $personId, 'url' => null, 'type' => CampaignItemActivity::TYPE_OPEN); $activityCreatedOrUpdated = CampaignItemActivityUtil::createOrUpdateActivity($activityData); $emailMessageActivities = CampaignItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(CampaignItemActivity::TYPE_OPEN, $campaignItem->id, $personId, null); $externalMessageActivityCount = ExternalApiEmailMessageActivity::getByTypeAndEmailMessageActivity(CampaignItemActivity::TYPE_OPEN, $emailMessageActivities[0], "sendgrid"); $this->assertEquals(0, $externalMessageActivityCount); $externalApiEmailMessageActivity = new ExternalApiEmailMessageActivity(); $externalApiEmailMessageActivity->emailMessageActivity = $emailMessageActivities[0]; $externalApiEmailMessageActivity->api = 'sendgrid'; $externalApiEmailMessageActivity->type = CampaignItemActivity::TYPE_OPEN; $externalApiEmailMessageActivity->reason = 'Test reason'; $externalApiEmailMessageActivity->emailAddress = '*****@*****.**'; $externalApiEmailMessageActivity->itemClass = 'CampaignItem'; $externalApiEmailMessageActivity->itemId = $campaignItem->id; $this->assertTrue($externalApiEmailMessageActivity->save()); $id = $externalApiEmailMessageActivity->id; $externalMessageActivityCount = ExternalApiEmailMessageActivity::getByTypeAndEmailMessageActivity(CampaignItemActivity::TYPE_OPEN, $emailMessageActivities[0], "sendgrid"); $this->assertEquals(1, $externalMessageActivityCount); $externalApiActivity = ExternalApiEmailMessageActivity::getById($id); $externalApiActivity->reason = 'New reason 1'; $this->assertTrue($externalApiActivity->save()); $externalApiActivity = ExternalApiEmailMessageActivity::getById($id); $this->assertEquals('New reason 1', $externalApiActivity->reason); $activities = ExternalApiEmailMessageActivity::getByEmailAddress('*****@*****.**', "sendgrid", false); $this->assertEquals(1, count($activities)); $this->assertEquals('New reason 1', $activities[0]->reason); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; //Setup test data owned by the super user. $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super); $marketingList1 = MarketingListTestHelper::createMarketingListByName('MarketingList1', 'MarketingList Description1'); $marketingList2 = MarketingListTestHelper::createMarketingListByName('MarketingList2', 'MarketingList Description2'); for ($i = 0; $i < 17; $i++) { if ($i % 2) { $unsubscribed = 0; } else { $unsubscribed = 1; } $contact1 = ContactTestHelper::createContactWithAccountByNameForOwner('superContact1' . $i, $super, $account); $contact2 = ContactTestHelper::createContactWithAccountByNameForOwner('superContact2' . $i, $super, $account); MarketingListMemberTestHelper::createMarketingListMember($unsubscribed, $marketingList1, $contact1); MarketingListMemberTestHelper::createMarketingListMember($unsubscribed, $marketingList2, $contact2); AllPermissionsOptimizationUtil::rebuild(); } }
public function testRunWithCampaignPausedAfterAllItemsGeneratedAndThenUnpaused() { // Cleanup Campaign::deleteAll(); $this->assertEquals(0, Campaign::getCount()); $this->assertEquals(0, CampaignItem::getCount()); $this->assertEquals(0, CampaignItemActivity::getCount()); MarketingList::deleteAll(); $this->assertEquals(0, MarketingList::getCount()); $this->assertEquals(0, MarketingListMember::getCount()); EmailMessage::deleteAll(); $this->assertEquals(0, EmailMessage::getCount()); $this->assertEquals(0, EmailMessageContent::getCount()); $this->assertEquals(0, EmailMessageSender::getCount()); $this->assertEquals(0, EmailMessageRecipient::getCount()); Contact::deleteAll(); $this->assertEquals(0, Contact::getCount()); // setup an email address for contacts $email = new Email(); $email->emailAddress = '*****@*****.**'; // create a marketing list with 5 members $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 05'); $marketingListId = $marketingList->id; for ($i = 1; $i <= 5; $i++) { $contact = ContactTestHelper::createContactByNameForOwner('campaignContact 0' . $i, $this->user); $contact->primaryEmail = $email; $this->assertTrue($contact->save()); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact); } $marketingList->forgetAll(); // create a due campaign with that marketing list $campaign = CampaignTestHelper::createCampaign('campaign 04', 'subject', 'text Content', 'Html Content', null, null, null, null, null, null, MarketingList::getById($marketingListId)); $campaignId = $campaign->id; /* * Run 1: * CampaignGenerateDueCampaignItemsJob * status == processing * items generated but unprocessed * * CampaignQueueMessagesInOutboxJob * status == processing * items processed with email messages generated and queued * * ProcessOutboundEmailJob * status == processing * email items attempted to be sent * * Run 2: * Pause the campaign * items are processed and still present * * Unpause the campaign * status == active * items are processed and still present * * CampaignGenerateDueCampaignItemsJob * status == processing * ensure all items are present and processed * * CampaignQueueMessagesInOutboxJob * status == processing * ensure all items are present and processed * ensure all email messages are present with correct folder type * * ProcessOutboundEmailJob * ensure all email messages are present with correct folder type * status == processing * * * Run 3: * Mark Campaign as Completed * status == completed */ // we have to do this to ensure when we retrieve the data status is updated from db. $campaign->forgetAll(); $this->assertEmpty(CampaignItem::getAll()); // Run 1 starts here // Run CampaignGenerateDueCampaignItemsJob $job = new CampaignGenerateDueCampaignItemsJob(); $this->assertTrue($job->run()); $campaign = Campaign::getById($campaignId); // ensure status is processing $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); // ensure 5 campaign items have been generated $this->assertEquals(5, CampaignItem::getCount()); // ensure all 5 campaign items are unprocessed $campaignItems = CampaignItem::getByProcessedAndCampaignId(0, $campaignId); $this->assertNotEmpty($campaignItems); $this->assertCount(5, $campaignItems); // Run CampaignQueueMessagesInOutboxJob $job = new CampaignQueueMessagesInOutboxJob(); $this->assertTrue($job->run()); // Ensure campaign status $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); // ensure all 5 campaign items are processed $campaignItems = CampaignItem::getByProcessedAndCampaignId(1, $campaignId); $this->assertNotEmpty($campaignItems); $this->assertCount(5, $campaignItems); // Ensure 5 new email messages $this->assertEquals(5, EmailMessage::getCount()); $this->assertEquals(5, EmailHelper::getQueuedCount()); // Run ProcessOutboundEmail $job = new ProcessOutboundEmailJob(); $this->assertTrue($job->run()); // Ensure all email were sent $this->assertEquals(5, EmailMessage::getCount()); $this->assertEquals(0, EmailHelper::getQueuedCount()); foreach (EmailMessage::getAll() as $emailMessage) { $this->assertEquals($emailMessage->folder->type, EmailFolder::TYPE_SENT); } // Ensure campaign status $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); // end of Run 1 // Run 2 starts here // Pause the campaign $campaign->status = Campaign::STATUS_PAUSED; $this->assertTrue($campaign->save()); // ensure campaign items are still there $campaignItems = CampaignItem::getByProcessedAndCampaignId(1, $campaignId); $this->assertCount(5, $campaignItems); $this->assertNotEmpty($campaignItems); // Unpause campaign $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_PAUSED, $campaign->status); $campaign->status = Campaign::STATUS_ACTIVE; $this->assertTrue($campaign->save()); // ensure campaign items are still there $campaignItems = CampaignItem::getByProcessedAndCampaignId(1, $campaignId); $this->assertCount(5, $campaignItems); $this->assertNotEmpty($campaignItems); // Ensure status change $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_ACTIVE, $campaign->status); // Run CampaignGenerateDueCampaignItemsJob $job = new CampaignGenerateDueCampaignItemsJob(); $this->assertTrue($job->run()); // Ensure campaign status change $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); // ensure all 5 (previously created in run1) campaign items are still processed $campaignItems = CampaignItem::getByProcessedAndCampaignId(1, $campaignId); $this->assertNotEmpty($campaignItems); $this->assertCount(5, $campaignItems); // Run CampaignQueueMessagesInOutboxJob $job = new CampaignQueueMessagesInOutboxJob(); $this->assertTrue($job->run()); // Ensure campaign status $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); // ensure all 5 (previously created in run1) campaign items are still processed $campaignItems = CampaignItem::getByProcessedAndCampaignId(1, $campaignId); $this->assertNotEmpty($campaignItems); $this->assertCount(5, $campaignItems); // Ensure all 5 (previously created and sent in run1) emails are sent. $this->assertEquals(5, EmailMessage::getCount()); foreach (EmailMessage::getAll() as $emailMessage) { $this->assertEquals($emailMessage->folder->type, EmailFolder::TYPE_SENT); } // Run ProcessOutboundEmail $job = new ProcessOutboundEmailJob(); $this->assertTrue($job->run()); // Ensure all 5 (previously created and sent in run1) emails are sent. $this->assertEquals(5, EmailMessage::getCount()); foreach (EmailMessage::getAll() as $emailMessage) { $this->assertEquals($emailMessage->folder->type, EmailFolder::TYPE_SENT); } // Ensure campaign status $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_PROCESSING, $campaign->status); // end of Run 2 // Run 3 starts here // Run CampaignMarkCompleted $job = new CampaignMarkCompletedJob(); $this->assertTrue($job->run()); // Ensure campaign status change $campaign = Campaign::getById($campaignId); $this->assertEquals(Campaign::STATUS_COMPLETED, $campaign->status); // end of Run 3 }
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); }
/** * @depends testRunWithDueActiveCampaignsWithMembers */ public function testRunWithDueActiveCampaignsWithCustomBatchSize() { $this->purgeAllCampaigns(); $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 = 5; $index < 10; $index++) { $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 0' . $index); $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); } AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(10); $job = new CampaignGenerateDueCampaignItemsJob(); $this->assertTrue($job->run()); 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); } } AutoresponderOrCampaignBatchSizeConfigUtil::setBatchSize(null); $this->assertTrue($job->run()); 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. }
/** * @depends testResolveQueryStringFromUrlAndCreateOrUpdateActivityThrowsExceptionForInvalidCampaignItemIdForUrlClickTracking * @expectedException NotFoundException */ public function testResolveQueryStringFromUrlAndCreateOrUpdateActivityThrowsExceptionForInvalidPersonIdForUrlClickTracking() { // setup pre-req data $contact = ContactTestHelper::createContactByNameForOwner('contact 06', $this->user); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 06', 'description 06', 'fromName 06', '*****@*****.**'); $campaign = CampaignTestHelper::createCampaign('campaign 06', 'subject 06', 'text Content 06', 'html Content 06', 'fromName 06', '*****@*****.**', null, null, null, null, $marketingList); $processed = 0; $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact); $modelId = $campaignItem->id; $modelType = get_class($campaignItem); $personId = $contact->getClassId('Person'); $this->assertNotNull($personId); $personId = $personId + 200; // get the modelClassName to use for activity object tests $className = 'CampaignItemActivityUtil'; $resolveModelClassNameByModelTypeFunction = static::getProtectedMethod($className, 'resolveModelClassNameByModelType'); $modelClassName = $resolveModelClassNameByModelTypeFunction->invokeArgs(null, array($modelType)); $type = $modelClassName::TYPE_CLICK; $existingActivities = $modelClassName::getByType($type); $this->assertCount(1, $existingActivities); // get base query string $resolveBaseQueryStringArrayFunction = static::getProtectedMethod('ContentTrackingUtil', 'resolveBaseQueryStringArray'); $queryStringArray = $resolveBaseQueryStringArrayFunction->invokeArgs(null, array($modelId, $modelType, $personId)); $this->assertNotEmpty($queryStringArray); $this->assertCount(3, $queryStringArray); $this->assertArrayHasKey('modelId', $queryStringArray); $this->assertArrayHasKey('modelType', $queryStringArray); $this->assertArrayHasKey('personId', $queryStringArray); $queryStringArray['url'] = 'http://www.zurmo.com'; // get hash for query string and ensure its what we expect it to be. $queryStringArrayHash = StringUtil::resolveHashForQueryStringArray($queryStringArray); $queryStringArrayDecoded = $className::resolveQueryStringArrayForHash($queryStringArrayHash); $this->assertNotEmpty($queryStringArrayDecoded); $this->assertCount(5, $queryStringArrayDecoded); $this->assertArrayHasKey('modelId', $queryStringArrayDecoded); $this->assertArrayHasKey('modelType', $queryStringArrayDecoded); $this->assertArrayHasKey('personId', $queryStringArrayDecoded); $this->assertArrayHasKey('url', $queryStringArrayDecoded); $this->assertArrayHasKey('type', $queryStringArrayDecoded); $this->assertEquals($queryStringArray['modelId'], $queryStringArrayDecoded['modelId']); $this->assertEquals($queryStringArray['modelType'], $queryStringArrayDecoded['modelType']); $this->assertEquals($queryStringArray['personId'], $queryStringArrayDecoded['personId']); $this->assertEquals($queryStringArray['url'], $queryStringArrayDecoded['url']); $this->assertNull($queryStringArrayDecoded['type']); // do the magic, confirm magic worked by checking return value. $_GET['id'] = $queryStringArrayHash; $result = $className::resolveQueryStringFromUrlAndCreateOrUpdateActivity(); }
/** * @depends testSendQueued */ public function testSendQueuedSkipsPausedCampaignMessages() { EmailMessage::deleteAll(); $job = new CampaignQueueMessagesInOutboxJob(); $email = new Email(); $email->emailAddress = '*****@*****.**'; $contact = ContactTestHelper::createContactByNameForOwner('contact', $this->user); $contact->primaryEmail = $email; $this->assertTrue($contact->save()); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList'); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact); $campaign = CampaignTestHelper::createCampaign('campaign', 'subject', 'text Content', 'Html Content', null, null, null, Campaign::STATUS_PROCESSING, null, 0, $marketingList); $processed = 0; CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact); $this->assertTrue($job->run()); $campaignItems = CampaignItem::getAll(); $this->assertCount(1, $campaignItems); $campaignItemsProcessed = CampaignItem::getByProcessedAndCampaignId(1, $campaign->id); $this->assertCount(1, $campaignItemsProcessed); $campaign->status = Campaign::STATUS_PAUSED; $this->assertTrue($campaign->save()); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); Yii::app()->emailHelper->sendQueued(); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); }
/** * @depends testRunWithMultipleRecipientsWithAttachments */ public function testRunWithSubscribedAndUnsubscribedMembers() { $campaignItemsCountBefore = CampaignItem::getCount(); $job = new CampaignQueueMessagesInOutboxJob(); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 10'); $marketingListId = $marketingList->id; $contacts = array(); for ($i = 0; $i < 5; $i++) { $email = new Email(); $email->emailAddress = "demo{$i}@zurmo.com"; $contact = ContactTestHelper::createContactByNameForOwner('contact 0' . ($i + 14), $this->user); $contact->primaryEmail = $email; $this->assertTrue($contact->save()); $contacts[] = $contact; MarketingListMemberTestHelper::createMarketingListMember($i % 2, $marketingList, $contact); } $marketingList->forgetAll(); $marketingList = MarketingList::getById($marketingListId); $campaign = CampaignTestHelper::createCampaign('campaign 10', 'subject 10', '[[FIRST^NAME]]', '[[LAST^NAME]]', null, null, null, Campaign::STATUS_PROCESSING, null, 0, $marketingList); $this->assertNotNull($campaign); $campaignId = $campaign->id; foreach ($contacts as $contact) { CampaignItemTestHelper::createCampaignItem(0, $campaign, $contact); } $this->assertTrue($job->run()); $campaign = Campaign::getById($campaignId); $campaignItemsCountExpected = $campaignItemsCountBefore + 5; $campaignItemsCountAfter = CampaignItem::getCount(); $this->assertEquals($campaignItemsCountExpected, $campaignItemsCountAfter); $campaignItemsProcessed = CampaignItem::getByProcessedAndCampaignId(1, $campaign->id); $this->assertCount(5, $campaignItemsProcessed); $skippedCount = 0; foreach ($campaignItemsProcessed as $campaignItem) { $contact = $campaignItem->contact; $member = MarketingListMember::getByMarketingListIdContactIdAndUnsubscribed($campaign->marketingList->id, $contact->id, true); if ($member) { $personId = $campaignItem->contact->getClassId('Person'); $type = CampaignItemActivity::TYPE_SKIP; $activity = CampaignItemActivity::getByTypeAndModelIdAndPersonIdAndUrl($type, $campaignItem->id, $personId); $this->assertNotNull($activity); $this->assertNotEmpty($activity); $this->assertCount(1, $activity); $skippedCount++; } else { $this->assertNotEmpty($campaignItem->emailMessage); $this->assertContains($contact->firstName, $campaignItem->emailMessage->content->textContent); $this->assertContains($contact->lastName, $campaignItem->emailMessage->content->htmlContent); } } $this->assertEquals(2, $skippedCount); }
/** * @depends testHasAtLeastOneUnsubscribeActivity */ public function testHasAtLeastOneBounceActivity() { $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 13'); $campaign = CampaignTestHelper::createCampaign('campaign 12', 'subject 12', 'text 12', 'html 12', null, null, null, null, null, null, $marketingList); $this->assertNotNull($campaign); $contact = ContactTestHelper::createContactByNameForOwner('campaignContact 13', Yii::app()->user->userModel); $campaignItem = CampaignItemTestHelper::createCampaignItem(0, $campaign, $contact); $this->assertNotNull($campaignItem); $this->assertFalse($campaignItem->hasAtLeastOneBounceActivity()); CampaignItemActivity::createNewActivity(CampaignItemActivity::TYPE_OPEN, $campaignItem->id, $contact->getClassId('Person'), null, null, $campaignItem); $this->assertFalse($campaignItem->hasAtLeastOneBounceActivity()); CampaignItemActivity::createNewActivity(CampaignItemActivity::TYPE_BOUNCE, $campaignItem->id, $contact->getClassId('Person'), null, null, $campaignItem); $this->assertTrue($campaignItem->hasAtLeastOneBounceActivity()); CampaignItemActivity::createNewActivity(CampaignItemActivity::TYPE_BOUNCE, $campaignItem->id, $contact->getClassId('Person'), null, null, $campaignItem); $this->assertTrue($campaignItem->hasAtLeastOneBounceActivity()); }
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; }