Mercurial > hg > isophonics-drupal-site
comparison core/modules/language/tests/src/Kernel/LanguageFallbackTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Tests\language\Kernel; | |
4 | |
5 use Drupal\Core\Language\LanguageInterface; | |
6 use Drupal\language\Entity\ConfigurableLanguage; | |
7 | |
8 /** | |
9 * Tests the language fallback behavior. | |
10 * | |
11 * @group language | |
12 */ | |
13 class LanguageFallbackTest extends LanguageTestBase { | |
14 | |
15 /** | |
16 * {@inheritdoc} | |
17 */ | |
18 protected function setUp() { | |
19 parent::setUp(); | |
20 | |
21 $i = 0; | |
22 foreach (['af', 'am', 'ar'] as $langcode) { | |
23 $language = ConfigurableLanguage::createFromLangcode($langcode); | |
24 $language->set('weight', $i--); | |
25 $language->save(); | |
26 } | |
27 } | |
28 | |
29 /** | |
30 * Tests language fallback candidates. | |
31 */ | |
32 public function testCandidates() { | |
33 $language_list = $this->languageManager->getLanguages(); | |
34 $expected = array_keys($language_list + [LanguageInterface::LANGCODE_NOT_SPECIFIED => NULL]); | |
35 | |
36 // Check that language fallback candidates by default are all the available | |
37 // languages sorted by weight. | |
38 $candidates = $this->languageManager->getFallbackCandidates(); | |
39 $this->assertEqual(array_values($candidates), $expected, 'Language fallback candidates are properly returned.'); | |
40 | |
41 // Check that candidates are alterable. | |
42 $this->state->set('language_test.fallback_alter.candidates', TRUE); | |
43 $expected = array_slice($expected, 0, count($expected) - 1); | |
44 $candidates = $this->languageManager->getFallbackCandidates(); | |
45 $this->assertEqual(array_values($candidates), $expected, 'Language fallback candidates are alterable.'); | |
46 | |
47 // Check that candidates are alterable for specific operations. | |
48 $this->state->set('language_test.fallback_alter.candidates', FALSE); | |
49 $this->state->set('language_test.fallback_operation_alter.candidates', TRUE); | |
50 $expected[] = LanguageInterface::LANGCODE_NOT_SPECIFIED; | |
51 $expected[] = LanguageInterface::LANGCODE_NOT_APPLICABLE; | |
52 $candidates = $this->languageManager->getFallbackCandidates(['operation' => 'test']); | |
53 $this->assertEqual(array_values($candidates), $expected, 'Language fallback candidates are alterable for specific operations.'); | |
54 | |
55 // Check that when the site is monolingual no language fallback is applied. | |
56 $langcodes_to_delete = []; | |
57 foreach ($language_list as $langcode => $language) { | |
58 if (!$language->isDefault()) { | |
59 $langcodes_to_delete[] = $langcode; | |
60 } | |
61 } | |
62 entity_delete_multiple('configurable_language', $langcodes_to_delete); | |
63 $candidates = $this->languageManager->getFallbackCandidates(); | |
64 $this->assertEqual(array_values($candidates), [LanguageInterface::LANGCODE_DEFAULT], 'Language fallback is not applied when the Language module is not enabled.'); | |
65 } | |
66 | |
67 } |