MediaWiki  REL1_21
RecentChangeTest.php
Go to the documentation of this file.
00001 <?php
00005 class RecentChangeTest extends MediaWikiTestCase {
00006         protected $title;
00007         protected $target;
00008         protected $user;
00009         protected $user_comment;
00010         protected $context;
00011 
00012         function __construct() {
00013                 parent::__construct();
00014 
00015                 $this->title = Title::newFromText( 'SomeTitle' );
00016                 $this->target = Title::newFromText( 'TestTarget' );
00017                 $this->user = User::newFromName( 'UserName' );
00018 
00019                 $this->user_comment = '<User comment about action>';
00020                 $this->context = RequestContext::newExtraneousContext( $this->title );
00021         }
00022 
00059         function testIrcMsgForLogTypeBlock() {
00060                 $sep = $this->context->msg( 'colon-separator' )->text();
00061 
00062                 # block/block
00063                 $this->assertIRCComment(
00064                         $this->context->msg( 'blocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
00065                         'block', 'block',
00066                         array(),
00067                         $this->user_comment
00068                 );
00069                 # block/unblock
00070                 $this->assertIRCComment(
00071                         $this->context->msg( 'unblocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
00072                         'block', 'unblock',
00073                         array(),
00074                         $this->user_comment
00075                 );
00076         }
00077 
00081         function testIrcMsgForLogTypeDelete() {
00082                 $sep = $this->context->msg( 'colon-separator' )->text();
00083 
00084                 # delete/delete
00085                 $this->assertIRCComment(
00086                         $this->context->msg( 'deletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
00087                         'delete', 'delete',
00088                         array(),
00089                         $this->user_comment
00090                 );
00091 
00092                 # delete/restore
00093                 $this->assertIRCComment(
00094                         $this->context->msg( 'undeletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
00095                         'delete', 'restore',
00096                         array(),
00097                         $this->user_comment
00098                 );
00099         }
00100 
00104         function testIrcMsgForLogTypeNewusers() {
00105                 $this->assertIRCComment(
00106                         'New user account',
00107                         'newusers', 'newusers',
00108                         array()
00109                 );
00110                 $this->assertIRCComment(
00111                         'New user account',
00112                         'newusers', 'create',
00113                         array()
00114                 );
00115                 $this->assertIRCComment(
00116                         'created new account SomeTitle',
00117                         'newusers', 'create2',
00118                         array()
00119                 );
00120                 $this->assertIRCComment(
00121                         'Account created automatically',
00122                         'newusers', 'autocreate',
00123                         array()
00124                 );
00125         }
00126 
00130         function testIrcMsgForLogTypeMove() {
00131                 $move_params = array(
00132                         '4::target' => $this->target->getPrefixedText(),
00133                         '5::noredir' => 0,
00134                 );
00135                 $sep = $this->context->msg( 'colon-separator' )->text();
00136 
00137                 # move/move
00138                 $this->assertIRCComment(
00139                         $this->context->msg( '1movedto2', 'SomeTitle', 'TestTarget' )->plain() . $sep . $this->user_comment,
00140                         'move', 'move',
00141                         $move_params,
00142                         $this->user_comment
00143                 );
00144 
00145                 # move/move_redir
00146                 $this->assertIRCComment(
00147                         $this->context->msg( '1movedto2_redir', 'SomeTitle', 'TestTarget' )->plain() . $sep . $this->user_comment,
00148                         'move', 'move_redir',
00149                         $move_params,
00150                         $this->user_comment
00151                 );
00152         }
00153 
00157         function testIrcMsgForLogTypePatrol() {
00158                 # patrol/patrol
00159                 $this->assertIRCComment(
00160                         $this->context->msg( 'patrol-log-line', 'revision 777', '[[SomeTitle]]', '' )->plain(),
00161                         'patrol', 'patrol',
00162                         array(
00163                                 '4::curid' => '777',
00164                                 '5::previd' => '666',
00165                                 '6::auto' => 0,
00166                         )
00167                 );
00168         }
00169 
00173         function testIrcMsgForLogTypeProtect() {
00174                 $protectParams = array(
00175                         '[edit=sysop] (indefinite) ‎[move=sysop] (indefinite)'
00176                 );
00177                 $sep = $this->context->msg( 'colon-separator' )->text();
00178 
00179                 # protect/protect
00180                 $this->assertIRCComment(
00181                         $this->context->msg( 'protectedarticle', 'SomeTitle ' . $protectParams[0] )->plain() . $sep . $this->user_comment,
00182                         'protect', 'protect',
00183                         $protectParams,
00184                         $this->user_comment
00185                 );
00186 
00187                 # protect/unprotect
00188                 $this->assertIRCComment(
00189                         $this->context->msg( 'unprotectedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
00190                         'protect', 'unprotect',
00191                         array(),
00192                         $this->user_comment
00193                 );
00194 
00195                 # protect/modify
00196                 $this->assertIRCComment(
00197                         $this->context->msg( 'modifiedarticleprotection', 'SomeTitle ' . $protectParams[0] )->plain() . $sep . $this->user_comment,
00198                         'protect', 'modify',
00199                         $protectParams,
00200                         $this->user_comment
00201                 );
00202         }
00203 
00207         function testIrcMsgForLogTypeUpload() {
00208                 $sep = $this->context->msg( 'colon-separator' )->text();
00209 
00210                 # upload/upload
00211                 $this->assertIRCComment(
00212                         $this->context->msg( 'uploadedimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
00213                         'upload', 'upload',
00214                         array(),
00215                         $this->user_comment
00216                 );
00217 
00218                 # upload/overwrite
00219                 $this->assertIRCComment(
00220                         $this->context->msg( 'overwroteimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
00221                         'upload', 'overwrite',
00222                         array(),
00223                         $this->user_comment
00224                 );
00225         }
00226 
00232         /*
00233         function testIrcMsgForBlankingAES() {
00234                 // $this->context->msg( 'autosumm-blank', .. );
00235         }
00236 
00237         function testIrcMsgForReplaceAES() {
00238                 // $this->context->msg( 'autosumm-replace', .. );
00239         }
00240 
00241         function testIrcMsgForRollbackAES() {
00242                 // $this->context->msg( 'revertpage', .. );
00243         }
00244 
00245         function testIrcMsgForUndoAES() {
00246                 // $this->context->msg( 'undo-summary', .. );
00247         }
00248         */
00249 
00257         function assertIRCComment( $expected, $type, $action, $params, $comment = null, $msg = '' ) {
00258 
00259                 $logEntry = new ManualLogEntry( $type, $action );
00260                 $logEntry->setPerformer( $this->user );
00261                 $logEntry->setTarget( $this->title );
00262                 if ( $comment !== null ) {
00263                         $logEntry->setComment( $comment );
00264                 }
00265                 $logEntry->setParameters( $params );
00266 
00267                 $formatter = LogFormatter::newFromEntry( $logEntry );
00268                 $formatter->setContext( $this->context );
00269 
00270                 // Apply the same transformation as done in RecentChange::getIRCLine for rc_comment
00271                 $ircRcComment = RecentChange::cleanupForIRC( $formatter->getIRCActionComment() );
00272 
00273                 $this->assertEquals(
00274                         $expected,
00275                         $ircRcComment,
00276                         $msg
00277                 );
00278         }
00279 
00280 }