test Html::namespaceSelector() id & name attributes generation
authorAntoine Musso <hashar@users.mediawiki.org>
Mon, 30 Jan 2012 10:39:51 +0000 (10:39 +0000)
committerAntoine Musso <hashar@users.mediawiki.org>
Mon, 30 Jan 2012 10:39:51 +0000 (10:39 +0000)
Method was introduced by r109990.

tests/phpunit/includes/HtmlTest.php

index 90ff763..d3feacc 100644 (file)
@@ -257,4 +257,76 @@ class HtmlTest extends MediaWikiTestCase {
                        'Basic namespace selector with custom values'
                );
        }
+
+       function testNamespaceSelectorIdAndNameDefaultsAttributes() {
+
+               $this->assertNsSelectorIdAndName(
+                       'namespace', 'namespace',
+                       Html::namespaceSelector( array(), array(
+                               # neither 'id' nor 'name' key given
+                       )),
+                       "Neither 'id' nor 'name' key given"
+               );
+
+               $this->assertNsSelectorIdAndName(
+                       'namespace', 'select_name',
+                       Html::namespaceSelector( array(), array(
+                               'name' => 'select_name',
+                               # no 'id' key given
+                       )),
+                       "No 'id' key given, 'name' given"
+               );
+
+               $this->assertNsSelectorIdAndName(
+                       'select_id', 'namespace',
+                       Html::namespaceSelector( array(), array(
+                               'id' => 'select_id',
+                               # no 'name' key given
+                       )),
+                       "'id' given, no 'name' key given"
+               );
+
+               $this->assertNsSelectorIdAndName(
+                       'select_id', 'select_name',
+                       Html::namespaceSelector( array(), array(
+                               'id'   => 'select_id',
+                               'name' => 'select_name',
+                       )),
+                       "Both 'id' and 'name' given"
+               );
+       }
+
+       /**
+        * Helper to verify <select> attributes generated by Html::namespaceSelector()
+        * This helper expect the Html method to use 'namespace' as a default value for
+        * both 'id' and 'name' attributes.
+        *
+        * @param String $expectedId <select> id attribute value
+        * @param String $expectedName <select> name attribute value
+        * @param String $html Output of a call to Html::namespaceSelector()
+        * @param String $msg Optional message (default: '')
+       */
+       function assertNsSelectorIdAndName( $expectedId, $expectedName, $html, $msg = '' ) {
+               $actualId = 'namespace';
+               if( 1 === preg_match( '/id="(.+?)"/', $html, $m ) ) {
+                       $actualId = $m[1];
+               }
+
+               $actualName = 'namespace';
+               if( 1 === preg_match( '/name="(.+?)"/', $html, $m ) ) {
+                       $actualName = $m[1];
+               }
+               $this->assertEquals(
+                       array( #expected
+                               'id'   => $expectedId,
+                               'name' => $expectedName,
+                       ),
+                       array( #actual
+                               'id'   => $actualId,
+                               'name' => $actualName,
+                       ),
+                       'Html::namespaceSelector() got wrong id and/or name attribute(s). ' . $msg
+               );
+       }
+
 }