Merge pull request #14669 from civicrm/5.15
[civicrm-core.git] / tests / phpunit / CRM / Core / BAO / CustomFieldTest.php
index 58b056cf05fa9325e83234fccf97030f4e6842da..70449f8d6ccb9254ab35721f375adea896ca2306 100644 (file)
@@ -2,29 +2,41 @@
 
 /**
  * Class CRM_Core_BAO_CustomFieldTest
+ *
  * @group headless
  */
 class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
 
+  use CRMTraits_Custom_CustomDataTrait;
+
   protected $customFieldID;
 
-  public function setUp() {
-    parent::setUp();
+  /**
+   * Clean up after test.
+   *
+   * @throws \Exception
+   */
+  public function tearDown() {
+    $this->quickCleanup([], TRUE);
+    parent::tearDown();
   }
 
+  /**
+   * Test creating a custom field.
+   */
   public function testCreateCustomField() {
     $customGroup = $this->createCustomField();
     $customFieldID = $this->assertDBNotNull('CRM_Core_DAO_CustomField', $customGroup['id'], 'id', 'custom_group_id',
       'Database check for created CustomField.'
     );
-    $fields = array(
+    $fields = [
       'id' => $customFieldID,
       'label' => 'editTestFld',
       'is_active' => 1,
       'data_type' => 'String',
       'html_type' => 'Text',
       'custom_group_id' => $customGroup['id'],
-    );
+    ];
 
     CRM_Core_BAO_CustomField::create($fields);
     $this->assertDBNotNull('CRM_Core_DAO_CustomField', 1, 'id', 'is_active', 'Database check for edited CustomField.');
@@ -38,15 +50,18 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
     $this->customGroupDelete($customGroup['id']);
   }
 
+  /**
+   * Test custom field create accepts passed column name.
+   */
   public function testCreateCustomFieldColumnName() {
-    $customGroup = $this->customGroupCreate(array('extends' => 'Individual'));
-    $fields = array(
+    $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
+    $fields = [
       'label' => 'testFld 2',
       'column_name' => 'special_colname',
       'data_type' => 'String',
       'html_type' => 'Text',
       'custom_group_id' => $customGroup['id'],
-    );
+    ];
     CRM_Core_BAO_CustomField::create($fields);
     $customFieldID = $this->assertDBNotNull('CRM_Core_DAO_CustomField', $customGroup['id'], 'id', 'custom_group_id',
       'Database check for created CustomField.'
@@ -58,15 +73,18 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
     $this->customGroupDelete($customGroup['id']);
   }
 
+  /**
+   * Test that name is used for the column.
+   */
   public function testCreateCustomFieldName() {
-    $customGroup = $this->customGroupCreate(array('extends' => 'Individual'));
-    $fields = array(
+    $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
+    $fields = [
       'label' => 'testFld 2',
       'name' => 'special_fldlname',
       'data_type' => 'String',
       'html_type' => 'Text',
       'custom_group_id' => $customGroup['id'],
-    );
+    ];
     CRM_Core_BAO_CustomField::create($fields);
     $customFieldID = $this->assertDBNotNull('CRM_Core_DAO_CustomField', $customGroup['id'], 'id', 'custom_group_id',
       'Database check for created CustomField.'
@@ -78,26 +96,29 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
     $this->customGroupDelete($customGroup['id']);
   }
 
+  /**
+   * Test get fields function.
+   */
   public function testGetFields() {
-    $customGroup = $this->customGroupCreate(array('extends' => 'Individual'));
-    $fields = array(
+    $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
+    $fields = [
       'label' => 'testFld1',
       'data_type' => 'String',
       'html_type' => 'Text',
       'is_active' => 1,
       'custom_group_id' => $customGroup['id'],
-    );
+    ];
     CRM_Core_BAO_CustomField::create($fields);
     $this->assertDBNotNull('CRM_Core_DAO_CustomField', $customGroup['id'], 'id', 'custom_group_id',
       'Database check for created CustomField.'
     );
-    $fields = array(
+    $fields = [
       'label' => 'testFld2',
       'data_type' => 'String',
       'html_type' => 'Text',
       'is_active' => 1,
       'custom_group_id' => $customGroup['id'],
-    );
+    ];
     CRM_Core_BAO_CustomField::create($fields);
     $this->assertDBNotNull('CRM_Core_DAO_CustomField', $customGroup['id'], 'id', 'custom_group_id',
       'Database check for created CustomField.'
@@ -106,69 +127,69 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
     $this->customGroupDelete($customGroup['id']);
   }
 
+  /**
+   * @throws \Exception
+   */
   public function testGetDisplayedValues() {
-    $customGroup = $this->customGroupCreate(array('extends' => 'Individual'));
-    $fieldsToCreate = array(
-      array(
+    $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
+    $fieldsToCreate = [
+      [
         'data_type' => 'Country',
         'html_type' => 'Select Country',
-        'tests' => array(
+        'tests' => [
           'United States' => 1228,
           '' => NULL,
-        ),
-      ),
-      array(
+        ],
+      ],
+      [
         'data_type' => 'StateProvince',
         'html_type' => 'Multi-Select State/Province',
-        'tests' => array(
+        'tests' => [
           '' => 0,
           'Alabama' => 1000,
-          'Alabama, Alaska' => array(1000, 1001),
-        ),
-      ),
-      array(
+          'Alabama, Alaska' => [1000, 1001],
+        ],
+      ],
+      [
         'data_type' => 'String',
         'html_type' => 'Radio',
-        'option_values' => array(
+        'option_values' => [
           'key' => 'KeyLabel',
-        ),
-        'tests' => array(
+        ],
+        'tests' => [
           'KeyLabel' => 'key',
-        ),
-      ),
-      array(
+        ],
+      ],
+      [
         'data_type' => 'String',
         'html_type' => 'CheckBox',
-        'option_values' => array(
+        'option_values' => [
           'key1' => 'Label1',
           'key2' => 'Label2',
           'key3' => 'Label3',
           'key4' => 'Label4',
-        ),
-        'tests' => array(
-          'Label1' => array('key1'),
+        ],
+        'tests' => [
+          'Label1' => ['key1'],
           'Label2' => 'key2',
-          'Label2, Label3' => array('key2', 'key3'),
-          'Label3, Label4' => CRM_Utils_Array::implodePadded(array('key3', 'key4')),
-          'Label1, Label4' => array('key1' => 1, 'key4' => 1),
-        ),
-      ),
-      array(
+          'Label2, Label3' => ['key2', 'key3'],
+          'Label3, Label4' => CRM_Utils_Array::implodePadded(['key3', 'key4']),
+          'Label1, Label4' => ['key1' => 1, 'key4' => 1],
+        ],
+      ],
+      [
         'data_type' => 'Date',
         'html_type' => 'Select Date',
         'date_format' => 'd M yy',
         'time_format' => 1,
-        'tests' => array(
+        'tests' => [
           '1 Jun 1999 1:30PM' => '1999-06-01 13:30',
           '' => '',
-        ),
-      ),
-    );
+        ],
+      ],
+    ];
     foreach ($fieldsToCreate as $num => $field) {
-      $params = $field + array(
-        'label' => 'test field ' . $num,
-        'custom_group_id' => $customGroup['id'],
-      );
+      $params = $field + ['label' => 'test field ' . $num, 'custom_group_id' => $customGroup['id']];
       unset($params['tests']);
       $createdField = $this->callAPISuccess('customField', 'create', $params);
       foreach ($field['tests'] as $expected => $input) {
@@ -179,6 +200,12 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
     $this->customGroupDelete($customGroup['id']);
   }
 
+  /**
+   * Test CRM_Core_BAO_CustomField::displayValue.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Exception
+   */
   public function testGetDisplayedValuesContactRef() {
     $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
     $params = [
@@ -200,13 +227,13 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
   }
 
   public function testDeleteCustomField() {
-    $customGroup = $this->customGroupCreate(array('extends' => 'Individual'));
-    $fields = array(
+    $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
+    $fields = [
       'custom_group_id' => $customGroup['id'],
       'label' => 'Throwaway Field',
       'dataType' => 'Memo',
       'htmlType' => 'TextArea',
-    );
+    ];
 
     $customField = $this->customFieldCreate($fields);
     $fieldObject = new CRM_Core_BAO_CustomField();
@@ -223,79 +250,81 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
    * Move a custom field from $groupA to $groupB.
    *
    * Make sure that data records are correctly matched and created.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function testMoveField() {
     $countriesByName = array_flip(CRM_Core_PseudoConstant::country(FALSE, FALSE));
     $this->assertTrue($countriesByName['Andorra'] > 0);
-    $groups = array(
-      'A' => $this->customGroupCreate(array(
+    $groups = [
+      'A' => $this->customGroupCreate([
         'title' => 'Test_Group A',
         'name' => 'test_group_a',
-        'extends' => array('Individual'),
+        'extends' => ['Individual'],
         'style' => 'Inline',
         'is_multiple' => 0,
         'is_active' => 1,
         'version' => 3,
-      )),
-      'B' => $this->customGroupCreate(array(
+      ]),
+      'B' => $this->customGroupCreate([
         'title' => 'Test_Group B',
         'name' => 'test_group_b',
-        'extends' => array('Individual'),
+        'extends' => ['Individual'],
         'style' => 'Inline',
         'is_multiple' => 0,
         'is_active' => 1,
         'version' => 3,
-      )),
-    );
+      ]),
+    ];
     $groupA = $groups['A']['values'][$groups['A']['id']];
     $groupB = $groups['B']['values'][$groups['B']['id']];
-    $countryA = $this->customFieldCreate(array(
+    $countryA = $this->customFieldCreate([
       'custom_group_id' => $groups['A']['id'],
       'label' => 'Country A',
       'dataType' => 'Country',
       'htmlType' => 'Select Country',
       'default_value' => NULL,
-    ));
-    $countryB = $this->customFieldCreate(array(
+    ]);
+    $countryB = $this->customFieldCreate([
       'custom_group_id' => $groups['A']['id'],
       'label' => 'Country B',
       'dataType' => 'Country',
       'htmlType' => 'Select Country',
       'default_value' => NULL,
-    ));
-    $countryC = $this->customFieldCreate(array(
+    ]);
+    $countryC = $this->customFieldCreate([
       'custom_group_id' => $groups['B']['id'],
       'label' => 'Country C',
       'dataType' => 'Country',
       'htmlType' => 'Select Country',
       'default_value' => NULL,
-    ));
+    ]);
 
-    $fields = array(
+    $fields = [
       'countryA' => $countryA['values'][$countryA['id']],
       'countryB' => $countryB['values'][$countryB['id']],
       'countryC' => $countryC['values'][$countryC['id']],
-    );
-    $contacts = array(
-      'alice' => $this->individualCreate(array(
+    ];
+    $contacts = [
+      'alice' => $this->individualCreate([
         'first_name' => 'Alice',
         'last_name' => 'Albertson',
         'custom_' . $fields['countryA']['id'] => $countriesByName['Andorra'],
         'custom_' . $fields['countryB']['id'] => $countriesByName['Barbados'],
-      )),
-      'bob' => $this->individualCreate(array(
+      ]),
+      'bob' => $this->individualCreate([
         'first_name' => 'Bob',
         'last_name' => 'Roberts',
         'custom_' . $fields['countryA']['id'] => $countriesByName['Austria'],
         'custom_' . $fields['countryB']['id'] => $countriesByName['Bermuda'],
         'custom_' . $fields['countryC']['id'] => $countriesByName['Chad'],
-      )),
-      'carol' => $this->individualCreate(array(
+      ]),
+      'carol' => $this->individualCreate([
         'first_name' => 'Carol',
         'last_name' => 'Carolson',
         'custom_' . $fields['countryC']['id'] => $countriesByName['Cambodia'],
-      )),
-    );
+      ]),
+    ];
 
     // Move!
     CRM_Core_BAO_CustomField::moveField($fields['countryB']['id'], $groupB['id']);
@@ -316,10 +345,10 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
             WHERE entity_id = %1
             AND {$fields['countryB']['column_name']} = %3
             AND {$fields['countryC']['column_name']} is null",
-      array(
-        1 => array($contacts['alice'], 'Integer'),
-        3 => array($countriesByName['Barbados'], 'Integer'),
-      )
+      [
+        1 => [$contacts['alice'], 'Integer'],
+        3 => [$countriesByName['Barbados'], 'Integer'],
+      ]
     );
 
     // Bob: Group[B] has merged fields[countryB] and fields[countryC] on the same record
@@ -328,11 +357,11 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
             WHERE entity_id = %1
             AND {$fields['countryB']['column_name']} = %3
             AND {$fields['countryC']['column_name']} = %4",
-      array(
-        1 => array($contacts['bob'], 'Integer'),
-        3 => array($countriesByName['Bermuda'], 'Integer'),
-        4 => array($countriesByName['Chad'], 'Integer'),
-      )
+      [
+        1 => [$contacts['bob'], 'Integer'],
+        3 => [$countriesByName['Bermuda'], 'Integer'],
+        4 => [$countriesByName['Chad'], 'Integer'],
+      ]
     );
 
     // Carol: Group[B] still has fields[countryC] but did not get fields[countryB]
@@ -341,10 +370,10 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
             WHERE entity_id = %1
             AND {$fields['countryB']['column_name']} is null
             AND {$fields['countryC']['column_name']} = %4",
-      array(
-        1 => array($contacts['carol'], 'Integer'),
-        4 => array($countriesByName['Cambodia'], 'Integer'),
-      )
+      [
+        1 => [$contacts['carol'], 'Integer'],
+        4 => [$countriesByName['Cambodia'], 'Integer'],
+      ]
     );
 
     $this->customGroupDelete($groups['A']['id']);
@@ -353,6 +382,8 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
 
   /**
    * Test get custom field id function.
+   *
+   * @throws \CiviCRM_API3_Exception
    */
   public function testGetCustomFieldID() {
     $this->createCustomField();
@@ -361,22 +392,248 @@ class CRM_Core_BAO_CustomFieldTest extends CiviUnitTestCase {
 
     $fieldID = CRM_Core_BAO_CustomField::getCustomFieldID('testFld', 'new custom group');
     $this->assertEquals($this->customFieldID, $fieldID);
+
+    $fieldID = CRM_Core_BAO_CustomField::getCustomFieldID('testFld', 'new custom group', TRUE);
+    $this->assertEquals('custom_' . $this->customFieldID, $fieldID);
+
+    // create field with same name in a different group
+    $this->createCustomField('other custom group');
+    $otherFieldID = CRM_Core_BAO_CustomField::getCustomFieldID('testFld', 'other custom group');
+    // make sure it does not return the field ID of the first field
+    $this->assertNotEquals($fieldID, $otherFieldID);
   }
 
   /**
+   * Create a custom field
+   *
+   * @param string $groupTitle
+   *
    * @return array
    */
-  protected function createCustomField() {
-    $customGroup = $this->customGroupCreate(array('extends' => 'Individual'));
-    $fields = array(
+  protected function createCustomField($groupTitle = 'new custom group') {
+    $customGroup = $this->customGroupCreate([
+      'extends' => 'Individual',
+      'title' => $groupTitle,
+    ]);
+    $fields = [
       'label' => 'testFld',
       'data_type' => 'String',
       'html_type' => 'Text',
       'custom_group_id' => $customGroup['id'],
-    );
+    ];
     $field = CRM_Core_BAO_CustomField::create($fields);
     $this->customFieldID = $field->id;
     return $customGroup;
   }
 
+  /**
+   * Test the getFieldsForImport function.
+   *
+   * @throws \Exception
+   */
+  public function testGetFieldsForImport() {
+    $this->entity = 'Contact';
+    $this->createCustomGroupWithFieldsOfAllTypes();
+    $customGroupID = $this->ids['CustomGroup']['Custom Group'];
+    $expected = [
+      $this->getCustomFieldName('country') => [
+        'name' => $this->getCustomFieldName('country'),
+        'type' => 1,
+        'title' => 'Country',
+        'headerPattern' => '//',
+        'import' => 1,
+        'custom_field_id' => $this->getCustomFieldID('country'),
+        'options_per_line' => NULL,
+        'text_length' => NULL,
+        'data_type' => 'Int',
+        'html_type' => 'Select Country',
+        'is_search_range' => '0',
+        'id' => $this->getCustomFieldID('country'),
+        'label' => 'Country',
+        'groupTitle' => 'Custom Group',
+        'default_value' => NULL,
+        'custom_group_id' => $customGroupID,
+        'extends' => 'Contact',
+        'extends_entity_column_value' => NULL,
+        'extends_entity_column_id' => NULL,
+        'is_view' => '0',
+        'is_multiple' => '0',
+        'option_group_id' => NULL,
+        'date_format' => NULL,
+        'time_format' => NULL,
+        'is_required' => '0',
+        'table_name' => 'civicrm_value_custom_group_' . $customGroupID,
+        'column_name' => 'country_' . $this->getCustomFieldID('country'),
+        'where' => 'civicrm_value_custom_group_' . $customGroupID . '.country_' . $this->getCustomFieldID('country'),
+        'extends_table' => 'civicrm_contact',
+        'search_table' => 'contact_a',
+      ],
+      $this->getCustomFieldName('file') => [
+        'name' => $this->getCustomFieldName('file'),
+        'type' => 2,
+        'title' => 'Custom Field',
+        'headerPattern' => '//',
+        'import' => 1,
+        'custom_field_id' => $this->getCustomFieldID('file'),
+        'options_per_line' => NULL,
+        'text_length' => NULL,
+        'data_type' => 'File',
+        'html_type' => 'File',
+        'is_search_range' => '0',
+        'id' => $this->getCustomFieldID('file'),
+        'label' => 'Custom Field',
+        'groupTitle' => 'Custom Group',
+        'default_value' => NULL,
+        'custom_group_id' => $customGroupID,
+        'extends' => 'Contact',
+        'extends_entity_column_value' => NULL,
+        'extends_entity_column_id' => NULL,
+        'is_view' => '0',
+        'is_multiple' => '0',
+        'option_group_id' => NULL,
+        'date_format' => NULL,
+        'time_format' => NULL,
+        'is_required' => '0',
+        'table_name' => 'civicrm_value_custom_group_' . $customGroupID,
+        'column_name' => 'custom_field_' . $this->getCustomFieldID('file'),
+        'where' => 'civicrm_value_custom_group_' . $customGroupID . '.custom_field_' . $this->getCustomFieldID('file'),
+        'extends_table' => 'civicrm_contact',
+        'search_table' => 'contact_a',
+      ],
+      $this->getCustomFieldName('text') => [
+        'name' => $this->getCustomFieldName('text'),
+        'type' => 2,
+        'title' => 'Enter text here',
+        'headerPattern' => '//',
+        'import' => 1,
+        'custom_field_id' => $this->getCustomFieldID('text'),
+        'options_per_line' => NULL,
+        'text_length' => NULL,
+        'data_type' => 'String',
+        'html_type' => 'Text',
+        'is_search_range' => '0',
+        'id' => $this->getCustomFieldID('text'),
+        'label' => 'Enter text here',
+        'groupTitle' => 'Custom Group',
+        'default_value' => 'xyz',
+        'custom_group_id' => '1',
+        'extends' => 'Contact',
+        'extends_entity_column_value' => NULL,
+        'extends_entity_column_id' => NULL,
+        'is_view' => '0',
+        'is_multiple' => '0',
+        'option_group_id' => NULL,
+        'date_format' => NULL,
+        'time_format' => NULL,
+        'is_required' => '1',
+        'table_name' => 'civicrm_value_custom_group_' . $customGroupID,
+        'column_name' => 'enter_text_here_' . $this->getCustomFieldID('text'),
+        'where' => 'civicrm_value_custom_group_' . $customGroupID . '.enter_text_here_' . $this->getCustomFieldID('text'),
+        'extends_table' => 'civicrm_contact',
+        'search_table' => 'contact_a',
+      ],
+      $this->getCustomFieldName('select_string') => [
+        'name' => $this->getCustomFieldName('select_string'),
+        'type' => 2,
+        'title' => 'Pick Color',
+        'headerPattern' => '//',
+        'import' => 1,
+        'custom_field_id' => $this->getCustomFieldID('select_string'),
+        'options_per_line' => NULL,
+        'text_length' => NULL,
+        'data_type' => 'String',
+        'html_type' => 'Select',
+        'is_search_range' => '0',
+        'id' => $this->getCustomFieldID('select_string'),
+        'label' => 'Pick Color',
+        'groupTitle' => 'Custom Group',
+        'default_value' => NULL,
+        'custom_group_id' => $customGroupID,
+        'extends' => 'Contact',
+        'extends_entity_column_value' => NULL,
+        'extends_entity_column_id' => NULL,
+        'is_view' => '0',
+        'is_multiple' => '0',
+        'option_group_id' => $this->callAPISuccessGetValue('CustomField', ['id' => $this->getCustomFieldID('select_string'), 'return' => 'option_group_id']),
+        'date_format' => NULL,
+        'time_format' => NULL,
+        'is_required' => '1',
+        'table_name' => 'civicrm_value_custom_group_' . $customGroupID,
+        'column_name' => 'pick_color_' . $this->getCustomFieldID('select_string'),
+        'where' => 'civicrm_value_custom_group_' . $customGroupID . '.pick_color_' . $this->getCustomFieldID('select_string'),
+        'extends_table' => 'civicrm_contact',
+        'search_table' => 'contact_a',
+        'pseudoconstant' => [
+          'optionGroupName' => $this->callAPISuccessGetValue('CustomField', ['id' => $this->getCustomFieldID('select_string'), 'return' => 'option_group_id.name']),
+          'optionEditPath' => 'civicrm/admin/options/' . $this->callAPISuccessGetValue('CustomField', ['id' => $this->getCustomFieldID('select_string'), 'return' => 'option_group_id.name']),
+        ],
+      ],
+      $this->getCustomFieldName('select_date') => [
+        'name' => $this->getCustomFieldName('select_date'),
+        'type' => 4,
+        'title' => 'test_date',
+        'headerPattern' => '//',
+        'import' => 1,
+        'custom_field_id' => $this->getCustomFieldID('select_date'),
+        'options_per_line' => NULL,
+        'text_length' => NULL,
+        'data_type' => 'Date',
+        'html_type' => 'Select Date',
+        'is_search_range' => '0',
+        'date_format' => 'mm/dd/yy',
+        'time_format' => '1',
+        'id' => $this->getCustomFieldID('select_date'),
+        'label' => 'test_date',
+        'groupTitle' => 'Custom Group',
+        'default_value' => '20090711',
+        'custom_group_id' => $customGroupID,
+        'extends' => 'Contact',
+        'extends_entity_column_value' => NULL,
+        'extends_entity_column_id' => NULL,
+        'is_view' => '0',
+        'is_multiple' => '0',
+        'option_group_id' => NULL,
+        'is_required' => '0',
+        'table_name' => 'civicrm_value_custom_group_' . $customGroupID,
+        'column_name' => 'test_date_' . $this->getCustomFieldID('select_date'),
+        'where' => 'civicrm_value_custom_group_' . $customGroupID . '.test_date_' . $this->getCustomFieldID('select_date'),
+        'extends_table' => 'civicrm_contact',
+        'search_table' => 'contact_a',
+      ],
+      $this->getCustomFieldName('link') => [
+        'name' => $this->getCustomFieldName('link'),
+        'type' => 2,
+        'title' => 'test_link',
+        'headerPattern' => '//',
+        'import' => 1,
+        'custom_field_id' => $this->getCustomFieldID('link'),
+        'options_per_line' => NULL,
+        'text_length' => NULL,
+        'data_type' => 'Link',
+        'html_type' => 'Link',
+        'is_search_range' => '0',
+        'id' => $this->getCustomFieldID('link'),
+        'label' => 'test_link',
+        'groupTitle' => 'Custom Group',
+        'default_value' => 'http://civicrm.org',
+        'custom_group_id' => $customGroupID,
+        'extends' => 'Contact',
+        'extends_entity_column_value' => NULL,
+        'extends_entity_column_id' => NULL,
+        'is_view' => '0',
+        'is_multiple' => '0',
+        'option_group_id' => NULL,
+        'date_format' => NULL,
+        'time_format' => NULL,
+        'is_required' => '1',
+        'table_name' => 'civicrm_value_custom_group_' . $customGroupID,
+        'column_name' => 'test_link_' . $this->getCustomFieldID('link'),
+        'where' => 'civicrm_value_custom_group_' . $customGroupID . '.test_link_' . $this->getCustomFieldID('link'),
+        'extends_table' => 'civicrm_contact',
+        'search_table' => 'contact_a',
+      ],
+    ];
+    $this->assertEquals($expected, CRM_Core_BAO_CustomField::getFieldsForImport());
+  }
+
 }