/**
  * Get a list of managed activity-types by searching CiviCase XML files
  *
  * @return array
  * @see CRM_Utils_Hook::managed
  * @throws CRM_Core_Exception
  */
 public static function createManagedActivityTypes(CRM_Case_XMLRepository $xmlRepo, CRM_Core_ManagedEntities $me)
 {
     $result = array();
     $validActTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, TRUE, 'name');
     $actTypes = $xmlRepo->getAllDeclaredActivityTypes();
     foreach ($actTypes as $actType) {
         $managed = array('module' => 'civicrm', 'name' => "civicase:act:{$actType}", 'entity' => 'OptionValue', 'update' => 'never', 'cleanup' => 'unused', 'params' => array('version' => 3, 'option_group_id' => 'activity_type', 'label' => $actType, 'name' => $actType, 'description' => $actType, 'component_id' => 'CiviCase'));
         // We'll create managed-entity if this record doesn't exist yet
         // or if we previously decided to manage this record.
         if (!in_array($actType, $validActTypes)) {
             $result[] = $managed;
         } elseif ($me->get($managed['module'], $managed['name'])) {
             $result[] = $managed;
         }
     }
     return $result;
 }
 public function testGetAllDeclaredActivityTypes()
 {
     $repo = new CRM_Case_XMLRepository(array('CaseTypeWithTwoActivityTypes', 'CaseTypeWithThreeActivityTypes'), array('CaseTypeWithTwoActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithTwoActivityTypes']), 'CaseTypeWithThreeActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithThreeActivityTypes']), 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleRole'])));
     // omitted: 'Single Activity Type'
     $expected = array('First Activity Type', 'Second Activity Type', 'Third Activity Type');
     $actual = $repo->getAllDeclaredActivityTypes();
     $this->assertEquals($expected, $actual);
 }