You are here

function SearchLanguageTestCase::testLanguages in Drupal 7

File

modules/search/search.test, line 1997
Tests for search.module.

Class

SearchLanguageTestCase
Test node search with multiple languages.

Code

function testLanguages() {

  // Check that there are initially no languages displayed.
  $this
    ->drupalGet('search/node');
  $this
    ->assertNoText(t('Languages'), 'No languages to choose from.');

  // Add predefined language.
  $edit = array(
    'langcode' => 'fr',
  );
  $this
    ->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
  $this
    ->assertText('fr', '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 disable 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.');
  $edit = array(
    'enabled[en]' => FALSE,
  );
  $this
    ->drupalPost('admin/config/regional/language', $edit, t('Save configuration'));
  $this
    ->assertNoFieldChecked('edit-enabled-en', 'Language disabled.');

  // Check that there are again no languages displayed.
  $this
    ->drupalGet('search/node');
  $this
    ->assertNoText(t('Languages'), 'No languages to choose from.');
}