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';
+ }
}