mediawiki-skins-MinervaNeue/tests/phpunit/skins/SkinUserPageHelperTest.php
Umherirrender b21e4a98bc Avoid use of deprecated User::idFromName
Use a UserFactory instead of getting an id and the user objects on
second request

Also replace another deprecated User class and use the injected factory

Bug: T325687
Change-Id: Id610ee39e0ef865b97f7ae8506188eea04a86ac5
2022-12-21 22:35:49 +01:00

183 lines
4.5 KiB
PHP

<?php
namespace MediaWiki\Minerva;
use MediaWiki\Minerva\Skins\SkinUserPageHelper;
use MediaWikiIntegrationTestCase;
use Title;
/**
* @group MinervaNeue
* @coversDefaultClass \MediaWiki\Minerva\Skins\SkinUserPageHelper
*/
class SkinUserPageHelperTest extends MediaWikiIntegrationTestCase {
/**
* @covers ::isUserPage
* @covers ::fetchData
* @covers ::__construct
*/
public function testTitleNotInUserNamespace() {
$title = Title::makeTitle( NS_MAIN, 'Test_Page' );
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$title
);
$this->assertFalse( $helper->isUserPage() );
}
/**
* @covers ::isUserPage
* @covers ::fetchData
* @covers ::__construct
*/
public function testTitleIsNull() {
$title = null;
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$title
);
$this->assertNull( $helper->getPageUser() );
$this->assertFalse( $helper->isUserPage() );
}
/**
* @covers ::isUserPage
* @covers ::fetchData
*/
public function testTitleisASubpage() {
$title = Title::makeTitle( NS_USER, 'TestUser/subpage' );
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$title
);
$this->assertFalse( $helper->isUserPage() );
}
/**
* @covers ::isUserPage
* @covers ::fetchData
* @covers ::buildPageUserObject
*/
public function testTitleisAnIP() {
$title = Title::makeTitle( NS_USER, '127.0.0.1' );
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$title
);
$this->assertTrue( $helper->isUserPage() );
}
/**
* @covers ::isUserPage
* @covers ::fetchData
* @covers ::buildPageUserObject
*/
public function testTitleIsIPRange() {
$title = Title::makeTitle( NS_USER, '127.0.0.1/24' );
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$title
);
$this->assertFalse( $helper->isUserPage() );
}
/**
* @covers ::isUserPage
* @covers ::fetchData
* @covers ::buildPageUserObject
*/
public function testTitleIsFakeUserPage() {
$title = Title::makeTitle( NS_USER, 'Fake_user' );
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$title
);
$this->assertFalse( $helper->isUserPage() );
}
/**
* @covers ::fetchData
*/
public function testTitleProcessingIsCached() {
$titleMock = $this->getMockBuilder( Title::class )
->disableOriginalConstructor()
->getMock();
$titleMock->expects( $this->once() )
->method( 'inNamespace' )
->with( NS_USER )
->willReturn( true );
$titleMock->expects( $this->once() )
->method( 'isSubpage' )
->willReturn( false );
$titleMock->expects( $this->once() )
->method( 'getText' )
->willReturn( 'Test' );
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$titleMock
);
$helper->isUserPage();
$helper->isUserPage();
$helper->getPageUser();
$helper->getPageUser();
}
/**
* @covers ::fetchData
* @covers ::getPageUser
* @covers ::isUserPage
*/
public function testGetPageUserWhenOnUserPage() {
$testUser = $this->getTestUser()->getUser();
$title = $testUser->getUserPage();
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$title
);
$this->assertTrue( $helper->isUserPage() );
$this->assertEquals( $testUser->getId(), $helper->getPageUser()->getId() );
}
/**
* @covers ::fetchData
* @covers ::getPageUser
* @covers ::isUserPage
*/
public function testGetPageUserWhenOnUserPageReturnsCorrectUser() {
$testUser = $this->getTestUser()->getUser();
$testUserTitle = $testUser->getUserPage();
$secondTestUser = $this->getTestSysop()->getUser();
$secondTestUserTitle = $secondTestUser->getUserPage();
$helper = new SkinUserPageHelper(
$this->getServiceContainer()->getUserNameUtils(),
$this->getServiceContainer()->getUserFactory(),
$secondTestUserTitle
);
$this->assertTrue( $helper->isUserPage() );
$this->assertNotEquals( $testUser->getId(), $helper->getPageUser()->getId() );
$this->assertNotEquals( $helper->getPageUser()->getUserPage(), $testUserTitle );
}
}