MediaWiki
REL1_24
|
00001 <?php 00002 00003 class SkinFactoryTest extends MediaWikiTestCase { 00004 00008 public function testRegister() { 00009 $factory = new SkinFactory(); 00010 $factory->register( 'fallback', 'Fallback', function () { 00011 return new SkinFallback(); 00012 } ); 00013 $this->assertTrue( true ); // No exception thrown 00014 $this->setExpectedException( 'InvalidArgumentException' ); 00015 $factory->register( 'invalid', 'Invalid', 'Invalid callback' ); 00016 } 00017 00021 public function testMakeSkinWithNoBuilders() { 00022 $factory = new SkinFactory(); 00023 $this->setExpectedException( 'SkinException' ); 00024 $factory->makeSkin( 'nobuilderregistered' ); 00025 } 00026 00030 public function testMakeSkinWithInvalidCallback() { 00031 $factory = new SkinFactory(); 00032 $factory->register( 'unittest', 'Unittest', function () { 00033 return true; // Not a Skin object 00034 } ); 00035 $this->setExpectedException( 'UnexpectedValueException' ); 00036 $factory->makeSkin( 'unittest' ); 00037 } 00038 00042 public function testMakeSkinWithValidCallback() { 00043 $factory = new SkinFactory(); 00044 $factory->register( 'testfallback', 'TestFallback', function () { 00045 return new SkinFallback(); 00046 } ); 00047 00048 $skin = $factory->makeSkin( 'testfallback' ); 00049 $this->assertInstanceOf( 'Skin', $skin ); 00050 $this->assertInstanceOf( 'SkinFallback', $skin ); 00051 } 00052 00056 public function testGetSkinNames() { 00057 $factory = new SkinFactory(); 00058 // A fake callback we can use that will never be called 00059 $callback = function () { 00060 // NOP 00061 }; 00062 $factory->register( 'skin1', 'Skin1', $callback ); 00063 $factory->register( 'skin2', 'Skin2', $callback ); 00064 $names = $factory->getSkinNames(); 00065 $this->assertArrayHasKey( 'skin1', $names ); 00066 $this->assertArrayHasKey( 'skin2', $names ); 00067 $this->assertEquals( 'Skin1', $names['skin1'] ); 00068 $this->assertEquals( 'Skin2', $names['skin2'] ); 00069 } 00070 }