function LanguageSelectElementTest::testLanguageSelectElementOptions

Tests that the options printed by the language select element are correct.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php, line 36
Definition of Drupal\system\Tests\Form\LanguageSelectElementTest.

Class

LanguageSelectElementTest
Functional tests for the language select form element.

Namespace

Drupal\system\Tests\Form

Code

function testLanguageSelectElementOptions() {

  // Add some languages.
  $language = new Language(array(
    'langcode' => 'aaa',
    'name' => $this
      ->randomName(),
  ));
  language_save($language);
  $language = new Language(array(
    'langcode' => 'bbb',
    'name' => $this
      ->randomName(),
  ));
  language_save($language);
  $this
    ->drupalGet('form-test/language_select');

  // Check that the language fields were rendered on the page.
  $ids = array(
    'edit-languages-all' => LANGUAGE_ALL,
    'edit-languages-configurable' => LANGUAGE_CONFIGURABLE,
    'edit-languages-locked' => LANGUAGE_LOCKED,
    'edit-languages-config-and-locked' => LANGUAGE_CONFIGURABLE | LANGUAGE_LOCKED,
  );
  foreach ($ids as $id => $flags) {
    $this
      ->assertField($id, format_string('The @id field was found on the page.', array(
      '@id' => $id,
    )));
    $options = array();
    foreach (language_list($flags) as $langcode => $language) {
      $options[$langcode] = $language->locked ? t('- @name -', array(
        '@name' => $language->name,
      )) : $language->name;
    }
    $this
      ->_testLanguageSelectElementOptions($id, $options);
  }

  // Test that the #options were not altered by #languages.
  $this
    ->assertField('edit-language-custom-options', format_string('The @id field was found on the page.', array(
    '@id' => 'edit-language-custom-options',
  )));
  $this
    ->_testLanguageSelectElementOptions('edit-language-custom-options', array(
    'opt1' => 'First option',
    'opt2' => 'Second option',
    'opt3' => 'Third option',
  ));
}