<?php

/**
 * @file
 * Link base test file - contains common functions for testing links.
 */

/**
 * Base Test Class.
 */
class LinkBaseTestClass extends DrupalWebTestCase {

  protected $permissions = array(
    'access content',
    'administer content types',
    'administer fields',
    'administer nodes',
    'administer filters',
    'access comments',
    'post comments',
    'access administration pages',
    'create page content',
  );

  /**
   * {@inheritdoc}
   */
  public function setUp(array $modules = array()) {
    $modules[] = 'field_ui';
    $modules[] = 'link';
    parent::setUp($modules);

    $this->web_user = $this->drupalCreateUser($this->permissions);
    $this->drupalLogin($this->web_user);
  }

  /**
   * Create Link Field.
   */
  protected function createLinkField($node_type = 'page', $settings = array()) {
    $name = strtolower($this->randomName());
    $edit = array(
      'fields[_add_new_field][label]' => $name,
      'fields[_add_new_field][field_name]' => $name,
      'fields[_add_new_field][type]' => 'link_field',
      'fields[_add_new_field][widget_type]' => 'link_field',
    );
    $field_name = 'field_' . $name;
    $this->drupalPost('admin/structure/types/manage/' . $node_type . '/fields', $edit, t('Save'));
    $this->drupalPost(NULL, array(), t('Save field settings'));
    $this->drupalPost(NULL, $settings, t('Save settings'));

    // Is field created?
    $this->assertRaw(t('Saved %label configuration', array('%label' => $name)), 'Field added');
    node_types_rebuild();
    menu_rebuild();

    return $field_name;
  }

}
