Add more tests for SkinFactory
authorKunal Mehta <legoktm@gmail.com>
Wed, 20 Aug 2014 07:26:50 +0000 (00:26 -0700)
committerKunal Mehta <legoktm@gmail.com>
Wed, 20 Aug 2014 07:26:50 +0000 (00:26 -0700)
Change-Id: I0a8f93abe597d6b2393f1c813e7bf76093f3ec89

tests/phpunit/includes/skins/SkinFactoryTest.php

index 7b7c7f8..36c56a9 100644 (file)
@@ -35,4 +35,34 @@ class SkinFactoryTest extends MediaWikiTestCase {
                $this->setExpectedException( 'UnexpectedValueException' );
                $factory->makeSkin( 'unittest' );
        }
+
+       /**
+        * @covers SkinFactory::makeSkin
+        */
+       public function testMakeSkinWithValidCallback() {
+               $factory = new SkinFactory();
+               $factory->register( 'testfallback', 'TestFallback', function () {
+                       return new SkinFallback();
+               } );
+
+               $skin = $factory->makeSkin( 'testfallback' );
+               $this->assertInstanceOf( 'Skin', $skin );
+               $this->assertInstanceOf( 'SkinFallback', $skin );
+       }
+
+       /**
+        * @covers SkinFactory::getSkinNames
+        */
+       public function testGetSkinNames() {
+               $factory = new SkinFactory();
+               // A fake callback we can use that will never be called
+               $callback = function() {};
+               $factory->register( 'skin1', 'Skin1', $callback );
+               $factory->register( 'skin2', 'Skin2', $callback );
+               $names = $factory->getSkinNames();
+               $this->assertArrayHasKey( 'skin1', $names );
+               $this->assertArrayHasKey( 'skin2', $names );
+               $this->assertEquals( 'Skin1', $names['skin1'] );
+               $this->assertEquals( 'Skin2', $names['skin2'] );
+       }
 }