public function testUnsubscribeContactFromList()
 {
     //Empty members from the test marketing list
     $marketingList = MarketingList::getById(self::$marketingListId);
     foreach ($marketingList->marketingListMembers as $marketingListMember) {
         $marketingListMember->delete();
     }
     $marketingList->forget();
     $marketingList = MarketingList::getById(self::$marketingListId);
     $this->assertEquals(0, $marketingList->marketingListMembers->count());
     //Subscribe new member
     $contact = ContactTestHelper::createContactByNameForOwner('jason', Yii::app()->user->userModel);
     $marketingList->addNewMember($contact->id);
     $marketingList->forget();
     $marketingList = MarketingList::getById(self::$marketingListId);
     $this->assertEquals(1, $marketingList->marketingListMembers->count());
     $this->assertEquals(0, $marketingList->marketingListMembers[0]->unsubscribed);
     //Try to unsubscribe the contact, it should unsubscribe them
     $action = new ActionForWorkflowForm('Contact', Workflow::TYPE_ON_SAVE);
     $action->type = ActionForWorkflowForm::TYPE_UNSUBSCRIBE_FROM_LIST;
     $attributes = array('marketingList' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => self::$marketingListId));
     $action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes));
     $helper = new WorkflowActionProcessingHelper(88, 'some name', $action, $contact, Yii::app()->user->userModel);
     $helper->processNonUpdateSelfAction();
     $marketingList->forget();
     $marketingList = MarketingList::getById(self::$marketingListId);
     $this->assertEquals(1, $marketingList->marketingListMembers->count());
     $this->assertEquals(1, $marketingList->marketingListMembers[0]->unsubscribed);
     //Subscribe contact from list, then unsubscribe
     $marketingListMembers = MarketingListMember::getAll();
     $this->assertEquals(1, count($marketingListMembers));
     $marketingListMembers[0]->unsubscribed = false;
     $marketingListMembers[0]->unrestrictedSave();
     $marketingList->forget();
     $marketingList = MarketingList::getById(self::$marketingListId);
     $this->assertEquals(1, $marketingList->marketingListMembers->count());
     $this->assertEquals(0, $marketingList->marketingListMembers[0]->unsubscribed);
     //Try to unsubscribe the contact, it should unsubscribe them
     $helper = new WorkflowActionProcessingHelper(88, 'some name', $action, $contact, Yii::app()->user->userModel);
     $helper->processNonUpdateSelfAction();
     $marketingList->forget();
     $marketingList = MarketingList::getById(self::$marketingListId);
     $this->assertEquals(1, $marketingList->marketingListMembers->count());
     $this->assertEquals(1, $marketingList->marketingListMembers[0]->unsubscribed);
 }
 /**
  * @depends testCreateAndGetMarketingListMemberById
  */
 public function testDeleteMarketingListMember()
 {
     MarketingListMemberTestHelper::createMarketingListMember();
     $marketingListMembers = MarketingListMember::getAll();
     $this->assertNotEmpty($marketingListMembers);
     $this->assertEquals(2, count($marketingListMembers));
     $marketingListMembers[0]->delete();
     $marketingListMembers = MarketingListMember::getAll();
     $this->assertNotEmpty($marketingListMembers);
     $this->assertEquals(1, count($marketingListMembers));
 }