public function LocaleStringTest::testStringCRUDAPI in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/locale/src/Tests/LocaleStringTest.php \Drupal\locale\Tests\LocaleStringTest::testStringCRUDAPI()
Test CRUD API.
File
- core/
modules/ locale/ src/ Tests/ LocaleStringTest.php, line 50 - Contains \Drupal\locale\Tests\LocaleStringTest.
Class
- LocaleStringTest
- Tests the locale string storage, string objects and data API.
Namespace
Drupal\locale\TestsCode
public function testStringCRUDAPI() {
// Create source string.
$source = $this
->buildSourceString();
$source
->save();
$this
->assertTrue($source->lid, format_string('Successfully created string %string', array(
'%string' => $source->source,
)));
// Load strings by lid and source.
$string1 = $this->storage
->findString(array(
'lid' => $source->lid,
));
$this
->assertEqual($source, $string1, 'Successfully retrieved string by identifier.');
$string2 = $this->storage
->findString(array(
'source' => $source->source,
'context' => $source->context,
));
$this
->assertEqual($source, $string2, 'Successfully retrieved string by source and context.');
$string3 = $this->storage
->findString(array(
'source' => $source->source,
'context' => '',
));
$this
->assertFalse($string3, 'Cannot retrieve string with wrong context.');
// Check version handling and updating.
$this
->assertEqual($source->version, 'none', 'String originally created without version.');
$string = $this->storage
->findTranslation(array(
'lid' => $source->lid,
));
$this
->assertEqual($string->version, \Drupal::VERSION, 'Checked and updated string version to Drupal version.');
// Create translation and find it by lid and source.
$langcode = 'es';
$translation = $this
->createTranslation($source, $langcode);
$this
->assertEqual($translation->customized, LOCALE_NOT_CUSTOMIZED, 'Translation created as not customized by default.');
$string1 = $this->storage
->findTranslation(array(
'language' => $langcode,
'lid' => $source->lid,
));
$this
->assertEqual($string1->translation, $translation->translation, 'Successfully loaded translation by string identifier.');
$string2 = $this->storage
->findTranslation(array(
'language' => $langcode,
'source' => $source->source,
'context' => $source->context,
));
$this
->assertEqual($string2->translation, $translation->translation, 'Successfully loaded translation by source and context.');
$translation
->setCustomized()
->save();
$translation = $this->storage
->findTranslation(array(
'language' => $langcode,
'lid' => $source->lid,
));
$this
->assertEqual($translation->customized, LOCALE_CUSTOMIZED, 'Translation successfully marked as customized.');
// Delete translation.
$translation
->delete();
$deleted = $this->storage
->findTranslation(array(
'language' => $langcode,
'lid' => $source->lid,
));
$this
->assertFalse(isset($deleted->translation), 'Successfully deleted translation string.');
// Create some translations and then delete string and all of its
// translations.
$lid = $source->lid;
$this
->createAllTranslations($source);
$search = $this->storage
->getTranslations(array(
'lid' => $source->lid,
));
$this
->assertEqual(count($search), 3, 'Created and retrieved all translations for our source string.');
$source
->delete();
$string = $this->storage
->findString(array(
'lid' => $lid,
));
$this
->assertFalse($string, 'Successfully deleted source string.');
$deleted = $search = $this->storage
->getTranslations(array(
'lid' => $lid,
));
$this
->assertFalse($deleted, 'Successfully deleted all translation strings.');
// Tests that locations of different types and arbitrary lengths can be
// added to a source string. Too long locations will be cut off.
$source_string = $this
->buildSourceString();
$source_string
->addLocation('javascript', $this
->randomString(8));
$source_string
->addLocation('configuration', $this
->randomString(50));
$source_string
->addLocation('code', $this
->randomString(100));
$source_string
->addLocation('path', $location = $this
->randomString(300));
$source_string
->save();
$rows = db_query('SELECT * FROM {locales_location} WHERE sid = :sid', array(
':sid' => $source_string->lid,
))
->fetchAllAssoc('type');
$this
->assertEqual(count($rows), 4, '4 source locations have been persisted.');
$this
->assertEqual($rows['path']->name, substr($location, 0, 255), 'Too long location has been limited to 255 characters.');
}