public static function addAutoresponderObjects($newsletter_id, $numberOfAutorespondersToAdd)
 {
     $autoresponders = array();
     for ($i = 0; $i < $numberOfAutorespondersToAdd; $i++) {
         $autoresponders[] = AutoresponderTestHelper::addAutoresponderAndFetchRow($newsletter_id, "Autoresponder_" . md5(microtime()));
     }
     return $autoresponders;
 }
 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 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 function testDefaultPageLoadInvocationFetchesOnlyTheFirstTenAutorespondersInOrderOfCreation()
 {
     $this->newsletterId = $this->newsletterId;
     $autorespondersRowList = AutoresponderTestHelper::addAutoresponderObjects($this->newsletterId, 20);
     $this->autoresponderController->autorespondersListPage();
     $numberOfPagesInAutorespondersList = intval(_wpr_get("number_of_pages"));
     $autorespondersListToRender = _wpr_get("autoresponders");
     $first10Autoresponders = array_slice($autorespondersRowList, 0, 10);
     $autoresponderNamesFromRows = self::getAutoresponderNamesFromRows($first10Autoresponders);
     $autoresponderNamesFromObjects = self::getAutoresponderNamesFromAutoresponderObjects($autorespondersListToRender);
     $difference = array_diff($autoresponderNamesFromRows, $autoresponderNamesFromObjects);
     $numberOfDifferingRows = count($difference);
     $viewToRender = _wpr_get("_wpr_view");
     $this->assertEquals("integer", getType($numberOfPagesInAutorespondersList));
     $this->assertEquals(2, $numberOfPagesInAutorespondersList);
     $this->assertEquals(0, $numberOfDifferingRows);
     $this->assertEquals("autoresponders_home", $viewToRender);
 }
 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 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 testResolveNewTimeStampForDuration()
 {
     $autoresponder = AutoresponderTestHelper::createAutoresponder('test autoresponder for resolve time stamp', 'sample text content', 'sample html content', 5, Autoresponder::OPERATION_UNSUBSCRIBE);
     $this->assertEquals(5 * 24 * 60 * 60, $autoresponder->resolveNewTimeStampForDuration(0));
     $autoresponder->fromOperationDurationType = TimeDurationUtil::DURATION_TYPE_MINUTE;
     $this->assertEquals(5 * 60, $autoresponder->resolveNewTimeStampForDuration(0));
     $autoresponder->fromOperationDurationInterval = 10;
     $this->assertEquals(10 * 60, $autoresponder->resolveNewTimeStampForDuration(0));
     $autoresponder->fromOperationDurationType = TimeDurationUtil::DURATION_TYPE_HOUR;
     $this->assertEquals(10 * 60 * 60, $autoresponder->resolveNewTimeStampForDuration(0));
 }
