You are here

function i18nSelectTestCase::testIi18nSelect in Internationalization 7

File

i18n_select/i18n_select.test, line 23
Test language selection modes

Class

i18nSelectTestCase
@file Test language selection modes

Code

function testIi18nSelect() {
  drupal_static_reset('language_list');
  $language_list = language_list();
  $language_count = count($language_list);

  // Set site name for each language and check pages later
  variable_set('i18n_variable_list', array(
    'site_name',
  ));
  foreach (i18n_language_list() as $langcode => $name) {
    i18n_variable_set('site_name', "Drupal-{$name}", $langcode);
  }

  // Enable tags field for page content type.
  $edit = array(
    'fields[_add_existing_field][label]' => t('Tags'),
    'fields[_add_existing_field][field_name]' => 'field_tags',
    'fields[_add_existing_field][widget_type]' => 'taxonomy_autocomplete',
  );
  $this
    ->drupalPost('admin/structure/types/manage/page/fields', $edit, t('Save'));
  $this
    ->drupalPost(NULL, array(), t('Save settings'));

  // Create some content and check selection modes
  $this
    ->drupalLogin($this->content_editor);

  // variable_set('language_content_type_story', 1);
  $neutral = $this
    ->drupalCreateNode(array(
    'type' => 'page',
    'promote' => 1,
  ));
  $source = $this
    ->createNode('page', $this
    ->randomName(), $this
    ->randomString(20), language_default('language'), array(
    'field_tags[und]' => $tag_name = $this
      ->randomName(),
  ));
  $translations = $this
    ->createNodeTranslationSet($source);
  drupal_static_reset('translation_node_get_translations');
  $this
    ->assertEqual(count(translation_node_get_translations($source->tnid)), $language_count, "Created {$language_count} {$source->type} translations.");

  // Log in user with access content permission
  $user = $this
    ->drupalCreateUser(array(
    'access comments',
    'access content',
  ));
  $this
    ->drupalLogin($user);

  // Default selection mode, only language neutral and current
  variable_set('i18n_select_nodes', TRUE);
  foreach (i18n_language_list() as $langcode => $name) {
    $this
      ->i18nGet($langcode);
    $this
      ->assertText("Drupal-{$name}", 'Checked translated site name: Drupal-' . $name);
    $display = array(
      $translations[$langcode],
      $neutral,
    );
    $hide = $translations;
    unset($hide[$langcode]);
    $this
      ->assertContent($display, $hide);

    // Visit the taxonomy page of that node and try again. Only the translated
    // pages are tagged.
    unset($display[1]);
    $this
      ->i18nGet($langcode, 'taxonomy/term/' . $source->field_tags[LANGUAGE_NONE][0]['tid']);
    $this
      ->assertContent($display, $hide);
  }
}