Fix whitespace issues around parentheses
[lhc/web/wiklou.git] / tests / phpunit / includes / resourceloader / ResourceLoaderFileModuleTest.php
index 9afc54d..9d97b28 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 /**
+ * @group Database
  * @group ResourceLoader
  */
 class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
@@ -18,7 +19,7 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                );
        }
 
-       public static function getModules() {
+       private static function getModules() {
                $base = array(
                        'localBasePath' => realpath( dirname( __FILE__ ) ),
                );
@@ -45,10 +46,16 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                                        'templates/template_awesome.handlebars',
                                ),
                        ),
+
+                       'aliasFooFromBar' => $base + array(
+                               'templates' => array(
+                                       'foo.foo' => 'templates/template.bar',
+                               ),
+                       ),
                );
        }
 
-       public static function providerGetTemplates() {
+       public static function providerTemplateDependencies() {
                $modules = self::getModules();
 
                return array(
@@ -57,39 +64,42 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                                array(),
                        ),
                        array(
-                               $modules['templateModuleHandlebars'],
+                               $modules['htmlTemplateModule'],
                                array(
-                                       'templates/template_awesome.handlebars' => "wow\n",
+                                       'mediawiki.template',
                                ),
                        ),
                        array(
-                               $modules['htmlTemplateModule'],
+                               $modules['templateModuleHandlebars'],
                                array(
-                                       'templates/template.html' => "<strong>hello</strong>\n",
-                                       'templates/template2.html' => "<div>goodbye</div>\n",
+                                       'mediawiki.template',
+                                       'mediawiki.template.handlebars',
                                ),
                        ),
                        array(
-                               $modules['aliasedHtmlTemplateModule'],
+                               $modules['aliasFooFromBar'],
                                array(
-                                       'foo.html' => "<strong>hello</strong>\n",
-                                       'bar.html' => "<div>goodbye</div>\n",
+                                       'mediawiki.template',
+                                       'mediawiki.template.foo',
                                ),
                        ),
                );
        }
 
-       public static function providerGetModifiedTime() {
-               $modules = self::getModules();
-
-               return array(
-                       // Check the default value when no templates present in module is 1
-                       array( $modules['noTemplateModule'], 1 ),
-               );
+       /**
+        * @dataProvider providerTemplateDependencies
+        * @covers ResourceLoaderFileModule::__construct
+        * @covers ResourceLoaderFileModule::getDependencies
+        */
+       public function testTemplateDependencies( $module, $expected ) {
+               $rl = new ResourceLoaderFileModule( $module );
+               $this->assertEquals( $rl->getDependencies(), $expected );
        }
 
        /**
+        * @covers ResourceLoaderFileModule::getAllStyleFiles
         * @covers ResourceLoaderFileModule::getAllSkinStyleFiles
+        * @covers ResourceLoaderFileModule::getSkinStyleFiles
         */
        public function testGetAllSkinStyleFiles() {
                $baseParams = array(
@@ -133,22 +143,87 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
        }
 
        /**
-        * @dataProvider providerGetTemplates
-        * @covers ResourceLoaderFileModule::getTemplates
+        * Strip @noflip annotations from CSS code.
+        * @param string $css
+        * @return string
         */
-       public function testGetTemplates( $module, $expected ) {
-               $rl = new ResourceLoaderFileModule( $module );
+       private static function stripNoflip( $css ) {
+               return str_replace( '/*@noflip*/ ', '', $css );
+       }
 
-               $this->assertEquals( $rl->getTemplates(), $expected );
+       /**
+        * What happens when you mix @embed and @noflip?
+        * This really is an integration test, but oh well.
+        *
+        * @covers ResourceLoaderFileModule::getStyles
+        * @covers ResourceLoaderFileModule::getStyleFiles
+        */
+       public function testMixedCssAnnotations() {
+               $basePath = __DIR__ . '/../../data/css';
+               $testModule = new ResourceLoaderFileModule( array(
+                       'localBasePath' => $basePath,
+                       'styles' => array( 'test.css' ),
+               ) );
+               $expectedModule = new ResourceLoaderFileModule( array(
+                       'localBasePath' => $basePath,
+                       'styles' => array( 'expected.css' ),
+               ) );
+
+               $contextLtr = $this->getResourceLoaderContext( 'en', 'ltr' );
+               $contextRtl = $this->getResourceLoaderContext( 'he', 'rtl' );
+
+               // Since we want to compare the effect of @noflip+@embed against the effect of just @embed, and
+               // the @noflip annotations are always preserved, we need to strip them first.
+               $this->assertEquals(
+                       $expectedModule->getStyles( $contextLtr ),
+                       self::stripNoflip( $testModule->getStyles( $contextLtr ) ),
+                       "/*@noflip*/ with /*@embed*/ gives correct results in LTR mode"
+               );
+               $this->assertEquals(
+                       $expectedModule->getStyles( $contextLtr ),
+                       self::stripNoflip( $testModule->getStyles( $contextRtl ) ),
+                       "/*@noflip*/ with /*@embed*/ gives correct results in RTL mode"
+               );
+       }
+
+       public static function providerGetTemplates() {
+               $modules = self::getModules();
+
+               return array(
+                       array(
+                               $modules['noTemplateModule'],
+                               array(),
+                       ),
+                       array(
+                               $modules['templateModuleHandlebars'],
+                               array(
+                                       'templates/template_awesome.handlebars' => "wow\n",
+                               ),
+                       ),
+                       array(
+                               $modules['htmlTemplateModule'],
+                               array(
+                                       'templates/template.html' => "<strong>hello</strong>\n",
+                                       'templates/template2.html' => "<div>goodbye</div>\n",
+                               ),
+                       ),
+                       array(
+                               $modules['aliasedHtmlTemplateModule'],
+                               array(
+                                       'foo.html' => "<strong>hello</strong>\n",
+                                       'bar.html' => "<div>goodbye</div>\n",
+                               ),
+                       ),
+               );
        }
 
        /**
-        * @dataProvider providerGetModifiedTime
-        * @covers ResourceLoaderFileModule::getModifiedTime
+        * @dataProvider providerGetTemplates
+        * @covers ResourceLoaderFileModule::getTemplates
         */
-       public function testGetModifiedTime( $module, $expected ) {
+       public function testGetTemplates( $module, $expected ) {
                $rl = new ResourceLoaderFileModule( $module );
-               $ts = $rl->getModifiedTime( $this->getResourceLoaderContext() );
-               $this->assertEquals( $ts, $expected );
+
+               $this->assertEquals( $rl->getTemplates(), $expected );
        }
 }