/**
  * testMergeDuplicateTags
  * 
  * @see 0007354: function for merging duplicate tags
  */
 public function testMergeDuplicateTags()
 {
     $sharedTag1 = $this->_createSharedTag();
     // sleep to make sure, $sharedTag1 is always chosen as 'master'
     sleep(1);
     $sharedTag2 = $this->_createSharedTag();
     $contactIds = Addressbook_Controller_Contact::getInstance()->getAll()->getArrayOfIds();
     $contactFilter = new Addressbook_Model_ContactFilter(array(array('field' => 'id', 'operator' => 'in', 'value' => array_slice($contactIds, 0, 3))));
     $sharedTag1 = Tinebase_Tags::getInstance()->attachTagToMultipleRecords($contactFilter, $sharedTag1);
     $this->assertEquals(3, $sharedTag1->occurrence);
     $contactFilter = new Addressbook_Model_ContactFilter(array(array('field' => 'id', 'operator' => 'in', 'value' => array_slice($contactIds, 3, 3))));
     $sharedTag2 = Tinebase_Tags::getInstance()->attachTagToMultipleRecords($contactFilter, $sharedTag2);
     $this->_instance->mergeDuplicateSharedTags('Addressbook_Model_Contact');
     $sharedTag1AfterMerge = $this->_instance->get($sharedTag1);
     $this->assertEquals($sharedTag1->occurrence + 3, $sharedTag1AfterMerge->occurrence, 'occurrence should have been increased by three: ' . print_r($sharedTag1AfterMerge->toArray(), TRUE));
     $this->setExpectedException('Tinebase_Exception_NotFound');
     $this->_instance->get($sharedTag2);
 }