You are here

field_group.test in Field Group 7.2

Unit test file for groups.

@todo - fill along if we know more.

  • nest a group under another group and see if parent_name is first group
  • nest a group under second group and see if parent_name is second group
  • settings: open f and verify on front-end (classes)
  • settings: collapsible f and verify on front-end (classes)
  • settings: collapsed f and verify on front-end (classes)
  • settings: vertical tabs and verify on front-end (classes)
  • settings: horizontal item and verify on front-end (classes)
  • settings: vertical item and verify on front-end (classes)
  • settings: hidden (simple div) and verify on front-end (classes)
  • settings: label and verify on front-end
  • delete a fieldgroup - make sure we have a couple with the same name and make sure the right one is deleted!

File

field_group.test
View source
<?php

/**
 * @file
 * Unit test file for groups.
 *
 * @todo - fill along if we know more.
 *
 * - nest a group under another group and see if parent_name is first group
 * - nest a group under second group and see if parent_name is second group
 * - settings: open f and verify on front-end (classes)
 * - settings: collapsible f and verify on front-end (classes)
 * - settings: collapsed f and verify on front-end (classes)
 * - settings: vertical tabs and verify on front-end (classes)
 * - settings: horizontal item and verify on front-end (classes)
 * - settings: vertical item  and verify on front-end (classes)
 * - settings: hidden (simple div) and verify on front-end (classes)
 * - settings: label and verify on front-end
 * - delete a fieldgroup - make sure we have a couple with the same name
 *   and make sure the right one is deleted!
 */

/**
 * Group UI tests.
 */
class GroupUITestCase extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Field group tests',
      'description' => 'Test the field group functionality.',
      'group' => 'Field group',
    );
  }
  function setUp() {
    parent::setUp('field_test', 'field_group');

    // Create test user.
    $admin_user = $this
      ->drupalCreateUser(array(
      'administer content types',
      'administer nodes',
      'access administration pages',
      'bypass node access',
    ));
    $this
      ->drupalLogin($admin_user);

    // Create random group name.
    $this->group_label = $this
      ->randomName(8);
    $this->group_name_input = drupal_strtolower($this
      ->randomName(8));
    $this->group_name = 'group_' . $this->group_name_input;

    // Create a fieldgroup.
    $field_group = new stdClass();
    $field_group->disabled = FALSE;

    /* Edit this to true to make a default field_group disabled initially */
    $field_group->api_version = 1;
    $field_group->identifier = 'wrapper|node|article|form';
    $field_group->group_name = 'wrapper';
    $field_group->entity_type = 'node';
    $field_group->bundle = 'article';
    $field_group->mode = 'form';
    $field_group->parent_name = '';
    $field_group->data = array(
      'label' => 'Wrapper',
      'weight' => '1',
      'children' => array(
        0 => 'field_image',
      ),
      'format_type' => 'div',
      'format_settings' => array(
        'label' => 'Link',
        'instance_settings' => array(
          'required_fields' => 0,
          'id' => 'wrapper-id',
          'classes' => '',
          'description' => '',
          'show_label' => '0',
          'label_element' => 'h3',
          'effect' => 'none',
          'speed' => 'fast',
        ),
        'formatter' => 'open',
      ),
    );
    drupal_write_record('field_group', $field_group);
    ctools_export_crud_enable('field_group', $field_group->identifier);
  }

  /**
   * Creates a group on the article content type.
   */
  function createGroup() {

    // Setup new group.
    $group = array(
      'fields[_add_new_group][label]' => $this->group_label,
      'fields[_add_new_group][group_name]' => $this->group_name_input,
    );

    // Add new group on the 'Manage fields' page.
    $this
      ->drupalPost('admin/structure/types/manage/article/fields', $group, t('Save'));
    $this
      ->assertRaw(t('New group %label successfully created.', array(
      '%label' => $this->group_label,
    )), t('Group message displayed on screen.'));

    // Test if group is in the $groups array.
    $groups = field_group_info_groups('node', 'article', 'form', TRUE);
    $this
      ->assertTrue(array_key_exists($this->group_name, $groups), t('Group found in groups array'));

    // Add new group on the 'Manage display' page.
    $this
      ->drupalPost('admin/structure/types/manage/article/display', $group, t('Save'));
    $this
      ->assertRaw(t('New group %label successfully created.', array(
      '%label' => $this->group_label,
    )), t('Group message displayed on screen.'));

    // Test if group is in the $groups array.
    $groups = field_group_info_groups('node', 'article', 'default', TRUE);
    $this
      ->assertTrue(array_key_exists($this->group_name, $groups), t('Group found in groups array'));
  }

  /**
   * Delete a group.
   */
  function deleteGroup() {
    $this
      ->drupalPost('admin/structure/types/manage/article/groups/' . $this->group_name . '/delete/form', array(), t('Delete'));
    $this
      ->assertRaw(t('The group %label has been deleted from the %article content type.', array(
      '%label' => $this->group_label,
      '%article' => 'Article',
    )), t('Group removal message displayed on screen.'));

    // Test that group is not in the $groups array.
    $groups = field_group_info_groups('node', 'article', 'form', TRUE);
    $this
      ->assertFalse(array_key_exists($this->group_name, $groups), t('Group not found in groups array while deleting'));
    $this
      ->drupalPost('admin/structure/types/manage/article/groups/' . $this->group_name . '/delete/default', array(), t('Delete'));
    $this
      ->assertRaw(t('The group %label has been deleted from the %article content type.', array(
      '%label' => $this->group_label,
      '%article' => 'Article',
    )), t('Group removal message displayed on screen.'));

    // Test that group is not in the $groups array.
    $groups = field_group_info_groups('node', 'article', 'default', TRUE);
    $this
      ->assertFalse(array_key_exists($this->group_name, $groups), t('Group not found in groups array while deleting'));
  }

  /**
   * General CRUD.
   */
  function testCRUDGroup() {
    $this
      ->createGroup();
    $this
      ->deleteGroup();
  }

  /**
   * Nest a field underneath a group.
   */
  function testNestField() {

    // Test on the wrapper field.
    $groups = field_group_info_groups('node', 'article', 'form', TRUE);
    $this
      ->assertTrue(in_array('field_image', $groups['wrapper']->children), t('Image is a child of %group', array(
      '%group' => 'Wrapper',
    )));
    $this
      ->drupalGet('node/add/article');
    $this
      ->assertRaw('id="wrapper-id"', t('Wrapper id set on wrapper div'));
  }

}

Classes

Namesort descending Description
GroupUITestCase Group UI tests.