wiki.techinc.nl/tests/phpunit/includes/logging/LogFormatterTest.php
jan 888fe0ffb3 (bug 24620) Add tests for LogFormatter
This change adds tests for LogFormatter. Tested are the normal log
params, the log params with type and the output of the comment.

Change-Id: I7218a1738c97db1d888605cecdfbffe21ca00fbf
2012-12-10 00:01:14 +00:00

200 lines
5.7 KiB
PHP
Executable file

<?php
/**
* @group Database
*/
class LogFormatterTest extends MediaWikiLangTestCase {
/**
* @var User
*/
protected $user;
/**
* @var Title
*/
protected $title;
/**
* @var RequestContext
*/
protected $context;
protected function setUp() {
parent::setUp();
global $wgLang;
$this->setMwGlobals( array(
'wgLogTypes' => array( 'phpunit' ),
'wgLogActionsHandlers' => array( 'phpunit/test' => 'LogFormatter',
'phpunit/param' => 'LogFormatter' ),
'wgUser' => User::newFromName( 'Testuser' ),
'wgExtensionMessagesFiles' => array( 'LogTests' => __DIR__.'/LogTests.i18n.php' ),
) );
$wgLang->getLocalisationCache()->recache( $wgLang->getCode() );
$this->user = User::newFromName( 'Testuser' );
$this->title = Title::newMainPage();
$this->context = new RequestContext();
$this->context->setUser( $this->user );
$this->context->setTitle( $this->title );
$this->context->setLanguage( $wgLang );
}
public function newLogEntry( $action, $params ) {
$logEntry = new ManualLogEntry( 'phpunit', $action );
$logEntry->setPerformer( $this->user );
$logEntry->setTarget( $this->title );
$logEntry->setComment( 'A very good reason' );
$logEntry->setParameters( $params );
return $logEntry;
}
public function testNormalLogParams() {
$entry = $this->newLogEntry( 'test', array() );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$formatter->setShowUserToolLinks( false );
$paramsWithoutTools = $formatter->getMessageParameters();
unset( $formatter->parsedParameters );
$formatter->setShowUserToolLinks( true );
$paramsWithTools = $formatter->getMessageParameters();
$userLink = Linker::userLink(
$this->user->getId(),
$this->user->getName()
);
$userTools = Linker::userToolLinksRedContribs(
$this->user->getId(),
$this->user->getName(),
$this->user->getEditCount()
);
$titleLink = Linker::link( $this->title, null, array(), array() );
// $paramsWithoutTools and $paramsWithTools should be only different
// in index 0
$this->assertEquals( $paramsWithoutTools[1], $paramsWithTools[1] );
$this->assertEquals( $paramsWithoutTools[2], $paramsWithTools[2] );
$this->assertEquals( $userLink, $paramsWithoutTools[0]['raw'] );
$this->assertEquals( $userLink . $userTools, $paramsWithTools[0]['raw'] );
$this->assertEquals( $this->user->getName(), $paramsWithoutTools[1] );
$this->assertEquals( $titleLink, $paramsWithoutTools[2]['raw'] );
}
public function testLogParamsTypeRaw() {
$params = array( '4:raw:raw' => Linker::link( $this->title, null, array(), array() ) );
$expected = Linker::link( $this->title, null, array(), array() );
$entry = $this->newLogEntry( 'param', $params );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$logParam = $formatter->getActionText();
$this->assertEquals( $expected, $logParam );
}
public function testLogParamsTypeMsg() {
$params = array( '4:msg:msg' => 'log-description-phpunit' );
$expected = wfMessage( 'log-description-phpunit' )->text();
$entry = $this->newLogEntry( 'param', $params );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$logParam = $formatter->getActionText();
$this->assertEquals( $expected, $logParam );
}
public function testLogParamsTypeMsgContent() {
$params = array( '4:msg-content:msgContent' => 'log-description-phpunit' );
$expected = wfMessage( 'log-description-phpunit' )->inContentLanguage()->text();
$entry = $this->newLogEntry( 'param', $params );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$logParam = $formatter->getActionText();
$this->assertEquals( $expected, $logParam );
}
public function testLogParamsTypeNumber() {
global $wgLang;
$params = array( '4:number:number' => 123456789 );
$expected = $wgLang->formatNum( 123456789 );
$entry = $this->newLogEntry( 'param', $params );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$logParam = $formatter->getActionText();
$this->assertEquals( $expected, $logParam );
}
public function testLogParamsTypeUserLink() {
$params = array( '4:user-link:userLink' => $this->user->getName() );
$expected = Linker::userLink(
$this->user->getId(),
$this->user->getName()
);
$entry = $this->newLogEntry( 'param', $params );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$logParam = $formatter->getActionText();
$this->assertEquals( $expected, $logParam );
}
public function testLogParamsTypeTitleLink() {
$params = array( '4:title-link:titleLink' => $this->title->getText() );
$expected = Linker::link( $this->title, null, array(), array() );
$entry = $this->newLogEntry( 'param', $params );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$logParam = $formatter->getActionText();
$this->assertEquals( $expected, $logParam );
}
public function testLogParamsTypePlain() {
$params = array( '4:plain:plain' => 'Some plain text' );
$expected = 'Some plain text';
$entry = $this->newLogEntry( 'param', $params );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$logParam = $formatter->getActionText();
$this->assertEquals( $expected, $logParam );
}
public function testLogComment() {
$entry = $this->newLogEntry( 'test', array() );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->context );
$comment = ltrim( Linker::commentBlock( $entry->getComment() ) );
$this->assertEquals( $comment, $formatter->getComment() );
}
}