Ejemplo n.º 9
0
 /**
  * @depends testAddNewItem
  */
 public function testRegisterAutoresponderItemsByAutoresponderOperation()
 {
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 04');
     $autoresponderSubscribe = AutoresponderTestHelper::createAutoresponder('autoresponder Subscribe', 'test autoresponder Subscribe', 'This is text content Subscribe', 'This is <b>html</b> content Subscribe', 10, Autoresponder::OPERATION_SUBSCRIBE, $marketingList);
     $this->assertNotNull($autoresponderSubscribe);
     $autoresponderUnsubscribe = AutoresponderTestHelper::createAutoresponder('autoresponder Unsubscribe', 'test autoresponder Unsubscribe', 'This is text content Unsubscribe', 'This is <b>html</b> content Unsubscribe', 20, Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList);
     $this->assertNotNull($autoresponderUnsubscribe);
     $autoresponderRemove = AutoresponderTestHelper::createAutoresponder('autoresponder Remove', 'test autoresponder Remove', 'This is text content Remove', 'This is <b>html</b> content Remove', 10, Autoresponder::OPERATION_REMOVE, $marketingList);
     $this->assertNotNull($autoresponderRemove);
     $super = User::getByUsername('super');
     $contact1 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 01', $super);
     $contact2 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 02', $super);
     $contact3 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 03', $super);
     $contact4 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 04', $super);
     $contact5 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 05', $super);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact1);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact2);
     $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::NOT_PROCESSED, $autoresponderSubscribe->id);
     $this->assertNotEmpty($autoresponderItemsSubscribe);
     $this->assertCount(2, $autoresponderItemsSubscribe);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact3);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact4);
     $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::NOT_PROCESSED, $autoresponderUnsubscribe->id);
     $this->assertNotEmpty($autoresponderItemsUnsubscribe);
     $this->assertCount(2, $autoresponderItemsUnsubscribe);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_REMOVE, $marketingList->id, $contact5);
     $autoresponderItemsRemove = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::NOT_PROCESSED, $autoresponderRemove->id);
     $this->assertNotEmpty($autoresponderItemsRemove);
     $this->assertCount(1, $autoresponderItemsRemove);
 }
 /**
  * @depends testCreateAndGetMarketingListMemberById
  */
 public function testBeforeSaveAutoresponderRegister()
 {
     $marketingList = MarketingListTestHelper::createMarketingListByName('test marketing List 06');
     $this->assertNotNull($marketingList);
     $autoresponderSubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Subscribe', 'This is text content Subscribe', 'This is <b>html</b> content Subscribe', 10, Autoresponder::OPERATION_SUBSCRIBE, false, $marketingList);
     $this->assertNotNull($autoresponderSubscribe);
     $autoresponderUnsubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Unsubscribe', 'This is text content Unsubscribe', 'This is <b>html</b> content Unsubscribe', 20, Autoresponder::OPERATION_UNSUBSCRIBE, true, $marketingList);
     $this->assertNotNull($autoresponderUnsubscribe);
     $member = MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList);
     $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderSubscribe->id);
     $this->assertNotEmpty($autoresponderItemsSubscribe);
     $this->assertCount(1, $autoresponderItemsSubscribe);
     $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderUnsubscribe->id);
     $this->assertEmpty($autoresponderItemsUnsubscribe);
     $member->unsubscribed = 1;
     $saved = $member->unrestrictedSave();
     $this->assertTrue($saved);
     $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderSubscribe->id);
     $this->assertNotEmpty($autoresponderItemsSubscribe);
     $this->assertCount(1, $autoresponderItemsSubscribe);
     $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderUnsubscribe->id);
     $this->assertNotEmpty($autoresponderItemsUnsubscribe);
     $this->assertCount(1, $autoresponderItemsUnsubscribe);
 }
 /**
  * @depends testCreateAndGetMarketingListById
  */
 public function testDeleteMarketingList()
 {
     $marketingLists = MarketingList::getAll();
     $this->assertCount(2, $marketingLists);
     $marketingListId = $marketingLists[0]->id;
     MarketingListMemberTestHelper::createMarketingListMember(0, $marketingLists[0]);
     MarketingListMemberTestHelper::createMarketingListMember(0, $marketingLists[0]);
     MarketingListMemberTestHelper::createMarketingListMember(0, $marketingLists[1]);
     MarketingListMemberTestHelper::createMarketingListMember(0, $marketingLists[1]);
     AutoresponderTestHelper::createAutoresponder('subject 01', 'text content', 'html content', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingLists[0]);
     AutoresponderTestHelper::createAutoresponder('subject 02', 'text content', 'html content', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingLists[1]);
     $autoresponders = Autoresponder::getByOperationTypeAndMarketingListId(Autoresponder::OPERATION_SUBSCRIBE, $marketingListId);
     $this->assertCount(1, $autoresponders);
     $this->assertEquals(2, Autoresponder::getCount());
     $marketingListMembersCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingListId, 0);
     $this->assertEquals(2, $marketingListMembersCount);
     $marketingLists[0]->forgetAll();
     $marketingLists = MarketingList::getAll();
     $marketingLists[0]->delete();
     $marketingLists = MarketingList::getAll();
     $this->assertCount(1, $marketingLists);
     $autoresponders = Autoresponder::getByOperationTypeAndMarketingListId(Autoresponder::OPERATION_SUBSCRIBE, $marketingListId);
     $this->assertCount(0, $autoresponders);
     $this->assertEquals(1, Autoresponder::getCount());
     $marketingListMembersCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingListId, 0);
     $this->assertEquals(0, $marketingListMembersCount);
     $this->assertEquals(2, MarketingListMember::getCount());
 }
 /**
  * @depends testRunWithCustomBatchSize
  */
 public function testRunWithContactContainingPrimaryEmailOptedOut()
 {
     $unprocessedItems = AutoresponderItem::getByProcessed(0);
     $this->assertEmpty($unprocessedItems);
     $job = new AutoresponderQueueMessagesInOutboxJob();
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $email->optOut = true;
     $contact = ContactTestHelper::createContactByNameForOwner('contact 07', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 08', 'description goes here', 'fromName', '*****@*****.**');
     MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact);
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 08', '[[FIRST^NAME]]', '[[LAST^NAME]]', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList);
     $processed = 0;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - rand(10, 500));
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id);
     $this->assertCount(1, $unprocessedItems);
     $this->assertTrue($job->run());
     $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id);
     $this->assertCount(0, $unprocessedItems);
     $personId = $contact->getClassId('Person');
     $activities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(AutoresponderItemActivity::TYPE_SKIP, $autoresponderItem->id, $personId);
     $this->assertNotEmpty($activities);
     $this->assertCount(1, $activities);
 }
 /**
  * @depends testResolveQueryStringFromUrlAndCreateOrUpdateActivityThrowsExceptionForInvalidAutoresponderItemIdForUrlClickTracking
  * @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', '*****@*****.**');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 06', 'textContent 06', 'htmlContent 06', 10, Autoresponder::OPERATION_SUBSCRIBE, 1, $marketingList);
     $processed = 0;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 100);
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     $modelId = $autoresponderItem->id;
     $modelType = get_class($autoresponderItem);
     $personId = $contact->getClassId('Person');
     $this->assertNotNull($personId);
     $personId = $personId + 200;
     // get the modelClassName to use for activity object tests
     $className = 'AutoresponderItemActivityUtil';
     $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();
 }
 public function testSkipMessage()
 {
     // Tests with Autoresponder
     $contact = ContactTestHelper::createContactByNameForOwner('contact 15', $this->user);
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 15');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 15', 'text content', 'html content', 1, Autoresponder::OPERATION_UNSUBSCRIBE, false, $marketingList);
     $autoresponderItemsUtil = new AutoresponderItemsUtil();
     // Test when the contact isn't in the marketing list at all, same as it was deleted
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is subscribed but the operation is OPERATION_UNSUBSCRIBE
     $marketingListMember = MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact);
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is unsubscribed, so skipMessage return false
     $marketingListMember->unsubscribed = true;
     $this->assertTrue($marketingListMember->unrestrictedSave());
     $this->assertFalse($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     $contact = ContactTestHelper::createContactByNameForOwner('contact 16', $this->user);
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 16');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 16', 'text content', 'html content', 1, Autoresponder::OPERATION_SUBSCRIBE, false, $marketingList);
     // Test when the contact isn't in the marketing list at all, same as it was deleted
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is unsubscribed but the operation is OPERATION_SUBSCRIBE
     $marketingListMember = MarketingListMemberTestHelper::createMarketingListMember(1, $marketingList, $contact);
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     // Test when the contact is subscribed, so skipMessage return false
     $marketingListMember->unsubscribed = false;
     $this->assertTrue($marketingListMember->unrestrictedSave());
     $this->assertFalse($autoresponderItemsUtil->skipMessage($contact, $autoresponder));
     //Tests with Campaign
     $contact = ContactTestHelper::createContactByNameForOwner('contact 17', $this->user);
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 17');
     $campaign = CampaignTestHelper::createCampaign('campaign 01', 'subject 01', 'text 01', 'html 01', null, null, null, null, null, null, $marketingList);
     $this->assertNotNull($campaign);
     // Test when the contact isn't in the marketing list at all, same as it was deleted
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $campaign));
     // Test when the contact is unsubscribed
     $marketingListMember = MarketingListMemberTestHelper::createMarketingListMember(1, $marketingList, $contact);
     $this->assertTrue($autoresponderItemsUtil->skipMessage($contact, $campaign));
     // Test when the contact is subscribed, so skipMessage return false
     $marketingListMember->unsubscribed = false;
     $this->assertTrue($marketingListMember->unrestrictedSave());
     $this->assertFalse($autoresponderItemsUtil->skipMessage($contact, $campaign));
 }
Ejemplo n.º 15
0
 /**
  * @depends testRunWithOneBounceMessageWithDesiredCustomHeaders
  */
 public function testRunWithTwoBounceMessagesWithDesiredCustomHeaders()
 {
     $this->skipTestIfMissingSettings();
     $contact = ContactTestHelper::createContactByNameForOwner('contact 02', $this->user);
     $personId = $contact->getClassId('Person');
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 02');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 02', 'text content', 'html content', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList);
     $processed = 0;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 200);
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     $bounce = BounceMessageTestHelper::resolveBounceObject();
     $this->assertTrue($bounce->connect());
     $headers = array('Return-Path' => $bounce->returnPath, 'zurmoItemId' => $autoresponderItem->id, 'zurmoItemClass' => get_class($autoresponderItem), 'zurmoPersonId' => $personId);
     $bounceTestEmailAddress = Yii::app()->params['emailTestAccounts']['bounceTestEmailAddress'];
     Yii::app()->emailHelper->sendRawEmail("1/2 Bounce - Desired Headers " . date(DATE_RFC822), Yii::app()->emailHelper->outboundUsername, $bounceTestEmailAddress, 'Test email body', '<strong>Test</strong> email html body', null, null, null, null, $headers);
     Yii::app()->emailHelper->sendRawEmail("2/2 Bounce - Desired Headers " . date(DATE_RFC822), Yii::app()->emailHelper->outboundUsername, $bounceTestEmailAddress, 'Test email body', '<strong>Test</strong> email html body', null, null, null, null, $headers);
     sleep(60);
     $messages = $bounce->getMessages();
     $this->assertEquals(2, count($messages));
     for ($i = 0; $i < 2; $i++) {
         $this->assertEquals("Mail delivery failed: returning message to sender", $messages[$i]->subject);
         $this->assertContains('Test email body', $messages[$i]->textBody);
         $this->assertContains('zurmoItemId: ' . $autoresponderItem->id, $messages[$i]->textBody);
         $this->assertContains('zurmoItemClass: ' . get_class($autoresponderItem), $messages[$i]->textBody);
         $this->assertContains('zurmoPersonId: ' . $personId, $messages[$i]->textBody);
     }
     $job = new EmailBounceJob();
     $this->assertTrue($job->run());
     $activities = AutoresponderItemActivity::getAll();
     $this->assertNotEmpty($activities);
     $this->assertCount(2, $activities);
     $activities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(AutoresponderItemActivity::TYPE_BOUNCE, $autoresponderItem->id, $personId);
     $this->assertNotEmpty($activities);
     $this->assertCount(1, $activities);
     $this->assertEquals(2, $activities[0]->quantity);
     $messages = $bounce->getMessages();
     $this->assertEquals(0, count($messages));
 }
