annotate core/modules/locale/tests/src/Functional/LocaleLocaleLookupTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\locale\Functional;
Chris@0 4
Chris@5 5 use Drupal\Component\Gettext\PoItem;
Chris@0 6 use Drupal\language\Entity\ConfigurableLanguage;
Chris@0 7 use Drupal\Tests\BrowserTestBase;
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Tests LocaleLookup.
Chris@0 11 *
Chris@0 12 * @group locale
Chris@0 13 */
Chris@0 14 class LocaleLocaleLookupTest extends BrowserTestBase {
Chris@0 15
Chris@0 16 /**
Chris@0 17 * Modules to enable.
Chris@0 18 *
Chris@0 19 * @var array
Chris@0 20 */
Chris@0 21 public static $modules = ['locale', 'locale_test'];
Chris@0 22
Chris@0 23 /**
Chris@0 24 * {@inheritdoc}
Chris@0 25 */
Chris@0 26 protected function setUp() {
Chris@0 27 parent::setUp();
Chris@0 28
Chris@0 29 // Change the language default object to different values.
Chris@0 30 ConfigurableLanguage::createFromLangcode('fr')->save();
Chris@0 31 $this->config('system.site')->set('default_langcode', 'fr')->save();
Chris@0 32
Chris@0 33 $this->drupalLogin($this->rootUser);
Chris@0 34 }
Chris@0 35
Chris@0 36 /**
Chris@0 37 * Tests that there are no circular dependencies.
Chris@0 38 */
Chris@0 39 public function testCircularDependency() {
Chris@0 40 // Ensure that we can enable early_translation_test on a non-english site.
Chris@0 41 $this->drupalPostForm('admin/modules', ['modules[early_translation_test][enable]' => TRUE], t('Install'));
Chris@0 42 $this->assertResponse(200);
Chris@0 43 }
Chris@0 44
Chris@0 45 /**
Chris@0 46 * Test language fallback defaults.
Chris@0 47 */
Chris@0 48 public function testLanguageFallbackDefaults() {
Chris@0 49 $this->drupalGet('');
Chris@0 50 // Ensure state of fallback languages persisted by
Chris@0 51 // locale_test_language_fallback_candidates_locale_lookup_alter() is empty.
Chris@0 52 $this->assertEqual(\Drupal::state()->get('locale.test_language_fallback_candidates_locale_lookup_alter_candidates'), []);
Chris@0 53 // Make sure there is enough information provided for alter hooks.
Chris@0 54 $context = \Drupal::state()->get('locale.test_language_fallback_candidates_locale_lookup_alter_context');
Chris@0 55 $this->assertEqual($context['langcode'], 'fr');
Chris@0 56 $this->assertEqual($context['operation'], 'locale_lookup');
Chris@0 57 }
Chris@0 58
Chris@0 59 /**
Chris@0 60 * Test old plural style @count[number] fix.
Chris@0 61 *
Chris@0 62 * @dataProvider providerTestFixOldPluralStyle
Chris@0 63 */
Chris@0 64 public function testFixOldPluralStyle($translation_value, $expected) {
Chris@0 65 $string_storage = \Drupal::service('locale.storage');
Chris@0 66 $string = $string_storage->findString(['source' => 'Member for', 'context' => '']);
Chris@0 67 $lid = $string->getId();
Chris@0 68 $string_storage->createTranslation([
Chris@0 69 'lid' => $lid,
Chris@0 70 'language' => 'fr',
Chris@0 71 'translation' => $translation_value,
Chris@0 72 ])->save();
Chris@0 73 _locale_refresh_translations(['fr'], [$lid]);
Chris@0 74
Chris@0 75 // Check that 'count[2]' was fixed for render value.
Chris@0 76 $this->drupalGet('');
Chris@0 77 $this->assertSession()->pageTextContains($expected);
Chris@0 78
Chris@0 79 // Check that 'count[2]' was saved for source value.
Chris@0 80 $translation = $string_storage->findTranslation(['language' => 'fr', 'lid' => $lid])->translation;
Chris@0 81 $this->assertSame($translation_value, $translation, 'Source value not changed');
Chris@0 82 $this->assertNotFalse(strpos($translation, '@count[2]'), 'Source value contains @count[2]');
Chris@0 83 }
Chris@0 84
Chris@0 85 /**
Chris@0 86 * Provides data for testFixOldPluralStyle().
Chris@0 87 *
Chris@0 88 * @return array
Chris@0 89 * An array of test data:
Chris@0 90 * - translation value
Chris@0 91 * - expected result
Chris@0 92 */
Chris@0 93 public function providerTestFixOldPluralStyle() {
Chris@0 94 return [
Chris@0 95 'non-plural translation' => ['@count[2] non-plural test', '@count[2] non-plural test'],
Chris@5 96 'plural translation' => ['@count[2] plural test' . PoItem::DELIMITER, '@count plural test'],
Chris@0 97 ];
Chris@0 98 }
Chris@0 99
Chris@0 100 }