function TranslationTest::testFieldFormTranslationRevisions

Tests field translations when creating a new revision.

File

drupal/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php, line 343
Definition of Drupal\field\Tests\TranslationTest.

Class

TranslationTest
Unit test class for the multilanguage fields logic.

Namespace

Drupal\field\Tests

Code

function testFieldFormTranslationRevisions() {
  $web_user = $this
    ->drupalCreateUser(array(
    'access field_test content',
    'administer field_test content',
  ));
  $this
    ->drupalLogin($web_user);

  // Prepare the field translations.
  field_test_entity_info_translatable($this->entity_type, TRUE);
  $eid = 1;
  $entity = field_test_create_entity($eid, $eid, $this->instance['bundle']);
  $available_langcodes = array_flip(field_available_languages($this->entity_type, $this->field));
  unset($available_langcodes[LANGUAGE_NOT_SPECIFIED]);
  $field_name = $this->field['field_name'];

  // Store the field translations.
  $entity
    ->enforceIsNew();
  foreach ($available_langcodes as $langcode => $value) {
    $entity->{$field_name}[$langcode][0]['value'] = $value + 1;
  }
  field_test_entity_save($entity);

  // Create a new revision.
  $langcode = field_valid_language(NULL);
  $edit = array(
    "{$field_name}[{$langcode}][0][value]" => $entity->{$field_name}[$langcode][0]['value'],
    'revision' => TRUE,
  );
  $this
    ->drupalPost('test-entity/manage/' . $eid . '/edit', $edit, t('Save'));

  // Check translation revisions.
  $this
    ->checkTranslationRevisions($eid, $eid, $available_langcodes);
  $this
    ->checkTranslationRevisions($eid, $eid + 1, $available_langcodes);
}