function DraftyEntityTranslationTest::testFieldTranslation in Drafty 7
Test if field based translation works.
Enable field based translation for basic pages. Add a field with a cardinality higher than 1, to test if field_default_extract_form_values() is invoked. Create a basic page and translate it.
File
- tests/
DraftyEntityTranslationTest.test, line 76
Class
- DraftyEntityTranslationTest
- Test draft revisions with entity translation.
Code
function testFieldTranslation() {
// Create Basic page in English.
$node_title = $this
->randomName();
$node_body = $this
->randomName();
$node = $this
->createPage($node_title, $node_body, 'en');
$original_version = node_load($node->nid, NULL, TRUE);
// Submit translation in Spanish.
$node_translation_title = $this
->randomName();
$node_translation_body = $this
->randomName();
$node_translation = $this
->createTranslation($node, $node_translation_title, $node_translation_body, 'es');
$published_version = node_load($node->nid, NULL, TRUE);
// At this point there should be three versions of the node:
// - the original version with no translation.
// - an unpublished version with a translation.
// - the published version with no translation, identical to the original.
$this
->assertTrue(!isset($original_version->body['es']), 'No Spanish translation on the original version');
$this
->assertTrue(!isset($published_version->body['es']), 'No Spanish translation on the published version');
// Drafty doesn't allow us to load the draft revision while it's being
// created by design, so find it manually based on the two revisions IDs
// we know about.
$vid = db_select('node_revision')
->fields('node_revision', array(
'vid',
))
->condition('nid', $node->nid)
->condition('vid', $original_version->vid, '>')
->condition('vid', $published_version->vid, '<')
->execute()
->fetchField();
$draft_version = node_load($node->nid, $vid);
$this
->assertTrue($draft_version->body['es'], 'Spanish translation on the draft version');
// Now explicitly publish the draft.
drafty()
->publishRevision('node', $node->nid, $draft_version->vid);
$new_published_version = node_load($node->nid, NULL, TRUE);
$this
->assertTrue($draft_version->body['es'], 'Spanish translation on the newly published version');
// Now re-publish the original version, and ensure the translation is gone
// again.
drafty()
->publishRevision('node', $node->nid, $original_version->vid);
$re_published_original = node_load($node->nid, NULL, TRUE);
$this
->assertTrue(!isset($original_version->body['es']), 'No Spanish translation on the re-published original version');
}