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>&#160;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>&#160;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>&#160;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));
 }
Example #8
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);
 }