resourceloader: Add unit tests for ResourceLoaderSkinModule
authorTimo Tijhof <krinklemail@gmail.com>
Sat, 8 Jul 2017 03:34:56 +0000 (20:34 -0700)
committerBartosz Dziewoński <matma.rex@gmail.com>
Mon, 10 Jul 2017 17:59:17 +0000 (17:59 +0000)
Change-Id: I299eff8f5172e047c0d54d9c824b17529dd6d190

tests/phpunit/includes/resourceloader/ResourceLoaderSkinModuleTest.php [new file with mode: 0644]

diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderSkinModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderSkinModuleTest.php
new file mode 100644 (file)
index 0000000..c567698
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * @group Database
+ * @group ResourceLoader
+ */
+class ResourceLoaderSkinModuleTest extends PHPUnit_Framework_TestCase {
+
+       public static function provideGetStyles() {
+               return [
+                       [
+                               'parent' => [],
+                               'expected' => [
+                                       'all' => [ '.mw-wiki-logo { background-image: url(/logo.png); }' ],
+                               ],
+                       ],
+                       [
+                               'parent' => [
+                                       'screen' => '.example {}',
+                               ],
+                               'expected' => [
+                                       'screen' => [ '.example {}' ],
+                                       'all' => [ '.mw-wiki-logo { background-image: url(/logo.png); }' ],
+                               ],
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetStyles
+        * @covers ResourceLoaderSkinModule::normalizeStyles
+        * @covers ResourceLoaderSkinModule::getStyles
+        */
+       public function testGetStyles( $parent, $expected ) {
+               $module = $this->getMockBuilder( ResourceLoaderSkinModule::class )
+                       ->disableOriginalConstructor()
+                       ->setMethods( [ 'readStyleFiles' ] )
+                       ->getMock();
+               $module->expects( $this->once() )->method( 'readStyleFiles' )
+                       ->willReturn( $parent );
+               $module->setConfig( new HashConfig( [
+                       'ResourceBasePath' => '/w',
+                       'Logo' => '/logo.png',
+                       'LogoHD' => false,
+               ] ) );
+
+               $ctx = $this->getMockBuilder( ResourceLoaderContext::class )
+                       ->disableOriginalConstructor()->getMock();
+
+               $this->assertEquals(
+                       $module->getStyles( $ctx ),
+                       $expected
+               );
+       }
+
+       /**
+        * @covers ResourceLoaderSkinModule::isKnownEmpty
+        */
+       public function testIsKnownEmpty() {
+               $module = $this->getMockBuilder( ResourceLoaderSkinModule::class )
+                       ->disableOriginalConstructor()->setMethods( null )->getMock();
+               $ctx = $this->getMockBuilder( ResourceLoaderContext::class )
+                       ->disableOriginalConstructor()->getMock();
+
+               $this->assertFalse( $module->isKnownEmpty( $ctx ) );
+       }
+}