public function SearchMultilingualTest::testMultilingualSearchFilter in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/views/src/Tests/SearchMultilingualTest.php \Drupal\views\Tests\SearchMultilingualTest::testMultilingualSearchFilter()
Tests search with multilingual nodes.
File
- core/
modules/ views/ src/ Tests/ SearchMultilingualTest.php, line 36 - Contains \Drupal\views\Tests\SearchMultilingualTest.
Class
- SearchMultilingualTest
- Tests search integration filters with multilingual nodes.
Namespace
Drupal\views\TestsCode
public function testMultilingualSearchFilter() {
// Create a user with admin for languages, content, and content types, plus
// the ability to access content and searches.
$user = $this
->drupalCreateUser(array(
'administer nodes',
'administer content types',
'administer languages',
'administer content translation',
'access content',
'search content',
));
$this
->drupalLogin($user);
// Add Spanish language programmatically.
ConfigurableLanguage::createFromLangcode('es')
->save();
// Create a content type and make it translatable.
$type = $this
->drupalCreateContentType();
$edit = array(
'language_configuration[language_alterable]' => TRUE,
);
$this
->drupalPostForm('admin/structure/types/manage/' . $type
->id(), $edit, t('Save content type'));
$edit = array(
'entity_types[node]' => TRUE,
'settings[node][' . $type
->id() . '][translatable]' => TRUE,
'settings[node][' . $type
->id() . '][fields][title]' => TRUE,
'settings[node][' . $type
->id() . '][fields][body]' => TRUE,
);
$this
->drupalPostForm('admin/config/regional/content-language', $edit, t('Save configuration'));
\Drupal::entityManager()
->clearCachedDefinitions();
// Add a node in English, with title "sandwich".
$values = array(
'title' => 'sandwich',
'type' => $type
->id(),
);
$node = $this
->drupalCreateNode($values);
// "Translate" this node into Spanish, with title "pizza".
$node
->addTranslation('es', array(
'title' => 'pizza',
'status' => NODE_PUBLISHED,
));
$node
->save();
// Run cron so that the search index tables are updated.
$this
->cronRun();
// Test the keyword filter by visiting the page.
// The views are in the test view 'test_search', and they just display the
// titles of the nodes in the result, as links.
// Page with a keyword filter of 'pizza'. This should find the Spanish
// translated node, which has 'pizza' in the title, but not the English
// one, which does not have the word 'pizza' in it.
$this
->drupalGet('test-filter');
$this
->assertLink('pizza', 0, 'Found translation with matching title');
$this
->assertNoLink('sandwich', 'Did not find translation with non-matching title');
}