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