Ejemplo n.º 16
0
 /**
  * @depends testProcessDueAutoresponderItemWithCustomFromAddressAndFromName
  */
 public function testProcessDueAutoresponderItemWithValidMergeTags()
 {
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact = ContactTestHelper::createContactByNameForOwner('contact 05', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 05', 'description', 'CustomFromName', '*****@*****.**');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('autoresponder 05', 'subject 05', 'Dr. [[FIRST^NAME]] [[LAST^NAME]]', '<b>[[LAST^NAME]]</b>, [[FIRST^NAME]]', 1, Autoresponder::OPERATION_SUBSCRIBE, $marketingList);
     $processed = AutoresponderItem::NOT_PROCESSED;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     AutoresponderItemsUtil::processDueAutoresponderItem($autoresponderItem);
     $this->assertEquals(AutoresponderItem::PROCESSED, $autoresponderItem->processed);
     $emailMessage = $autoresponderItem->emailMessage;
     $this->assertEquals($marketingList->owner, $emailMessage->owner);
     $this->assertEquals($autoresponder->subject, $emailMessage->subject);
     $this->assertNotEquals($autoresponder->textContent, $emailMessage->content->textContent);
     $this->assertNotEquals($autoresponder->htmlContent, $emailMessage->content->htmlContent);
     $this->assertEquals('Dr. contact 05 contact 05son', $emailMessage->content->textContent);
     $this->assertEquals('<b>contact 05son</b>, contact 05', $emailMessage->content->htmlContent);
     $this->assertEquals($marketingList->fromAddress, $emailMessage->sender->fromAddress);
     $this->assertEquals($marketingList->fromName, $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->assertEquals($contact, $recipients[0]->personOrAccount);
 }
Ejemplo n.º 17
0
 /**
  * @depends testAddNewItem
  */
 public function testRegisterAutoresponderItemsByAutoresponderOperation()
 {
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 04');
     $autoresponderSubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Subscribe', 'This is text content Subscribe', 'This is <b>html</b> content Subscribe', 10, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList);
     $this->assertNotNull($autoresponderSubscribe);
     $autoresponderUnsubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Unsubscribe', 'This is text content Unsubscribe', 'This is <b>html</b> content Unsubscribe', 20, Autoresponder::OPERATION_UNSUBSCRIBE, true, $marketingList);
     $this->assertNotNull($autoresponderUnsubscribe);
     $contact1 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 01', Yii::app()->user->userModel);
     $contact2 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 02', Yii::app()->user->userModel);
     $contact3 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 03', Yii::app()->user->userModel);
     $contact4 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 04', Yii::app()->user->userModel);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact1);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact2);
     $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderSubscribe->id);
     $this->assertNotEmpty($autoresponderItemsSubscribe);
     $this->assertCount(2, $autoresponderItemsSubscribe);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact3);
     AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact4);
     $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderUnsubscribe->id);
     $this->assertNotEmpty($autoresponderItemsUnsubscribe);
     $this->assertCount(2, $autoresponderItemsUnsubscribe);
 }
