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');
}