annotate core/modules/locale/tests/src/Functional/LocaleLocaleLookupTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\locale\Functional;
Chris@0 4
Chris@18 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@12 59 /**
Chris@12 60 * Test old plural style @count[number] fix.
Chris@12 61 *
Chris@12 62 * @dataProvider providerTestFixOldPluralStyle
Chris@12 63 */
Chris@12 64 public function testFixOldPluralStyle($translation_value, $expected) {
Chris@12 65 $string_storage = \Drupal::service('locale.storage');
Chris@12 66 $string = $string_storage->findString(['source' => 'Member for', 'context' => '']);
Chris@12 67 $lid = $string->getId();
Chris@12 68 $string_storage->createTranslation([
Chris@12 69 'lid' => $lid,
Chris@12 70 'language' => 'fr',
Chris@12 71 'translation' => $translation_value,
Chris@12 72 ])->save();
Chris@12 73 _locale_refresh_translations(['fr'], [$lid]);
Chris@12 74
Chris@12 75 // Check that 'count[2]' was fixed for render value.
Chris@12 76 $this->drupalGet('');
Chris@12 77 $this->assertSession()->pageTextContains($expected);
Chris@12 78
Chris@12 79 // Check that 'count[2]' was saved for source value.
Chris@12 80 $translation = $string_storage->findTranslation(['language' => 'fr', 'lid' => $lid])->translation;
Chris@12 81 $this->assertSame($translation_value, $translation, 'Source value not changed');
Chris@12 82 $this->assertNotFalse(strpos($translation, '@count[2]'), 'Source value contains @count[2]');
Chris@12 83 }
Chris@12 84
Chris@12 85 /**
Chris@12 86 * Provides data for testFixOldPluralStyle().
Chris@12 87 *
Chris@12 88 * @return array
Chris@12 89 * An array of test data:
Chris@12 90 * - translation value
Chris@12 91 * - expected result
Chris@12 92 */
Chris@12 93 public function providerTestFixOldPluralStyle() {
Chris@12 94 return [
Chris@12 95 'non-plural translation' => ['@count[2] non-plural test', '@count[2] non-plural test'],
Chris@18 96 'plural translation' => ['@count[2] plural test' . PoItem::DELIMITER, '@count plural test'],
Chris@12 97 ];
Chris@12 98 }
Chris@12 99
Chris@0 100 }