Tests that the options printed by the language select element are correct.
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::STATE_ALL,
'edit-languages-configurable' => Language::STATE_CONFIGURABLE,
'edit-languages-locked' => Language::STATE_LOCKED,
'edit-languages-config-and-locked' => Language::STATE_CONFIGURABLE | Language::STATE_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',
));
}