function LocaleStringTest::testStringSearchApi
Same name in other branches
- 9 core/modules/locale/tests/src/Kernel/LocaleStringTest.php \Drupal\Tests\locale\Kernel\LocaleStringTest::testStringSearchApi()
- 8.9.x core/modules/locale/tests/src/Kernel/LocaleStringTest.php \Drupal\Tests\locale\Kernel\LocaleStringTest::testStringSearchApi()
- 11.x core/modules/locale/tests/src/Kernel/LocaleStringTest.php \Drupal\Tests\locale\Kernel\LocaleStringTest::testStringSearchApi()
Tests Search API loading multiple objects.
File
-
core/
modules/ locale/ tests/ src/ Kernel/ LocaleStringTest.php, line 126
Class
- LocaleStringTest
- Tests the locale string storage, string objects and data API.
Namespace
Drupal\Tests\locale\KernelCode
public function testStringSearchApi() : void {
$language_count = 3;
// Strings 1 and 2 will have some common prefix.
// Source 1 will have all translations, not customized.
// Source 2 will have all translations, customized.
// Source 3 will have no translations.
$prefix = $this->randomMachineName(100);
$source1 = $this->buildSourceString([
'source' => $prefix . $this->randomMachineName(100),
])
->save();
$source2 = $this->buildSourceString([
'source' => $prefix . $this->randomMachineName(100),
])
->save();
$source3 = $this->buildSourceString()
->save();
// Load all source strings.
$strings = $this->storage
->getStrings([]);
$this->assertCount(3, $strings);
// Load all source strings matching a given string.
$filter_options['filters'] = [
'source' => $prefix,
];
$strings = $this->storage
->getStrings([], $filter_options);
$this->assertCount(2, $strings);
// Not customized translations.
$translate1 = $this->createAllTranslations($source1);
// Customized translations.
$this->createAllTranslations($source2, [
'customized' => LOCALE_CUSTOMIZED,
]);
// Try quick search function with different field combinations.
$langcode = 'es';
$found = $this->storage
->findTranslation([
'language' => $langcode,
'source' => $source1->source,
'context' => $source1->context,
]);
$this->assertNotNull($found, 'Translation not found searching by source and context.');
$this->assertNotNull($found->language);
$this->assertNotNull($found->translation);
$this->assertFalse($found->isNew());
$this->assertEquals($translate1[$langcode]->translation, $found->translation);
// Now try a translation not found.
$found = $this->storage
->findTranslation([
'language' => $langcode,
'source' => $source3->source,
'context' => $source3->context,
]);
$this->assertNotNull($found);
$this->assertSame($source3->lid, $found->lid);
$this->assertNull($found->translation);
$this->assertTrue($found->isNew());
// Load all translations. For next queries we'll be loading only translated
// strings.
$translations = $this->storage
->getTranslations([
'translated' => TRUE,
]);
$this->assertCount(2 * $language_count, $translations);
// Load all customized translations.
$translations = $this->storage
->getTranslations([
'customized' => LOCALE_CUSTOMIZED,
'translated' => TRUE,
]);
$this->assertCount($language_count, $translations);
// Load all Spanish customized translations.
$translations = $this->storage
->getTranslations([
'language' => 'es',
'customized' => LOCALE_CUSTOMIZED,
'translated' => TRUE,
]);
$this->assertCount(1, $translations);
// Load all source strings without translation (1).
$translations = $this->storage
->getStrings([
'translated' => FALSE,
]);
$this->assertCount(1, $translations);
// Load Spanish translations using string filter.
$filter_options['filters'] = [
'source' => $prefix,
];
$translations = $this->storage
->getTranslations([
'language' => 'es',
], $filter_options);
$this->assertCount(2, $translations);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.