function SearchLanguageTest::testLanguages

File

drupal/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php, line 38
Definition of Drupal\search\Tests\SearchLanguageTest.

Class

SearchLanguageTest
Test node search with multiple languages.

Namespace

Drupal\search\Tests

Code

function testLanguages() {

  // Add predefined language.
  $edit = array(
    'predefined_langcode' => 'fr',
  );
  $this
    ->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
  $this
    ->assertText('French', 'Language added successfully.');

  // Now we should have languages displayed.
  $this
    ->drupalGet('search/node');
  $this
    ->assertText(t('Languages'), 'Languages displayed to choose from.');
  $this
    ->assertText(t('English'), 'English is a possible choice.');
  $this
    ->assertText(t('French'), 'French is a possible choice.');

  // Ensure selecting no language does not make the query different.
  $this
    ->drupalPost('search/node', array(), t('Advanced search'));
  $this
    ->assertEqual($this
    ->getUrl(), url('search/node/', array(
    'absolute' => TRUE,
  )), 'Correct page redirection, no language filtering.');

  // Pick French and ensure it is selected.
  $edit = array(
    'language[fr]' => TRUE,
  );
  $this
    ->drupalPost('search/node', $edit, t('Advanced search'));
  $this
    ->assertFieldByXPath('//input[@name="keys"]', 'language:fr', 'Language filter added to query.');

  // Change the default language and delete English.
  $path = 'admin/config/regional/language';
  $this
    ->drupalGet($path);
  $this
    ->assertFieldChecked('edit-site-default-en', 'English is the default language.');
  $edit = array(
    'site_default' => 'fr',
  );
  $this
    ->drupalPost(NULL, $edit, t('Save configuration'));
  $this
    ->assertNoFieldChecked('edit-site-default-en', 'Default language updated.');
  $this
    ->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete'));
}