Merge "Revert "mediawiki.widgets: Add temporary workaround for upstream oojs-ui bug""
[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 // @codingStandardsIgnoreStart Generic.Files.LineLength
104 return array(
105 array( 'MediaWiki:MonoBook.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);" ),
106 array( 'User:FooBar/common.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);" ),
107 array( 'Gadget:FooBaz.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
108 # No #REDIRECT comment
109 array( null, "@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
110 # Wrong domain
111 array( null, "/* #REDIRECT */@import url(//example.com/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
112 );
113 // @codingStandardsIgnoreEnd
114 }
115
116 public static function dataEquals() {
117 return array(
118 array( new CssContent( 'hallo' ), null, false ),
119 array( new CssContent( 'hallo' ), new CssContent( 'hallo' ), true ),
120 array( new CssContent( 'hallo' ), new WikitextContent( 'hallo' ), false ),
121 array( new CssContent( 'hallo' ), new CssContent( 'HALLO' ), false ),
122 );
123 }
124
125 /**
126 * @dataProvider dataEquals
127 * @covers CssContent::equals
128 */
129 public function testEquals( Content $a, Content $b = null, $equal = false ) {
130 $this->assertEquals( $equal, $a->equals( $b ) );
131 }
132 }