/**
  * @see 0011584: allow to set group member roles
  */
 public function testRemoveListMemberRoles()
 {
     $list = $this->testCeateListWithMemberAndRole();
     $list['memberroles'] = array();
     $updatedList = $this->_uit->saveList($list);
     $this->assertTrue(empty($updatedList['memberroles']), 'memberroles should be removed: ' . print_r($updatedList, true));
 }
 /**
  * @see 0011584: allow to set group member roles
  */
 public function testListMemberRoles()
 {
     $contact = $this->_addContact();
     $listRole = $this->_uit->saveListRole(array('name' => 'my test role', 'description' => 'my test description'));
     $memberroles = array(array('contact_id' => $contact['id'], 'list_role_id' => $listRole['id']));
     $list = $this->_uit->saveList(array('name' => 'my test list', 'description' => '', 'members' => array($contact['id']), 'memberroles' => $memberroles, 'type' => Addressbook_Model_List::LISTTYPE_LIST));
     $this->assertEquals(array($contact['id']), $list['members'], 'members are not saved/returned in list: ' . print_r($list, true));
     $this->assertTrue(isset($list['memberroles']), 'memberroles missing from list');
     $this->assertEquals(1, count($list['memberroles']), 'member roles are not saved/returned in list: ' . print_r($list, true));
     $this->assertTrue(isset($list['memberroles'][0]['list_role_id']['id']), 'list roles should be resolved');
     $this->assertEquals($listRole['id'], $list['memberroles'][0]['list_role_id']['id'], 'member roles are not saved/returned in list: ' . print_r($list, true));
     $list['memberroles'] = array();
     $updatedList = $this->_uit->saveList($list);
     $this->assertTrue(empty($updatedList['memberroles']), 'memberroles should be removed: ' . print_r($updatedList, true));
 }
 /**
  * testBuildGroupMemberPathForContact
  */
 public function testBuildGroupMemberPathForContact()
 {
     $contact = Addressbook_Controller_Contact::getInstance()->create(new Addressbook_Model_Contact(array('n_family' => 'tester', 'email' => '*****@*****.**')));
     $adbJson = new Addressbook_Frontend_Json();
     $listRole = $adbJson->saveListRole(array('name' => 'my role', 'description' => 'my test description'));
     $listRole2 = $adbJson->saveListRole(array('name' => 'my second role', 'description' => 'my test description'));
     $memberroles = array(array('contact_id' => $contact->getId(), 'list_role_id' => $listRole['id']), array('contact_id' => $contact->getId(), 'list_role_id' => $listRole2['id']));
     $adbJson->saveList(array('name' => 'my test group', 'description' => '', 'members' => array($contact->getId()), 'memberroles' => $memberroles, 'type' => Addressbook_Model_List::LISTTYPE_LIST, 'relations' => array($this->_getParentRelationArray($this->_getFatherWithGrandfather()))));
     $recordPaths = $this->_uit->generatePathForRecord($contact);
     $this->assertTrue($recordPaths instanceof Tinebase_Record_RecordSet);
     $this->assertEquals(2, count($recordPaths), 'should find 2 path for record. paths:' . print_r($recordPaths->toArray(), true));
     $expectedPaths = array('/grandparent/father/my test group/my role/tester', '/grandparent/father/my test group/my second role/tester');
     foreach ($expectedPaths as $expectedPath) {
         $this->assertTrue(in_array($expectedPath, $recordPaths->path), 'could not find path ' . $expectedPath . ' in ' . print_r($recordPaths->toArray(), true));
     }
     return $contact;
 }