entity_translation_upgrade.test in Entity Translation 7
Tests for Entity Translation module.
File
entity_translation_upgrade/entity_translation_upgrade.testView source
<?php
/**
* @file
* Tests for Entity Translation module.
*/
/**
* Tests for the upgrade translation process.
*/
class EntityTranslationUpgradeTestCase extends EntityTranslationTestCase {
/**
* Return the test information.
*/
public static function getInfo() {
return array(
'name' => 'Translation upgrade',
'description' => 'Tests for the upgrade from Content Translation to Entity Translation.',
'group' => 'Entity translation',
'dependencies' => array(),
);
}
function setUp() {
parent::setUp('locale', 'translation', 'translation_test', 'entity_translation', 'entity_translation_upgrade');
$this
->getAdminUser(array(
'toggle field translatability',
'administer entity translation',
));
$this
->getTranslatorUser(array(
'translate content',
));
$this
->login($this
->getAdminUser());
$this
->addLanguage('en');
$this
->addLanguage('es');
$this
->configureContentTypeForContentTranslation();
$this
->enableUrlLanguageDetection();
$this
->login($this
->getTranslatorUser());
}
/**
* Configure the "Basic page" content type for entity translation tests.
*/
public function configureContentTypeForContentTranslation() {
// Configure the "Basic page" content type to use multilingual support with
// content translation.
$edit = array();
$edit['language_content_type'] = TRANSLATION_ENABLED;
$this
->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
$this
->assertRaw(t('The content type %type has been updated.', array(
'%type' => 'Basic page',
)), t('Basic page content type has been updated.'));
}
/**
* Toggle body field's translatability.
*/
public function makeBodyFieldTranslatable() {
$edit = array();
$this
->drupalGet('admin/structure/types/manage/page/fields/body');
$this
->clickLink('Enable translation');
$this
->drupalPost(NULL, array(), t('Confirm'));
$this
->assertRaw(t('Data successfully processed.'), t('Body field have been made translatable.'));
}
/**
* @see TranslationTestCase::createPage
*/
function createContentTranslationPage($title, $body, $language = NULL) {
$edit = array();
$langcode = LANGUAGE_NONE;
$edit["title"] = $title;
$edit["body[{$langcode}][0][value]"] = $body;
if (!empty($language)) {
$edit['language'] = $language;
}
$this
->drupalPost('node/add/page', $edit, t('Save'));
$this
->assertRaw(t('Basic page %title has been created.', array(
'%title' => $title,
)), 'Basic page created.');
// Check to make sure the node was created.
$node = $this
->drupalGetNodeByTitle($title);
$this
->assertTrue($node, 'Node found in database.');
return $node;
}
/**
* @see TranslationTestCase::createTranslation
*/
function createContentTranslationTranslation($node, $title, $body, $language) {
$this
->drupalGet('node/add/page', array(
'query' => array(
'translation' => $node->nid,
'target' => $language,
),
));
$langcode = LANGUAGE_NONE;
$body_key = "body[{$langcode}][0][value]";
$this
->assertFieldByXPath('//input[@id="edit-title"]', $node->title, "Original title value correctly populated.");
$this
->assertFieldByXPath("//textarea[@name='{$body_key}']", $node->body[LANGUAGE_NONE][0]['value'], "Original body value correctly populated.");
$edit = array();
$edit["title"] = $title;
$edit[$body_key] = $body;
$this
->drupalPost(NULL, $edit, t('Save'));
$this
->assertRaw(t('Basic page %title has been created.', array(
'%title' => $title,
)), 'Translation created.');
// Check to make sure that translation was successful.
$translation = $this
->drupalGetNodeByTitle($title);
$this
->assertTrue($translation, 'Node found in database.');
$this
->assertTrue($translation->tnid == $node->nid, 'Translation set id correctly stored.');
return $translation;
}
/**
* Tests copying of source node's body value in the add translation form page.
*/
public function testUpgradeContentToEntityTranslation() {
// Create Basic page in English.
$node_title = $this
->randomName();
$node_body = $this
->randomName();
$node = $this
->createContentTranslationPage($node_title, $node_body, 'en');
// Submit translation in Spanish.
$this
->drupalGet('node/' . $node->nid . '/translate');
$node_translation_title = $this
->randomName();
$node_translation_body = $this
->randomName();
$node_translation = $this
->createContentTranslationTranslation($node, $node_translation_title, $node_translation_body, 'es');
// Make Body field translatable before we run the upgrade.
$this
->login($this
->getAdminUser());
$this
->makeBodyFieldTranslatable();
// Run the upgrade for all Page nodes.
$edit = array(
'types[page]' => 'page',
);
$this
->drupalPost('admin/config/regional/entity_translation', $edit, t('Upgrade'));
// Switch to our translator user.
$this
->login($this
->getTranslatorUser());
// Check that the unpublished target node triggers a redirect.
$this
->drupalGet('node/' . $node_translation->nid);
$headers = $this
->drupalGetHeaders(TRUE);
list(, $status) = explode(' ', $headers[0][':status'], 3);
$this
->assertEqual($status, 301, 'Expected response code was sent.');
$languages = language_list();
$this
->assertEqual($this
->getUrl(), url('node/' . $node->nid, array(
'absolute' => TRUE,
'language' => $languages['es'],
)), 'entity_translation_upgrade_redirect() redirected to expected URL.');
// Check that the body is displayed when the active language is English.
$this
->drupalGet('node/' . $node->nid);
$this
->assertRaw($node_body, t('Body field displayed correctly in the source language.'));
// Check that the translated body is displayed when the active language is Spanish.
$this
->drupalGet('es/node/' . $node->nid);
$this
->assertRaw($node_translation_body, t('Body field displayed correctly in the target language.'));
// Check that the edit forms are initialized correctly in the target language.
$this
->drupalGet('node/' . $node->nid . '/edit');
$this
->assertFieldByXPath("//textarea[@name='body[en][0][value]']", $node_body, "Body field correctly instantiated with the value of the source language.");
$this
->drupalGet('es/node/' . $node->nid . '/edit');
$this
->assertFieldByXPath("//textarea[@name='body[es][0][value]']", $node_translation_body, "Body field correctly instantiated with the value of the target language.");
}
}
Classes
Name | Description |
---|---|
EntityTranslationUpgradeTestCase | Tests for the upgrade translation process. |