You are here

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