3 use MediaWiki\Request\FauxRequest
;
4 use MediaWiki\Specials\SpecialRenameUser
;
8 * @covers \MediaWiki\Specials\SpecialRenameUser
9 * @covers \MediaWiki\RenameUser\RenameuserSQL
11 class SpecialRenameUserTest
extends SpecialPageTestBase
{
12 protected function newSpecialPage() {
13 $services = $this->getServiceContainer();
14 return new SpecialRenameUser(
15 $services->getConnectionProvider(),
16 $services->getMovePageFactory(),
17 $services->getPermissionManager(),
18 $services->getTitleFactory(),
19 $services->getUserFactory(),
20 $services->getUserNamePrefixSearch(),
21 $services->getUserNameUtils()
25 public static function provideRenameAndMove() {
27 'no move' => [ false, false ],
28 'normal move' => [ true, false ],
29 'suppress redirect' => [ true, true ]
34 * @dataProvider provideRenameAndMove
35 * @param bool $movePages
36 * @param bool $suppressRedirects
38 public function testRenameAndMove( $movePages, $suppressRedirects ) {
39 $userFactory = $this->getServiceContainer()->getUserFactory();
40 $titleFactory = $this->getServiceContainer()->getTitleFactory();
42 $performer = $this->getTestSysop()->getUser();
43 $oldUser = $this->getTestUser()->getUser();
44 $oldName = $oldUser->getName();
45 $newName = $oldName . ' new';
46 $oldPage = $oldUser->getUserPage();
47 $oldTalkPage = $oldUser->getTalkPage();
48 $this->editPage( $oldPage, 'user page' );
49 $this->editPage( $oldPage->getSubpage( 'subpage' ), 'subpage' );
50 $this->editPage( $oldTalkPage, 'user talk page' );
53 'wpEditToken' => $performer->getEditToken(),
54 'oldusername' => $oldName,
55 'newusername' => $newName,
59 $formData['movepages'] = '1';
61 if ( $suppressRedirects ) {
62 $formData['suppressredirect'] = '1';
65 $this->executeSpecialPage(
67 new FauxRequest( $formData, true ),
72 $this->assertTrue( $userFactory->newFromName( $newName )->isRegistered(),
76 $titleFactory->makeTitle( NS_USER
, $newName )->exists(),
77 'new user page exists'
81 $titleFactory->makeTitle( NS_USER
, "$newName/subpage" )->exists(),
82 'new user subpage exists'
86 $titleFactory->makeTitle( NS_USER_TALK
, "$newName" )->exists(),
87 'new user talk page exists'
90 $oldPage->resetArticleID( false );
91 $this->assertSame( !$suppressRedirects, $oldPage->exists() );