You are here

public function LinkFieldAttributesTest::testBasic in Link 7

Test Basic.

A simple test that just creates a new node type, adds a link field to it, creates a new node of that type, and makes sure that the node is being displayed.

File

tests/LinkFieldAttributesTest.test, line 70
Field attributes test.

Class

LinkFieldAttributesTest
Field attributes test.

Code

public function testBasic() {
  $content_type_friendly = $this
    ->randomName(20);
  $content_type_machine = strtolower($this
    ->randomName(10));
  $title = $this
    ->randomName(20);
  $this
    ->drupalGet('admin/structure/types');

  // Create the content type.
  $this
    ->clickLink(t('Add content type'));
  $edit = array(
    'name' => $content_type_friendly,
    'type' => $content_type_machine,
  );
  $this
    ->drupalPost(NULL, $edit, t('Save and add fields'));
  $this
    ->assertText(t('The content type @name has been added.', array(
    '@name' => $content_type_friendly,
  )));

  // Now add a singleton field.
  $single_field_name_friendly = $this
    ->randomName(20);
  $single_field_name_machine = strtolower($this
    ->randomName(10));
  $edit = array(
    'fields[_add_new_field][label]' => $single_field_name_friendly,
    'fields[_add_new_field][field_name]' => $single_field_name_machine,
    'fields[_add_new_field][type]' => 'link_field',
    'fields[_add_new_field][widget_type]' => 'link_field',
  );
  $this
    ->drupalPost(NULL, $edit, t('Save'));

  // We'll go with the default settings for this run-through.
  $this
    ->drupalPost(NULL, array(), t('Save field settings'));

  // Using all the default settings, so press the button.
  $this
    ->drupalPost(NULL, array(), t('Save settings'));
  $this
    ->assertText(t('Saved @name configuration.', array(
    '@name' => $single_field_name_friendly,
  )));

  // Somehow clicking "save" isn't enough, and we have to do a
  // node_types_rebuild().
  node_types_rebuild();
  menu_rebuild();
  $type_exists = db_query('SELECT 1 FROM {node_type} WHERE type = :type', array(
    ':type' => $content_type_machine,
  ))
    ->fetchField();
  $this
    ->assertTrue($type_exists, 'The new content type has been created in the database.');
  $permission = 'create ' . $content_type_machine . ' content';

  // Reset the permissions cache.
  $this
    ->checkPermissions(array(
    $permission,
  ), TRUE);

  // Now that we have a new content type, create a user that has privileges
  // on the content type.
  $permissions = $this->permissions;
  $permissions[$permission] = $permission;
  $this->web_user = $this
    ->drupalCreateUser($permissions);
  $this
    ->drupalLogin($this->web_user);

  // Go to page.
  $this
    ->drupalGet('node/add/' . $content_type_machine);

  // Add a node.
  $edit = array(
    'title' => $title,
    'field_' . $single_field_name_machine . '[und][0][title]' => 'Link',
    'field_' . $single_field_name_machine . '[und][0][url]' => 'http://www.drupal.org/',
  );
  $this
    ->drupalPost(NULL, $edit, t('Save'));
  $this
    ->assertText(t('@content_type_friendly @title has been created', array(
    '@content_type_friendly' => $content_type_friendly,
    '@title' => $title,
  )));
  $this
    ->drupalGet('node/add/' . $content_type_machine);

  // Create a node:
  $edit = array(
    'title' => $title,
    'field_' . $single_field_name_machine . '[und][0][url]' => 'http://www.example.com/',
    'field_' . $single_field_name_machine . '[und][0][title]' => 'Display',
  );

  // Now we can fill in the second item in the multivalue field and save.
  $this
    ->drupalPost(NULL, $edit, t('Save'));
  $this
    ->assertText(t('@content_type_friendly @title has been created', array(
    '@content_type_friendly' => $content_type_friendly,
    '@title' => $title,
  )));
  $this
    ->assertText('Display');
  $this
    ->assertLinkByHref('http://www.example.com');
}