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)); }
/** * @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)); }
/** * @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)); }
/** * @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); }
/** * @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); }
/** * @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); }
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()); }