Merge "Don't check namespace in SpecialWantedtemplates"
[lhc/web/wiklou.git] / tests / phpunit / includes / content / CssContentTest.php
1 <?php
2
3 /**
4 * @group ContentHandler
5 * @group Database
6 * ^--- needed, because we do need the database to test link updates
7 *
8 * @FIXME this should not extend JavaScriptContentTest.
9 */
10 class CssContentTest extends JavaScriptContentTest {
11
12 protected function setUp() {
13 parent::setUp();
14
15 // Anon user
16 $user = new User();
17 $user->setName( '127.0.0.1' );
18
19 $this->setMwGlobals( array(
20 'wgUser' => $user,
21 'wgTextModelsToParse' => array(
22 CONTENT_MODEL_CSS,
23 )
24 ) );
25 }
26
27 public function newContent( $text ) {
28 return new CssContent( $text );
29 }
30
31 public static function dataGetParserOutput() {
32 return array(
33 array(
34 'MediaWiki:Test.css',
35 null,
36 "hello <world>\n",
37 "<pre class=\"mw-code mw-css\" dir=\"ltr\">\nhello &lt;world&gt;\n\n</pre>"
38 ),
39 array(
40 'MediaWiki:Test.css',
41 null,
42 "/* hello [[world]] */\n",
43 "<pre class=\"mw-code mw-css\" dir=\"ltr\">\n/* hello [[world]] */\n\n</pre>",
44 array(
45 'Links' => array(
46 array( 'World' => 0 )
47 )
48 )
49 ),
50
51 // TODO: more...?
52 );
53 }
54
55 /**
56 * @covers CssContent::getModel
57 */
58 public function testGetModel() {
59 $content = $this->newContent( 'hello world.' );
60
61 $this->assertEquals( CONTENT_MODEL_CSS, $content->getModel() );
62 }
63
64 /**
65 * @covers CssContent::getContentHandler
66 */
67 public function testGetContentHandler() {
68 $content = $this->newContent( 'hello world.' );
69
70 $this->assertEquals( CONTENT_MODEL_CSS, $content->getContentHandler()->getModelID() );
71 }
72
73 /**
74 * Redirects aren't supported
75 */
76 public static function provideUpdateRedirect() {
77 return array(
78 array(
79 '#REDIRECT [[Someplace]]',
80 '#REDIRECT [[Someplace]]',
81 ),
82 );
83 }
84
85 /**
86 * @dataProvider provideGetRedirectTarget
87 */
88 public function testGetRedirectTarget( $title, $text ) {
89 $this->setMwGlobals( array(
90 'wgServer' => '//example.org',
91 'wgScriptPath' => '/w',
92 'wgScript' => '/w/index.php',
93 ) );
94 $content = new CssContent( $text );
95 $target = $content->getRedirectTarget();
96 $this->assertEquals( $title, $target ? $target->getPrefixedText() : null );
97 }
98
99 /**
100 * Keep this in sync with CssContentHandlerTest::provideMakeRedirectContent()
101 */
102 public static function provideGetRedirectTarget() {
103 return array(
104 array( 'MediaWiki:MonoBook.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);" ),
105 array( 'User:FooBar/common.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);" ),
106 array( 'Gadget:FooBaz.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
107 # No #REDIRECT comment
108 array( null, "@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
109 # Wrong domain
110 array( null, "/* #REDIRECT */@import url(//example.com/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
111 );
112 }
113
114 public static function dataEquals() {
115 return array(
116 array( new CssContent( 'hallo' ), null, false ),
117 array( new CssContent( 'hallo' ), new CssContent( 'hallo' ), true ),
118 array( new CssContent( 'hallo' ), new WikitextContent( 'hallo' ), false ),
119 array( new CssContent( 'hallo' ), new CssContent( 'HALLO' ), false ),
120 );
121 }
122
123 /**
124 * @dataProvider dataEquals
125 * @covers CssContent::equals
126 */
127 public function testEquals( Content $a, Content $b = null, $equal = false ) {
128 $this->assertEquals( $equal, $a->equals( $b ) );
129 }
130 }