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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
<?php
/**
* @group ResourceLoader
* @covers DerivativeResourceLoaderContext
*/
class DerivativeResourceLoaderContextTest extends PHPUnit\Framework\TestCase {
use MediaWikiCoversValidator;
protected static function getContext() {
$request = new FauxRequest( [
'lang' => 'zh',
'modules' => 'test.context',
'only' => 'scripts',
'skin' => 'fallback',
'target' => 'test',
] );
return new ResourceLoaderContext( new ResourceLoader(), $request );
}
public function testGetInherited() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
// Request parameters
$this->assertEquals( $derived->getDebug(), false );
$this->assertEquals( $derived->getLanguage(), 'zh' );
$this->assertEquals( $derived->getModules(), [ 'test.context' ] );
$this->assertEquals( $derived->getOnly(), 'scripts' );
$this->assertEquals( $derived->getSkin(), 'fallback' );
$this->assertEquals( $derived->getUser(), null );
// Misc
$this->assertEquals( $derived->getDirection(), 'ltr' );
$this->assertEquals( $derived->getHash(), 'zh|fallback|||scripts|||||' );
}
public function testModules() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setModules( [ 'test.override' ] );
$this->assertEquals( $derived->getModules(), [ 'test.override' ] );
}
public function testLanguage() {
$context = self::getContext();
$derived = new DerivativeResourceLoaderContext( $context );
$derived->setLanguage( 'nl' );
$this->assertEquals( $derived->getLanguage(), 'nl' );
}
public function testDirection() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setLanguage( 'nl' );
$this->assertEquals( $derived->getDirection(), 'ltr' );
$derived->setLanguage( 'he' );
$this->assertEquals( $derived->getDirection(), 'rtl' );
$derived->setDirection( 'ltr' );
$this->assertEquals( $derived->getDirection(), 'ltr' );
}
public function testSkin() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setSkin( 'override' );
$this->assertEquals( $derived->getSkin(), 'override' );
}
public function testUser() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setUser( 'Example' );
$this->assertEquals( $derived->getUser(), 'Example' );
}
public function testDebug() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setDebug( true );
$this->assertEquals( $derived->getDebug(), true );
}
public function testOnly() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setOnly( 'styles' );
$this->assertEquals( $derived->getOnly(), 'styles' );
$derived->setOnly( null );
$this->assertEquals( $derived->getOnly(), null );
}
public function testVersion() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setVersion( 'hw1' );
$this->assertEquals( $derived->getVersion(), 'hw1' );
}
public function testRaw() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$derived->setRaw( true );
$this->assertEquals( $derived->getRaw(), true );
}
public function testGetHash() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$this->assertEquals( $derived->getHash(), 'zh|fallback|||scripts|||||' );
$derived->setLanguage( 'nl' );
$derived->setUser( 'Example' );
// Assert that subclass is able to clear parent class "hash" member
$this->assertEquals( $derived->getHash(), 'nl|fallback||Example|scripts|||||' );
}
public function testContentOverrides() {
$derived = new DerivativeResourceLoaderContext( self::getContext() );
$this->assertNull( $derived->getContentOverrideCallback() );
$override = function ( Title $t ) {
return null;
};
$derived->setContentOverrideCallback( $override );
$this->assertSame( $override, $derived->getContentOverrideCallback() );
$derived2 = new DerivativeResourceLoaderContext( $derived );
$this->assertSame( $override, $derived2->getContentOverrideCallback() );
}
public function testAccessors() {
$context = self::getContext();
$derived = new DerivativeResourceLoaderContext( $context );
$this->assertSame( $derived->getRequest(), $context->getRequest() );
$this->assertSame( $derived->getResourceLoader(), $context->getResourceLoader() );
}
}
|