gplx/mediawiki/extensions/SemanticMediaWiki/tests/phpunit/MediaWiki/Renderer/HtmlFormRendererTest.php

221 lines
6.0 KiB
PHP

<?php
namespace SMW\Tests\MediaWiki\Renderer;
use SMW\MediaWiki\Renderer\HtmlFormRenderer;
use SMW\Tests\Utils\UtilityFactory;
/**
* @covers \SMW\MediaWiki\Renderer\HtmlFormRenderer
* @group semantic-mediawiki
*
* @license GPL-2.0-or-later
* @since 2.1
*
* @author mwjames
*/
class HtmlFormRendererTest extends \PHPUnit\Framework\TestCase {
private $stringValidator;
protected function setUp(): void {
parent::setUp();
$this->stringValidator = UtilityFactory::getInstance()->newValidatorFactory()->newStringValidator();
}
public function testCanConstruct() {
$title = $this->getMockBuilder( '\MediaWiki\Title\Title' )
->disableOriginalConstructor()
->getMock();
$messageBuilder = $this->getMockBuilder( '\SMW\MediaWiki\MessageBuilder' )
->disableOriginalConstructor()
->getMock();
$this->assertInstanceOf(
'\SMW\MediaWiki\Renderer\HtmlFormRenderer',
new HtmlFormRenderer( $title, $messageBuilder )
);
}
public function testGetMessageBuilder() {
$title = $this->getMockBuilder( '\MediaWiki\Title\Title' )
->disableOriginalConstructor()
->getMock();
$messageBuilder = $this->getMockBuilder( '\SMW\MediaWiki\MessageBuilder' )
->disableOriginalConstructor()
->getMock();
$instance = new HtmlFormRenderer( $title, $messageBuilder );
$this->assertSame(
$messageBuilder,
$instance->getMessageBuilder()
);
}
public function testGetForm() {
$title = $this->getMockBuilder( '\MediaWiki\Title\Title' )
->disableOriginalConstructor()
->getMock();
$message = $this->getMockBuilder( '\MediaWiki\Message\Message' )
->disableOriginalConstructor()
->getMock();
$message->expects( $this->any() )
->method( 'title' )
->willReturnSelf();
$message->expects( $this->any() )
->method( 'numParams' )
->willReturnSelf();
$message->expects( $this->any() )
->method( 'rawParams' )
->willReturnSelf();
$message->expects( $this->any() )
->method( 'text' )
->willReturn( 'SomeText' );
$messageBuilder = $this->getMockBuilder( '\SMW\MediaWiki\MessageBuilder' )
->disableOriginalConstructor()
->getMock();
$messageBuilder->expects( $this->any() )
->method( 'getMessage' )
->willReturn( $message );
$instance = new HtmlFormRenderer( $title, $messageBuilder );
$instance
->setName( 'SomeForm' )
->withFieldset()
->addParagraph( 'SomeDescription' )
->addQueryParameter( 'SomeQueryParameter', 'SomeQueryValue' )
->addPaging( 10, 0, 5 )
->addHorizontalRule()
->addInputField( 'SomeInputFieldLabel', 'foo', 'Foo', 'FooId', 333 )
->addLineBreak()
->addNonBreakingSpace()
->addInputField( 'AnotherInputFieldLabel', 'AnotherInputFieldName', 'AnotherInputFieldValue' )
->addSubmitButton( 'FindFoo' );
$expected = [
'form id="smw-form-SomeForm" name="SomeForm" method="get"',
'<p class="smw-form-paragraph">SomeDescription</p>',
'input name="foo" size="333" value="Foo" id="FooId"',
'input name="AnotherInputFieldName" size="20" value="AnotherInputFieldValue" id="AnotherInputFieldName"',
'input type="submit" value="FindFoo"',
// '<br />&nbsp;' MW 1.27 <br/>&nbsp;
];
$this->stringValidator->assertThatStringContains(
$expected,
$instance->getForm()
);
}
public function testOptionsSelecList() {
$title = $this->getMockBuilder( '\MediaWiki\Title\Title' )
->disableOriginalConstructor()
->getMock();
$message = $this->getMockBuilder( '\MediaWiki\Message\Message' )
->disableOriginalConstructor()
->getMock();
$message->expects( $this->any() )
->method( 'text' )
->willReturn( 'SomeText' );
$messageBuilder = $this->getMockBuilder( '\SMW\MediaWiki\MessageBuilder' )
->disableOriginalConstructor()
->getMock();
$messageBuilder->expects( $this->any() )
->method( 'getMessage' )
->willReturn( $message );
$instance = new HtmlFormRenderer( $title, $messageBuilder );
$instance
->setName( 'optionsSelecListForm' )
->withFieldset()
->setMethod( 'isNeithergetNorPostMethodUseDefaultInstead' )
->addOptionSelectList(
'optionlistLabel',
'optionlistName',
'b',
[ 'f' => 'foo', 'b' => 'bar' ],
'optionslistId' );
$expected = [
'form id="smw-form-optionsSelecListForm" name="optionsSelecListForm" method="get"',
'<fieldset id="smw-form-fieldset-optionsSelecListForm">',
'<label for="optionslistId">optionlistLabel</label>&#160;',
'<select name="optionlistName" id="optionslistId" class="smw-form-select">',
'<option value="b" selected="">bar</option>',
'<option value="f">foo</option>'
];
$this->stringValidator->assertThatStringContains(
$expected,
$instance->getForm()
);
}
public function testCheckbox() {
$title = $this->getMockBuilder( '\MediaWiki\Title\Title' )
->disableOriginalConstructor()
->getMock();
$message = $this->getMockBuilder( '\MediaWiki\Message\Message' )
->disableOriginalConstructor()
->getMock();
$message->expects( $this->any() )
->method( 'text' )
->willReturn( 'SomeText' );
$messageBuilder = $this->getMockBuilder( '\SMW\MediaWiki\MessageBuilder' )
->disableOriginalConstructor()
->getMock();
$messageBuilder->expects( $this->any() )
->method( 'getMessage' )
->willReturn( $message );
$instance = new HtmlFormRenderer( $title, $messageBuilder );
$instance
->setName( 'checkboxForm' )
->addHeader( 'invalidLevel', 'someHeader' )
->withFieldset()
->setMethod( 'post' )
->setActionUrl( 'http://example.org/foo' )
->addCheckbox(
'checkboxLabel',
'checkboxName',
true,
'checkBoxId' );
$expected = [
'<form id="smw-form-checkboxForm" name="checkboxForm" method="post" action="http://example.org/foo">',
'<h2>someHeader</h2>',
'<fieldset id="smw-form-fieldset-checkboxForm">',
'<input name="checkboxName" type="checkbox" value="1" checked="checked" id="checkboxName" class="smw-form-checkbox" />',
'<label for="checkboxName" class="smw-form-checkbox">checkboxLabel</label>'
];
$this->stringValidator->assertThatStringContains(
$expected,
$instance->getForm()
);
}
}