-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathLanguageResolverTest.php
More file actions
103 lines (91 loc) · 3.18 KB
/
Copy pathLanguageResolverTest.php
File metadata and controls
103 lines (91 loc) · 3.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
/**
* @copyright Copyright (C) Ibexa AS. All rights reserved.
* @license For full copyright and license information view LICENSE file distributed with this source code.
*/
declare(strict_types=1);
namespace Ibexa\Tests\Core\Repository\SiteAccessAware\Language;
use Ibexa\Contracts\Core\Repository\Exceptions\OutOfBoundsException;
use Ibexa\Core\Repository\SiteAccessAware\Language\LanguageResolver;
use PHPUnit\Framework\TestCase;
/**
* @covers \Ibexa\Core\Repository\SiteAccessAware\Language\AbstractLanguageResolver
* @covers \Ibexa\Core\Repository\SiteAccessAware\Language\LanguageResolver
*/
class LanguageResolverTest extends TestCase
{
/**
* @dataProvider getDataForTestGetPrioritizedLanguages
*
* @param array $expectedPrioritizedLanguagesList
* @param array $configLanguages
* @param bool $defaultShowAllTranslations
* @param array|null $forcedLanguages
* @param string|null $contextLanguage
*/
public function testGetPrioritizedLanguages(
array $expectedPrioritizedLanguagesList,
array $configLanguages,
bool $defaultShowAllTranslations,
?array $forcedLanguages,
?string $contextLanguage
) {
// note: "use always available" does not affect this test
$defaultUseAlwaysAvailable = true;
$languageResolver = new LanguageResolver(
$configLanguages,
$defaultUseAlwaysAvailable,
$defaultShowAllTranslations
);
$languageResolver->setContextLanguage($contextLanguage);
self::assertEquals(
$expectedPrioritizedLanguagesList,
$languageResolver->getPrioritizedLanguages($forcedLanguages)
);
}
public function testGetFirstPrioritizedLanguage(): void
{
$languageResolver = new LanguageResolver(
configLanguages: ['pol-PL', 'eng-GB'],
defaultUseAlwaysAvailable: true,
defaultShowAllTranslations: false
);
self::assertEquals('eng-GB', $languageResolver->getFirstPrioritizedLanguage());
}
public function testGetFirstPrioritizedLanguageThrowsExceptionWhenNoLanguageFound(): void
{
$this->expectException(OutOfBoundsException::class);
$languageResolver = new LanguageResolver(
configLanguages: [],
defaultUseAlwaysAvailable: true,
defaultShowAllTranslations: false
);
$languageResolver->getFirstPrioritizedLanguage();
}
/**
* Data provider for testGetPrioritizedLanguages.
*
* @see testGetPrioritizedLanguages
*
* @return array
*/
public function getDataForTestGetPrioritizedLanguages(): array
{
return [
[
['eng-GB', 'pol-PL'], ['eng-GB', 'pol-PL'], false, null, null,
],
[
[], ['eng-GB', 'pol-PL'], false, [], null, ],
[
['ger-DE'], ['eng-GB', 'pol-PL'], false, ['ger-DE'], null,
],
[
[], ['eng-GB', 'pol-PL'], true, null, null,
],
[
['ger-DE', 'eng-GB', 'pol-PL'], ['eng-GB', 'pol-PL'], false, null, 'ger-DE',
],
];
}
}