aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/unit/includes/language/LocalisationCacheTest.php
blob: a56761275e4e25e1a419e05a1e6d27860a1f5123 (plain) (blame)
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
<?php

declare( strict_types = 1 );

namespace MediaWiki\Tests\Unit\Language;

use LocalisationCache;
use MediaWikiUnitTestCase;
use Wikimedia\TestingAccessWrapper;

/**
 * @covers \LocalisationCache
 * @group Language
 */
class LocalisationCacheTest extends MediaWikiUnitTestCase {

	public function testAllKeysSplitIntoCoreOnlyAndNonCoreOnly(): void {
		$coreOnlyKeys = TestingAccessWrapper::constant( LocalisationCache::class, 'CORE_ONLY_KEYS' );
		$allExceptCoreOnlyKeys = TestingAccessWrapper::constant( LocalisationCache::class, 'ALL_EXCEPT_CORE_ONLY_KEYS' );
		$this->assertSame( [],
			array_diff( $coreOnlyKeys, LocalisationCache::ALL_KEYS ),
			'core-only keys must be subset of all keys' );
		$this->assertSame( [],
			array_diff( $allExceptCoreOnlyKeys, LocalisationCache::ALL_KEYS ),
			'keys that are not core-only must be subset of all keys' );
		$this->assertSame( [],
			array_intersect( $coreOnlyKeys, $allExceptCoreOnlyKeys ),
			'core-only and other keys must not overlap' );
		$this->assertSame( [],
			array_diff( LocalisationCache::ALL_KEYS, array_merge(
				$coreOnlyKeys,
				$allExceptCoreOnlyKeys
			) ),
			'core-only keys + all keys except them must contain all keys' );
	}

	public function testCoreOnlyKeysNotMergeable(): void {
		$coreOnlyKeys = TestingAccessWrapper::constant( LocalisationCache::class, 'CORE_ONLY_KEYS' );
		$lc = TestingAccessWrapper::newFromClass( LocalisationCache::class );
		foreach ( $coreOnlyKeys as $key ) {
			$this->assertFalse( $lc->isMergeableKey( $key ),
				'it does not make sense for core-only keys to be mergeable' );
		}
	}

}