Ejemplo n.º 18
0
 /**
  * @depends testCreateAndGetAutoresponderById
  */
 public function testGetByOperationTypeAndMarketingListId()
 {
     $marketingList = MarketingListTestHelper::createMarketingListByName('MarketingList Name 01');
     AutoresponderTestHelper::createAutoresponder('subject 01', 'text 01', null, 10, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList);
     AutoresponderTestHelper::createAutoresponder('subject 02', 'text 02', null, 20, Autoresponder::OPERATION_SUBSCRIBE, false, $marketingList);
     AutoresponderTestHelper::createAutoresponder('subject 03', 'text 03', null, 30, Autoresponder::OPERATION_UNSUBSCRIBE, true, $marketingList);
     $autoresponders = Autoresponder::getByOperationTypeAndMarketingListId(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id);
     $this->assertCount(2, $autoresponders);
     $autoresponders = Autoresponder::getByOperationTypeAndMarketingListId(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id);
     $this->assertCount(1, $autoresponders);
 }
Ejemplo n.º 19
0
 public function testGetNumberOfAutorespondersShouldNotReturnAutorespondersWhenNewsletterIsDeleted()
 {
     global $wpdb;
     $deleteNewsletterQuery = sprintf("DELETE FROM {$wpdb->prefix}wpr_newsletters WHERE id=%d", $this->newsletterId);
     $wpdb->query($deleteNewsletterQuery);
     AutoresponderTestHelper::addAutoresponderObjects($this->newsletterId, 20);
     $numberOfAutorespondersAvailable = Autoresponder::getNumberOfAutorespondersAvailable();
     $this->assertEquals(0, $numberOfAutorespondersAvailable);
 }
 /**
  * @depends testUnsubscribeActionToPublicMarketingListCreatesActivity
  */
 public function testUnsubscribeActionToPrivateMarketingList()
 {
     $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $marketingList = MarketingList::getByName('marketingList 04');
     $this->assertNotEmpty($marketingList);
     $marketingList = $marketingList[0];
     $marketingListId = $marketingList->id;
     $contact = Contact::getByName('contact 05 contact 05son');
     $this->assertNotEmpty($contact);
     $contact = $contact[0];
     $marketingList->addNewMember($contact->id, false, $contact);
     $member = MarketingListMember::getByMarketingListIdContactIdAndSubscribed($marketingList->id, $contact->id, 0);
     $this->assertNotEmpty($member);
     $this->assertEquals(0, $member[0]->unsubscribed);
     $personId = $contact->getClassId('Person');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('Autoresponder 02', 'textContent', 'htmlContent', 10, Autoresponder::OPERATION_UNSUBSCRIBE, true, $marketingList);
     $this->assertNotEmpty($autoresponder);
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(strtotime('-1 week'));
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem(1, $processDateTime, $autoresponder, $contact);
     $this->assertNotEmpty($autoresponderItem);
     $autoresponderItemActivities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(AutoresponderItemActivity::TYPE_UNSUBSCRIBE, $autoresponderItem->id, $personId);
     $this->assertEmpty($autoresponderItemActivities);
     Yii::app()->user->userModel = null;
     $hash = EmailMessageActivityUtil::resolveHashForUnsubscribeAndManageSubscriptionsUrls($personId, $marketingListId, 1, 'AutoresponderItem', false);
     $this->setGetArray(array('hash' => $hash));
     $content = $this->runControllerWithNoExceptionsAndGetContent($this->manageSubscriptionsUrl);
     $this->assertTrue(strpos($content, 'id="marketingListsManageSubscriptionListView-toggleUnsubscribed_' . $marketingListId . '_0" checked="checked" type="radio" name="marketingListsManage' . 'SubscriptionListView-toggleUnsubscribed_' . $marketingListId) !== false);
     $this->assertTrue(strpos($content, 'id="marketingListsManageSubscriptionListView-toggleUnsubscribed_' . $marketingListId . '_1" type="radio" name="marketingListsManage' . 'SubscriptionListView-toggleUnsubscribed_' . $marketingListId) !== false);
     @$this->runControllerWithRedirectExceptionAndGetUrl($this->unsubscribeUrl);
     $content = $this->runControllerWithNoExceptionsAndGetContent($this->manageSubscriptionsUrl);
     $this->assertNotEmpty($content);
     $this->assertTrue(strpos($content, 'id="marketingListsManageSubscriptionListView-toggleUnsubscribed_' . $marketingListId . '_0" type="radio" name="marketingListsManage' . 'SubscriptionListView-toggleUnsubscribed_' . $marketingListId) === false);
     $this->assertTrue(strpos($content, 'id="marketingListsManageSubscriptionListView-toggleUnsubscribed_' . $marketingListId . '_1" checked="checked" type="radio" name="marketingListsManage' . 'SubscriptionListView-toggleUnsubscribed_' . $marketingListId) === false);
     $this->assertTrue(strpos($content, '<td>marketingList 04</td>') === false);
     $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $autoresponderItemActivities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(AutoresponderItemActivity::TYPE_UNSUBSCRIBE, $autoresponderItem->id, $personId);
     $this->assertEmpty($autoresponderItemActivities);
 }
 /**
  * @depends testRunWithInvalidMergeTags
  */
 public function testRunWithValidMergeTags()
 {
     $job = new AutoresponderMessageInQueueJob();
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact = ContactTestHelper::createContactByNameForOwner('contact 05', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 06', 'description goes here', 'fromName', '*****@*****.**');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('autoresponder 06', 'subject 06', '[[FIRST^NAME]]', '[[LAST^NAME]]', 1, Autoresponder::OPERATION_SUBSCRIBE, $marketingList);
     $processed = AutoresponderItem::NOT_PROCESSED;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 10);
     AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     $this->assertTrue($job->run());
     $autoresponderItems = AutoresponderItem::getAll();
     $this->assertCount(4, $autoresponderItems);
     $autoresponderItemsProcessed = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::PROCESSED, $autoresponder->id);
     $this->assertCount(1, $autoresponderItemsProcessed);
 }
 /**
  * @depends testProcessDueAutoresponderItemWithUnsubscribeAndManageSubscriptionsUrlMergeTags
  */
 public function testProcessDueAutoresponderItemWithoutUnsubscribeAndManageSubscriptionsUrlMergeTags()
 {
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $contact = ContactTestHelper::createContactByNameForOwner('contact 13', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 13', 'description', 'CustomFromName', '*****@*****.**');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 13', 'Plain Text', 'HTML', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList);
     $processed = 0;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     $this->processDueItem($autoresponderItem);
     $this->assertEquals(1, $autoresponderItem->processed);
     $textContent = $autoresponderItem->emailMessage->content->textContent;
     $htmlContent = $autoresponderItem->emailMessage->content->htmlContent;
     $this->assertNotEquals($autoresponder->textContent, $textContent);
     $this->assertNotEquals($autoresponder->htmlContent, $htmlContent);
     $this->assertContains('Plain Text', $textContent);
     $this->assertContains('/marketingLists/external/unsubscribe?hash=', $textContent);
     $this->assertEquals(1, substr_count($textContent, '/marketingLists/external/unsubscribe?hash='));
     $this->assertContains('/marketingLists/external/manageSubscriptions?hash=', $textContent);
     $this->assertEquals(1, substr_count($textContent, '/marketingLists/external/manageSubscriptions?hash='));
     $this->assertContains('HTML<br /><br /><a href="localhost/', $htmlContent);
     $this->assertContains('<img width="1" height="1" src="localhost', $htmlContent);
     $this->assertContains('/tracking/default/track?id=', $htmlContent);
     $this->assertEquals(1, substr_count($htmlContent, '/tracking/default/track?id='));
     $this->assertContains('/marketingLists/external/unsubscribe?hash=', $htmlContent);
     $this->assertEquals(1, substr_count($htmlContent, '/marketingLists/external/unsubscribe?hash='));
     $this->assertContains('<br /><a href="localhost/', $htmlContent);
     $this->assertEquals(2, substr_count($htmlContent, '<br /><a href="localhost/'));
     $this->assertContains('/marketingLists/external/manageSubscriptions?hash=', $htmlContent);
     $this->assertEquals(1, substr_count($htmlContent, '/marketingLists/external/manageSubscriptions?hash='));
 }
 public function testWhetherAutoresponderFactoryFetchesTheAppropriateAutoresponderMessage()
 {
     global $wpdb;
     $autoresponder = AutoresponderTestHelper::addAutoresponderAndFetchRow($this->newsletter_id, "test");
     $addAutoresponderMessageQuery = sprintf("INSERT INTO {$wpdb->prefix}wpr_autoresponder_messages (aid, subject, sequence) VALUES (%d, '%s', %d)", $autoresponder->id, 'Test Subject', 1);
     $wpdb->query($addAutoresponderMessageQuery);
     $autoresponder_message_id = $wpdb->insert_id;
     $message = AutoresponderMessage::getMessage($autoresponder_message_id);
     $this->assertEquals('Test Subject', $message->getSubject());
     $this->assertEquals($autoresponder_message_id, $message->getId());
     $this->assertEquals(1, $message->getDayNumber());
 }