'Nodewords functionality test',
'description' => 'Test basic nodewords functionality.',
'group' => 'nodewords'
);
}
function setUp() {
// Enable minimum required modules.
parent::setUp('nodewords', 'nodewords_basic');
}
/**
* Verify edit meta tag permissions. Configure the nodewords module to expose
* several meta tags, and allow a user to edit only a few of them. Verify that
* only allowed meta tags are available for the user and that value is saved
* and showed on node view.
*
* Verify that user without "administer nodes" permission is able to edit node
* meta tags (issue: http://drupal.org/node/588946).
*/
function testMetaTagsPermissionFunctionality() {
// Create an administrator user. This use will configure the nodewords
// settings according to the test.
$permissions = array(
'administer meta tags',
);
$user = $this->drupalCreateUser($permissions);
// Log in to Drupal using the administrator user.
$this->drupalLogin($user);
// Enable some meta tags
$options = array(
// Allow editing KEYWORDS, DESCRIPTION and COPYRIGHT
'nodewords_edit[keywords]' => 1,
'nodewords_edit[description]' => 1,
'nodewords_edit[copyright]' => 1,
// Only show DESCRIPTION and COPYRIGHT meta tags
'nodewords_head[copyright]' => 1,
'nodewords_head[description]' => 1,
);
$this->drupalPost('admin/content/nodewords', $options, t('Save configuration'));
$this->assertRaw(t('The configuration options have been saved.'), t('Meta tags configuration saved.'));
// Create an user with permission to create a page node, and to edit the
// meta tags COPYRIGHT, and DESCRIPTION.
$permissions = array(
'create page content',
'edit own page content',
'delete own page content',
'edit meta tag COPYRIGHT',
'edit meta tag DESCRIPTION',
);
$user = $this->drupalCreateUser($permissions);
// Log in to Drupal using the previously created user.
$this->drupalLogin($user);
// Verify that only COPYRIGHT and DESCRIPTION meta tags are available for
// this user due to edit meta tag permissions, even if other meta tags are
// available for editing.
$this->drupalGet('node/add/page');
$this->assertField('nodewords[copyright][value]', t('Copyright meta tag field found.'));
$this->assertField('nodewords[description][value]', t('Description meta tag field found.'));
$this->assertNoField('nodewords[keywords][value]', t('Keywords meta tag field not found.'));
// Create a page node with random meta tag values
$options = array(
'title' => $this->randomName(),
'nodewords[copyright][value]' => $this->randomName(),
'nodewords[description][value]' => $this->randomName(),
);
$this->drupalPost('node/add/page', $options, t('Save'));
$this->assertRaw(t('Page %title has been created.', array('%title' => $options['title'])), t('Page successfully saved.'));
// Check for meta information in the node/% page.
$this->assertRaw('', t('Copyright meta tag successfully verified.'));
$this->assertRaw('', t('Description meta tag successfully verified.'));
// Update page: change copyright meta tag
$options = array(
'title' => $this->randomName(),
'nodewords[copyright][value]' => '',
'nodewords[description][value]' => $this->randomName(),
);
$this->drupalPost($this->getUrl() . '/edit', $options, t('Save'));
$this->assertRaw(t('Page %title has been updated.', array('%title' => $options['title'])), t('Page successfully saved.'));
// Check for meta information again (update operation).
$this->assertRaw('', t('Description meta tag successfully verified.'));
// Copyright Meta tag is not set, and should not exist.
$this->assertNoRaw(' 'Nodewords Search integration',
'description' => 'Test nodewords searching feature functionality.',
'group' => 'nodewords'
);
}
function setUp() {
// Enable minimum required modules.
parent::setUp('nodewords', 'nodewords_basic', 'search');
}
/**
* Verify that search works for KEYWORDS and DESCRIPTION meta tags
*
* Create two nodes with KEYWORDS and DESCRIPTION meta tags and does search
* for both tags and both modules.
*
* Also tests the issue: http://drupal.org/node/628868
*/
function testSearchMetaTagsFunctionality() {
// Create an administrator user.
$permissions = array(
'administer content types',
'administer meta tags',
'administer search',
'administer site configuration'
);
$admin_user = $this->drupalCreateUser($permissions);
// Log in to Drupal using the administrator user.
$this->drupalLogin($admin_user);
// Enable the tags KEYWORDS, DESCRIPTION and COPYRIGHT for editing and
// to rendered in the output.
$options = array(
'nodewords_edit[keywords]' => 1,
'nodewords_edit[description]' => 1,
'nodewords_edit[copyright]' => 1,
'nodewords_head[keywords]' => 1,
'nodewords_head[description]' => 1,
'nodewords_head[copyright]' => 1,
);
$this->drupalPost('admin/content/nodewords', $options, t('Save configuration'));
// Check that page content type has been updated.
$this->assertRaw(t('The configuration options have been saved.'));
// Create an user with permission to create a page node, and to edit the
// meta tags COPYRIGHT, and DESCRIPTION.
$permissions = array(
'create page content',
'edit meta tag KEYWORDS',
'edit meta tag DESCRIPTION',
'search content',
);
$user = $this->drupalCreateUser($permissions);
// Log in to Drupal using the previously created user.
$this->drupalLogin($user);
// Create two page nodes with meta tags.
$options1 = array(
'title' => $this->randomName(),
'nodewords[keywords][value]' => $this->randomName(),
'nodewords[description][value]' => $this->randomName(),
);
$this->drupalPost('node/add/page', $options1, t('Save'));
// Check for meta information in the node/% page.
$this->assertRaw('', t('Keywords meta tag successfully verified.'));
$this->assertRaw('', t('Description meta tag successfully verified.'));
// Create two page nodes with meta tags.
$options2 = array(
'title' => $this->randomName(),
'nodewords[keywords][value]' => $this->randomName(),
'nodewords[description][value]' => $this->randomName(),
);
$this->drupalPost('node/add/page', $options2, t('Save'));
// Check for meta information in the node/% page.
$this->assertRaw('', t('Keywords meta tag successfully verified.'));
$this->assertRaw('', t('Description meta tag successfully verified.'));
// Login again as admin user..
$this->drupalLogin($admin_user);
// Launch cron, should re-index the site content.
$this->drupalGet('admin/reports/status/run-cron');
$this->assertRaw(t('Cron ran successfully.'));
// Verify all content has been indexed.
$this->drupalGet('admin/settings/search');
$this->assertText(t('100% of the site has been indexed'));
// Log in again as a regular user, has permissions to search content.
$this->drupalLogin($user);
// Search for nodewords of node 1: use description meta tag
$this->drupalGet('search/node/' . $options1['nodewords[description][value]']);
$this->assertText($options1['title'], t('Search node using description verified successfully.'));
// Search for nodewords of node 1: use keywords meta tag
$this->drupalGet('search/node/' . $options1['nodewords[keywords][value]']);
$this->assertText($options1['title'], t('Search node using keywords verified successfully.'));
// Search for nodewords of node 2: use description meta tag
$this->drupalGet('search/node/' . $options2['nodewords[description][value]']);
$this->assertText($options2['title'], t('Search node using description verified successfully.'));
// Search for nodewords of node 2: use keywords meta tag
$this->drupalGet('search/node/' . $options2['nodewords[keywords][value]']);
$this->assertText($options2['title'], t('Search node using keywords verified successfully.'));
}
}