X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FHtmlTest.php;h=a8829cd848db87c0f2451010a757b943667ab77d;hb=f97233896606a6f45c7f93db714e81b64aa9c0ab;hp=e9349656bee268412d0e1a1eb34c26d573dec481;hpb=19a38526f390cfdc6a6061cc055fc7f13167bf03;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/HtmlTest.php b/tests/phpunit/includes/HtmlTest.php index e9349656be..a8829cd848 100644 --- a/tests/phpunit/includes/HtmlTest.php +++ b/tests/phpunit/includes/HtmlTest.php @@ -112,7 +112,8 @@ class HtmlTest extends MediaWikiTestCase { Html::expandAttributes( array( 'foo' => false ) ), 'skip keys with false value' ); - $this->assertNotEmpty( + $this->assertEquals( + ' foo=""', Html::expandAttributes( array( 'foo' => '' ) ), 'keep keys with an empty string' ); @@ -153,6 +154,33 @@ class HtmlTest extends MediaWikiTestCase { ); } + /** + * @covers HTML::expandAttributes + */ + public function testExpandAttributesForNumbers() { + $this->assertEquals( + ' value=1', + Html::expandAttributes( array( 'value' => 1 ) ), + 'Integer value is cast to a string' + ); + $this->assertEquals( + ' value=1.1', + Html::expandAttributes( array( 'value' => 1.1 ) ), + 'Float value is cast to a string' + ); + } + + /** + * @covers HTML::expandAttributes + */ + public function testExpandAttributesForObjects() { + $this->assertEquals( + ' value=stringValue', + Html::expandAttributes( array( 'value' => new HtmlTestValue() ) ), + 'Object value is converted to a string' + ); + } + /** * Test for Html::expandAttributes() * Please note it output a string prefixed with a space! @@ -299,6 +327,21 @@ class HtmlTest extends MediaWikiTestCase { ); } + /** + * @covers Html::expandAttributes + * @expectedException MWException + */ + public function testExpandAttributes_ArrayOnNonListValueAttribute_ThrowsException() { + // Real-life test case found in the Popups extension (see Gerrit cf0fd64), + // when used with an outdated BetaFeatures extension (see Gerrit deda1e7) + Html::expandAttributes( array( + 'src' => array( + 'ltr' => 'ltr.svg', + 'rtl' => 'rtl.svg' + ) + ) ); + } + /** * @covers Html::namespaceSelector */ @@ -664,4 +707,67 @@ class HtmlTest extends MediaWikiTestCase { ) ); } + + public function testWrapperInput() { + $this->assertEquals( + '', + Html::input( 'testname', 'testval', 'radio' ), + 'Input wrapper with type and value.' + ); + $this->assertEquals( + '', + Html::input( 'testname' ), + 'Input wrapper with all default values.' + ); + } + + public function testWrapperCheck() { + $this->assertEquals( + '', + Html::check( 'testname' ), + 'Checkbox wrapper unchecked.' + ); + $this->assertEquals( + '', + Html::check( 'testname', true ), + 'Checkbox wrapper checked.' + ); + $this->assertEquals( + '', + Html::check( 'testname', false, array( 'value' => 'testval' ) ), + 'Checkbox wrapper with a value override.' + ); + } + + public function testWrapperRadio() { + $this->assertEquals( + '', + Html::radio( 'testname' ), + 'Radio wrapper unchecked.' + ); + $this->assertEquals( + '', + Html::radio( 'testname', true ), + 'Radio wrapper checked.' + ); + $this->assertEquals( + '', + Html::radio( 'testname', false, array( 'value' => 'testval' ) ), + 'Radio wrapper with a value override.' + ); + } + + public function testWrapperLabel() { + $this->assertEquals( + '', + Html::label( 'testlabel', 'testid' ), + 'Label wrapper' + ); + } +} + +class HtmlTestValue { + function __toString() { + return 'stringValue'; + } }