public function actionCountMembers($marketingListId) { $marketingList = MarketingList::getById((int) $marketingListId); ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($marketingList); $countArray = array('subscriberCount' => MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingListId, false), 'unsubscriberCount' => MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingListId, true)); echo CJSON::encode($countArray); }
protected function renderUnsubscribedCountContent() { $count = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($this->modelId, true); $message = Zurmo::t('MarketingListsModule', '{count} Unsubscribed', array('{count}' => $count)); $content = ZurmoHtml::tag('strong', array('class' => static::UNSUBSCRIBERS_STATS_CLASS), $message); return $content; }
/** * @depends testMassUnsubscribeActionsForSelectedIds */ public function testMassUnsubscribePagesProperlyAndUnsubscribesAllSelected() { // MassUnsubscribe for selected Record Count $listId = self::getModelIdByModelNameAndName('MarketingList', 'MarketingList2'); $this->assertNotEmpty($listId); $list = MarketingList::getById($listId); $this->assertNotEmpty($list); $members = $list->marketingListMembers; $this->assertEquals(17, count($members)); // ensure all members are subscribed first. foreach ($members as $member) { $member->unsubscribed = 0; $member->setScenario(MarketingListMember::SCENARIO_MANUAL_CHANGE); $this->assertTrue($member->unrestrictedSave()); } $unsubscribedCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($listId, 1); $this->setGetArray(array('selectAll' => '1', 'MarketingListMembersPortletView_page' => 1, 'id' => $listId)); $this->setPostArray(array('selectedRecordCount' => 17)); // Run Mass Unsubscribe using progress save for page1. $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize'); $this->assertEquals(5, $pageSize); $this->runControllerWithExitExceptionAndGetContent('marketingLists/member/massUnsubscribe'); $expectedUnsubscribedCountAfterFirstRequest = $unsubscribedCount + $pageSize; // because the subscribe tests subscribed all $actualUnsubscribedCountAfterFirstRequest = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($listId, 1); $this->assertEquals($expectedUnsubscribedCountAfterFirstRequest, $actualUnsubscribedCountAfterFirstRequest); $this->setGetArray(array('selectAll' => '1', 'MarketingListMember_page' => 2, 'id' => $listId)); $this->setPostArray(array('selectedRecordCount' => 17)); // Run Mass Unsubscribe using progress save for page2. $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize'); $this->assertEquals(5, $pageSize); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/member/massUnsubscribeProgress'); $expectedUnsubscribedCountAfterSecondRequest = $expectedUnsubscribedCountAfterFirstRequest + 5; // because the subscribe tests subscribed all $actualUnsubscribedCountAfterSecondRequest = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($listId, 1); $this->assertEquals($expectedUnsubscribedCountAfterSecondRequest, $actualUnsubscribedCountAfterSecondRequest); $this->setGetArray(array('selectAll' => '1', 'MarketingListMember_page' => 3, 'id' => $listId)); $this->setPostArray(array('selectedRecordCount' => 17)); // Run Mass Unsubscribe using progress save for page3. $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize'); $this->assertEquals(5, $pageSize); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/member/massUnsubscribeProgress'); $expectedUnsubscribedCountAfterThirdRequest = $expectedUnsubscribedCountAfterSecondRequest + 5; // because the subscribe tests subscribed all $actualUnsubscribedCountAfterThirdRequest = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($listId, 1); $this->assertEquals($expectedUnsubscribedCountAfterThirdRequest, $actualUnsubscribedCountAfterThirdRequest); $this->setGetArray(array('selectAll' => '1', 'MarketingListMember_page' => 4, 'id' => $listId)); $this->setPostArray(array('selectedRecordCount' => 17)); // Run Mass Unsubscribe using progress save for page4. $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize'); $this->assertEquals(5, $pageSize); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/member/massUnsubscribeProgress'); $expectedUnsubscribedCountAfterFourthRequest = $expectedUnsubscribedCountAfterThirdRequest + 2; // because the subscribe tests subscribed all $actualUnsubscribedCountAfterFourthRequest = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($listId, 1); $this->assertEquals($expectedUnsubscribedCountAfterFourthRequest, $actualUnsubscribedCountAfterFourthRequest); $subscribedCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($listId, 0); $this->assertEquals(0, $subscribedCount); }
public function testMassSubscribeActionsAllFromContactsController() { //MassSubscribe view for all result selected ids $this->setGetArray(array('selectAll' => '1')); $this->resetPostArray(); $content = $this->runControllerWithNoExceptionsAndGetContent($this->contactsMassSubscribeUrl); $this->assertContains('<strong>1</strong> Contact selected for subscription', $content); $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize'); $this->assertEquals(5, $pageSize); $this->setGetArray(array('selectAll' => '1', 'massSubscribe' => '', 'Contact_page' => 1)); $this->setPostArray(array('selectedRecordCount' => MarketingListMember::getCount(), 'MarketingListMember' => array('marketingList' => array('id' => static::$marketingList->id)))); $this->runControllerWithRedirectExceptionAndGetUrl($this->contactsMassSubscribeUrl); $expectedSubscribedCountAfterFirstRequest = 0; $actualSubscribedCountAfterFirstRequest = MarketingListMember::getCountByMarketingListIdAndUnsubscribed(static::$marketingList->id, 0); $this->assertEquals($expectedSubscribedCountAfterFirstRequest, $actualSubscribedCountAfterFirstRequest); }
/** * @depends testCreateAndGetMarketingListMemberById */ public function testGetCountByMarketingListIdAndUnsubscribed() { $marketingList = MarketingListTestHelper::createMarketingListByName('test marketing List 05'); $this->assertNotNull($marketingList); $contacts = Contact::getAll(); $this->assertNotEmpty($contacts); $unsubscribedCount = 0; $subscribedCount = 0; foreach ($contacts as $index => $contact) { $unsubcribed = $index % 2; $member = MarketingListMemberTestHelper::populateValidMarketingListMember($unsubcribed, $marketingList, $contact); $this->assertTrue($member->unrestrictedSave()); if ($unsubcribed) { $unsubscribedCount++; } else { $subscribedCount++; } } $calculatedSubscribedCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList->id, 0); $calculatedUnsubscribedCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList->id, 1); $this->assertEquals($subscribedCount, $calculatedSubscribedCount); $this->assertEquals($unsubscribedCount, $calculatedUnsubscribedCount); }
/** * @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()); }
public function testMassSubscribeActionsForSelectedIds() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $contactsCount = Contact::getCount(); $superContactId1 = ContactTestHelper::createContactByNameForOwner('superContact1', $super); $superContactId2 = ContactTestHelper::createContactByNameForOwner('superContact2', $super); $superContactId3 = ContactTestHelper::createContactByNameForOwner('superContact3', $super); $superContactId4 = ContactTestHelper::createContactByNameForOwner('superContact4', $super); $superContactId5 = ContactTestHelper::createContactByNameForOwner('superContact5', $super); $superContactId6 = ContactTestHelper::createContactByNameForOwner('superContact6', $super); $superContactId7 = ContactTestHelper::createContactByNameForOwner('superContact7', $super); $superContactId8 = ContactTestHelper::createContactByNameForOwner('superContact8', $super); $superContactId9 = ContactTestHelper::createContactByNameForOwner('superContact9', $super); $marketingList1 = MarketingListTestHelper::createMarketingListByName('marketingList1'); $marketingList2 = MarketingListTestHelper::createMarketingListByName('marketingList2'); //Load Model MassSubscribe Views. //MassSubscribe view for single selected ids $selectedIds = implode(',', array($superContactId1->id, $superContactId4->id)); // Not Coding Standard $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '')); $this->resetPostArray(); $content = $this->runControllerWithNoExceptionsAndGetContent('contacts/default/massSubscribe'); $this->assertContains('<strong>2</strong> Contacts selected for subscription', $content); //MassSubscribe view for all result selected ids $this->setGetArray(array('selectAll' => '1')); $this->resetPostArray(); $content = $this->runControllerWithNoExceptionsAndGetContent('contacts/default/massSubscribe'); $this->assertContains('<strong>9</strong> Contacts selected for subscription', $content); //MassSubscribe with no marketingList selected //MassSubscribe for selected ids for paged scenario //MassSubscribe for selected ids for page 1 $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize'); $this->assertEquals(5, $pageSize); $selectedIds = implode(',', array($superContactId1->id, $superContactId2->id, $superContactId3->id, $superContactId5->id, $superContactId6->id, $superContactId8->id, $superContactId9->id)); $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '', 'massSubscribe' => '', 'Contact_page' => 1)); $this->setPostArray(array('selectedRecordCount' => 7, 'MarketingListMember' => array('marketingList' => array('id' => $marketingList1->id)))); $this->runControllerWithExitExceptionAndGetContent('contacts/default/massSubscribe'); $expectedSubscribedCountAfterFirstRequest = $pageSize; $actualSubscribedCountAfterFirstRequest = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList1->id, 0); $this->assertEquals($expectedSubscribedCountAfterFirstRequest, $actualSubscribedCountAfterFirstRequest); $this->assertEquals(0, MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList2->id, 0)); //MassSubscribe for selected ids for page 2 $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '', 'massSubscribe' => '', 'Contact_page' => 2, 'MarketingListMember' => array('marketingList' => array('id' => $marketingList1->id)))); $this->setPostArray(array('selectedRecordCount' => 7, 'MarketingListMember' => array('marketingList' => array('id' => $marketingList1->id)))); $this->runControllerWithNoExceptionsAndGetContent('contacts/default/massSubscribeProgress'); $expectedSubscribedCountAfterSecondRequest = $actualSubscribedCountAfterFirstRequest + (7 - $pageSize); $actualSubscribedCountAfterSecondRequest = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList1->id, 0); $this->assertEquals($expectedSubscribedCountAfterSecondRequest, $actualSubscribedCountAfterSecondRequest); $this->assertEquals(0, MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList2->id, 0)); }
public function testDeleteContactCascadesMarketingListMemmers() { Yii::app()->user->userModel = User::getByUsername('super'); $contactStates = ContactState::getByName('Qualified'); $contact = new Contact(); $contact->owner = Yii::app()->user->userModel; $contact->title->value = 'Mr.'; $contact->firstName = 'Member'; $contact->lastName = 'One'; $contact->state = $contactStates[0]; $this->assertTrue($contact->save()); $contactId = $contact->id; $marketingList = MarketingListTestHelper::createMarketingListByName('Test Marketing List Member Deleted'); $member = MarketingListMemberTestHelper::populateValidMarketingListMember(1, $marketingList, $contact); $this->assertTrue($member->unrestrictedSave()); $this->assertEquals(1, count(MarketingListMember::getByContactId($contactId))); $testContact = new Contact(); $testContact->owner = Yii::app()->user->userModel; $testContact->title->value = 'Mr.'; $testContact->firstName = 'Member'; $testContact->lastName = 'Two'; $testContact->state = $contactStates[0]; $this->assertTrue($testContact->save()); $testContactId = $testContact->id; $member2 = MarketingListMemberTestHelper::populateValidMarketingListMember(1, $marketingList, $testContact); $this->assertTrue($member2->unrestrictedSave()); $this->assertEquals(1, count(MarketingListMember::getByContactId($testContact->id))); $subscribedCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList->id, 1); $this->assertEquals(2, $subscribedCount); $this->assertTrue($contact->delete()); $this->assertEquals(0, count(MarketingListMember::getByContactId($contactId))); $this->assertTrue($testContact->delete()); $this->assertEquals(0, count(MarketingListMember::getByContactId($testContactId))); $subscribedCount = MarketingListMember::getCountByMarketingListIdAndUnsubscribed($marketingList->id, 1); $this->assertEquals(0, $subscribedCount); }