protected function SearchMultilingualEntityTest::setUp in Drupal 9
Same name and namespace in other branches
- 8 core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php \Drupal\Tests\search\Functional\SearchMultilingualEntityTest::setUp()
Overrides BrowserTestBase::setUp
File
- core/
modules/ search/ tests/ src/ Functional/ SearchMultilingualEntityTest.php, line 48
Class
- SearchMultilingualEntityTest
- Tests entities with multilingual fields.
Namespace
Drupal\Tests\search\FunctionalCode
protected function setUp() : void {
parent::setUp();
$this
->drupalCreateContentType([
'type' => 'page',
'name' => 'Basic page',
]);
// Create a user who can administer search, do searches, see the status
// report, and administer cron. Log in.
$user = $this
->drupalCreateUser([
'administer search',
'search content',
'use advanced search',
'access content',
'access site reports',
'administer site configuration',
]);
$this
->drupalLogin($user);
// Set up the search plugin.
$this->plugin = $this->container
->get('plugin.manager.search')
->createInstance('node_search');
// Check indexing counts before adding any nodes.
$this
->assertIndexCounts(0, 0, 'before adding nodes');
$this
->assertDatabaseCounts(0, 0, 'before adding nodes');
// Add two new languages.
ConfigurableLanguage::createFromLangcode('hu')
->save();
ConfigurableLanguage::createFromLangcode('sv')
->save();
// Make the body field translatable. The title is already translatable by
// definition. The parent class has already created the article and page
// content types.
$field_storage = FieldStorageConfig::loadByName('node', 'body');
$field_storage
->setTranslatable(TRUE);
$field_storage
->save();
// Create a few page nodes with multilingual body values.
$default_format = filter_default_format();
$nodes = [
[
'title' => 'First node en',
'type' => 'page',
'body' => [
[
'value' => $this
->randomMachineName(32),
'format' => $default_format,
],
],
'langcode' => 'en',
],
[
'title' => 'Second node this is the English title',
'type' => 'page',
'body' => [
[
'value' => $this
->randomMachineName(32),
'format' => $default_format,
],
],
'langcode' => 'en',
],
[
'title' => 'Third node en',
'type' => 'page',
'body' => [
[
'value' => $this
->randomMachineName(32),
'format' => $default_format,
],
],
'langcode' => 'en',
],
// After the third node, we don't care what the settings are. But we
// need to have at least 5 to make sure the throttling is working
// correctly. So, let's make 8 total.
[],
[],
[],
[],
[],
];
$this->searchableNodes = [];
foreach ($nodes as $setting) {
$this->searchableNodes[] = $this
->drupalCreateNode($setting);
}
// Add a single translation to the second node.
$translation = $this->searchableNodes[1]
->addTranslation('hu', [
'title' => 'Second node hu',
]);
$translation->body->value = $this
->randomMachineName(32);
$this->searchableNodes[1]
->save();
// Add two translations to the third node.
$translation = $this->searchableNodes[2]
->addTranslation('hu', [
'title' => 'Third node this is the Hungarian title',
]);
$translation->body->value = $this
->randomMachineName(32);
$translation = $this->searchableNodes[2]
->addTranslation('sv', [
'title' => 'Third node sv',
]);
$translation->body->value = $this
->randomMachineName(32);
$this->searchableNodes[2]
->save();
// Verify that we have 8 nodes left to do.
$this
->assertIndexCounts(8, 8, 'before updating the search index');
$this
->assertDatabaseCounts(0, 0, 'before updating the search index');
}