The name change happened some time ago, and I think its about time to start using the name name! (Done with a find and replace) My personal motivation for doing this is that I have started trying out vscode as an IDE for mediawiki development, and right now it doesn't appear to handle php aliases very well or at all. Change-Id: I412235d91ae26e4c1c6a62e0dbb7e7cf3c5ed4a6
65 lines
2 KiB
PHP
65 lines
2 KiB
PHP
<?php
|
|
/**
|
|
* @covers HTMLAutoCompleteSelectField
|
|
*/
|
|
class HTMLAutoCompleteSelectFieldTest extends MediaWikiIntegrationTestCase {
|
|
|
|
public $options = [
|
|
'Bulgaria' => 'BGR',
|
|
'Burkina Faso' => 'BFA',
|
|
'Burundi' => 'BDI',
|
|
];
|
|
|
|
/**
|
|
* Verify that attempting to instantiate an HTMLAutoCompleteSelectField
|
|
* without providing any autocomplete options causes an exception to be
|
|
* thrown.
|
|
*/
|
|
public function testMissingAutocompletions() {
|
|
$this->expectException( MWException::class );
|
|
$this->expectExceptionMessage( "called without any autocompletions" );
|
|
new HTMLAutoCompleteSelectField( [ 'fieldname' => 'Test' ] );
|
|
}
|
|
|
|
/**
|
|
* Verify that the autocomplete options are correctly encoded as
|
|
* the 'data-autocomplete' attribute of the field.
|
|
*
|
|
* @covers HTMLAutoCompleteSelectField::getAttributes
|
|
*/
|
|
public function testGetAttributes() {
|
|
$field = new HTMLAutoCompleteSelectField( [
|
|
'fieldname' => 'Test',
|
|
'autocomplete' => $this->options,
|
|
] );
|
|
|
|
$attributes = $field->getAttributes( [] );
|
|
$this->assertEquals( array_keys( $this->options ),
|
|
FormatJson::decode( $attributes['data-autocomplete'] ),
|
|
"The 'data-autocomplete' attribute encodes autocomplete option keys as a JSON array."
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Test that the optional select dropdown is included or excluded based on
|
|
* the presence or absence of the 'options' parameter.
|
|
*/
|
|
public function testOptionalSelectElement() {
|
|
$params = [
|
|
'fieldname' => 'Test',
|
|
'autocomplete-data' => $this->options,
|
|
'options' => $this->options,
|
|
];
|
|
|
|
$field = new HTMLAutoCompleteSelectField( $params );
|
|
$html = $field->getInputHTML( false );
|
|
$this->assertRegExp( '/select/', $html,
|
|
"When the 'options' parameter is set, the HTML includes a <select>" );
|
|
|
|
unset( $params['options'] );
|
|
$field = new HTMLAutoCompleteSelectField( $params );
|
|
$html = $field->getInputHTML( false );
|
|
$this->assertNotRegExp( '/select/', $html,
|
|
"When the 'options' parameter is not set, the HTML does not include a <select>" );
|
|
}
|
|
}
|