hreflang.test in Hreflang 7
Functional tests for Hreflang.
File
hreflang.testView source
<?php
/**
* @file
* Functional tests for Hreflang.
*/
/**
* Functional tests for Hreflang.
*/
class HreflangTest extends DrupalWebTestCase {
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => 'Hreflang',
'description' => 'Tests for presence of the hreflang link element.',
'group' => 'Hreflang',
);
}
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp('hreflang', 'locale');
// User to add language.
$this->adminUser = $this
->drupalCreateUser(array(
'access administration pages',
'administer languages',
));
$this
->drupalLogin($this->adminUser);
// Add predefined language.
$edit = array(
'langcode' => 'fr',
);
$this
->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
}
/**
* Test that hreflang link tags are added with URL detection.
*/
public function testHreflangMarkup() {
global $base_url;
// Enable language detection.
$edit = array(
'language[enabled][locale-url]' => 1,
);
$this
->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings'));
$url = $base_url . '/';
$path = variable_get('clean_url', 0) ? 'fr' : '?q=fr';
$this
->drupalGet('');
$this
->assertRaw('<link href="' . $url . $path . '" rel="alternate" hreflang="fr" />', 'French hreflang found on English page.');
$this
->assertRaw('<link href="' . $url . '" rel="alternate" hreflang="en" />', 'English hreflang found on English page.');
$this
->drupalGet('fr');
$this
->assertRaw('<link href="' . $url . $path . '" rel="alternate" hreflang="fr" />', 'French hreflang found on French page.');
$this
->assertRaw('<link href="' . $url . '" rel="alternate" hreflang="en" />', 'English hreflang found on French page.');
}
/**
* Test that hreflang link tags are added with session detection.
*/
public function testHreflangMarkupSession() {
global $base_url;
// Enable language detection.
$edit = array(
'language[enabled][locale-session]' => 1,
);
$this
->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings'));
$url = $base_url . '/';
$french = '?language=fr';
$english = '?language=en';
$this
->drupalGet('');
$this
->assertRaw('<link href="' . $url . $french . '" rel="alternate" hreflang="fr" />', 'French hreflang found on default page.');
$this
->assertRaw('<link href="' . $url . '" rel="alternate" hreflang="en" />', 'English hreflang found on default page.');
$this
->drupalGet('', array(
'query' => array(
'language' => 'en',
),
));
$this
->assertRaw('<link href="' . $url . $french . '" rel="alternate" hreflang="fr" />', 'French hreflang found on English page.');
$this
->assertRaw('<link href="' . $url . $english . '" rel="alternate" hreflang="en" />', 'English hreflang found on English page.');
$this
->drupalGet('', array(
'query' => array(
'language' => 'fr',
),
));
$this
->assertRaw('<link href="' . $url . $french . '" rel="alternate" hreflang="fr" />', 'French hreflang found on French page.');
$this
->assertRaw('<link href="' . $url . $english . '" rel="alternate" hreflang="en" />', 'English hreflang found on French page.');
}
}
/**
* Functional tests for Hreflang with Content translation.
*/
class HreflangContentTranslationTest extends DrupalWebTestCase {
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => 'Hreflang with Content translation',
'description' => 'Tests for presence of the hreflang link element on translated nodes.',
'group' => 'Hreflang',
);
}
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp('hreflang', 'locale', 'translation');
}
/**
* Test that Content translation doesn't trigger an exception.
*/
public function testHreflangContentTranslation() {
// User to add language.
$admin_user = $this
->drupalCreateUser(array(
'access administration pages',
'access content',
'administer content types',
'administer languages',
'create page content',
));
$this
->drupalLogin($admin_user);
// Add predefined language.
$edit = array(
'langcode' => 'fr',
);
$this
->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
// Enable language detection.
$edit = array(
'language[enabled][locale-url]' => 1,
);
$this
->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings'));
// Set "Basic page" content type to use translation.
$this
->drupalGet('admin/structure/types/manage/page');
$edit = array();
$edit['language_content_type'] = 2;
$this
->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
// Create an English-language node.
$edit = array();
$edit['title'] = $this
->randomName(8);
$edit['body[' . LANGUAGE_NONE . '][0][value]'] = $this
->randomName(16);
$edit['language'] = 'fr';
$this
->drupalPost('node/add/page', $edit, t('Save'));
}
}
/**
* Functional tests for Hreflang with Comment module.
*/
class HreflangCommentTest extends DrupalWebTestCase {
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => 'Hreflang with comments',
'description' => 'Tests for presence of the hreflang link element on nodes with comments.',
'group' => 'Hreflang',
);
}
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp('hreflang', 'locale', 'comment');
}
/**
* Tests that superfluous page=0 parameter is not added to hreflang links.
*/
public function testHreflangComment() {
// User to add language.
$admin_user = $this
->drupalCreateUser(array(
'administer languages',
'create article content',
));
$this
->drupalLogin($admin_user);
// Add predefined language.
$edit = array(
'langcode' => 'fr',
);
$this
->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
// Enable language detection.
$edit = array(
'language[enabled][locale-url]' => 1,
);
$this
->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings'));
// Create a node.
$edit = array(
'title' => $this
->randomName(8),
'body[' . LANGUAGE_NONE . '][0][value]' => $this
->randomName(16),
);
$this
->drupalPost('node/add/article', $edit, t('Save'));
// Create a comment.
$edit = array(
'subject' => $this
->randomName(8),
'comment_body[' . LANGUAGE_NONE . '][0][value]' => $this
->randomName(16),
);
$this
->drupalPost(NULL, $edit, t('Save'));
// Visit comment permalink page.
$this
->clickLink(t('Permalink'));
$this
->assertUrl('comment/1', array(
'fragment' => 'comment-1',
));
drupal_static_reset('language_list');
drupal_static_reset('locale_url_outbound_alter');
$languages = language_list();
$this
->assertRaw('<link href="' . url('node/1', array(
'absolute' => TRUE,
)) . '" rel="alternate" hreflang="en" />');
$this
->assertRaw('<link href="' . url('node/1', array(
'absolute' => TRUE,
'language' => $languages['fr'],
)) . '" rel="alternate" hreflang="fr" />');
}
}
Classes
Name | Description |
---|---|
HreflangCommentTest | Functional tests for Hreflang with Comment module. |
HreflangContentTranslationTest | Functional tests for Hreflang with Content translation. |
HreflangTest | Functional tests for Hreflang. |