You are here

protected function GenericFieldTest::formAddAllFields in Examples for Developers 7

Add all fields using Form API.

Parameters

mixed $node_type: A content type object. If none is specified, the test fails.

1 call to GenericFieldTest::formAddAllFields()
GenericFieldTest::formTestGenericFieldNodeAddDeleteForm in field_permission_example/tests/field_permission_example.test
Add and delete all field types through Form API.

File

field_permission_example/tests/field_permission_example.test, line 237
Tests for Field Permission Example.

Class

GenericFieldTest
A generic field testing class.

Code

protected function formAddAllFields($node_type = NULL) {
  if (!$node_type) {
    $this
      ->fail('No content type specified.');
  }

  // Get all our field types.
  $field_types = $this
    ->getFieldTypes();

  // Keep a list of no_ui fields so we can tell the user.
  $unsafe_field_types = array();
  $field_names = array();
  $manage_path = 'admin/structure/types/manage/' . $node_type->name . '/fields';
  foreach ($field_types as $field_type) {

    // Get the field info.
    $field_info = field_info_field_types($field_type);

    // Exclude no_ui field types.
    if (isset($field_info['no_ui']) && $field_info['no_ui']) {
      $unsafe_field_types[] = $field_type;
    }
    else {

      // Generate a name for our field.
      // 26 is max length for field name.
      $field_name = drupal_strtolower($this
        ->randomName(26));
      $field_names[$field_type] = $field_name;

      // Create the field through Form API.
      $this
        ->formCreateField($manage_path, $field_type, $field_name, $field_info['default_widget'], 1);
    }
  }

  // Tell the user which fields we couldn't test.
  if (!empty($unsafe_field_types)) {
    debug('Unable to attach these no_ui fields: ' . implode(', ', $unsafe_field_types));
  }

  // Somehow clicking "save" isn't enough, and we have to
  // rebuild a few caches.
  node_types_rebuild();
  menu_rebuild();
  return $field_names;
}