mockUserAuthorityWithPermissions( $userIdentity, [ 'editmywatchlist', 'viewmywatchlist' ] ); $title = new PageIdentityValue( 100, NS_MAIN, 'Page_db_Key_goesHere', PageIdentityValue::LOCAL ); $services = $this->getServiceContainer(); $watchedItemStore = $services->getWatchedItemStore(); $watchlistManager = $services->getWatchlistManager(); $watchedItemStore->clearUserWatchedItems( $userIdentity ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ), 'The article has not been watched yet' ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ), "The article hasn't been temporarily watched" ); $watchlistManager->addWatch( $authority, $title ); $this->assertTrue( $watchlistManager->isWatched( $authority, $title ), 'The article has been watched' ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ), "The article hasn't been temporarily watched" ); $watchlistManager->removeWatch( $authority, $title ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ), 'The article has been unwatched' ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ), "The article hasn't been temporarily watched" ); $watchlistManager->addWatch( $authority, $title, '2 weeks' ); $this->assertTrue( $watchlistManager->isWatched( $authority, $title ), 'The article has been watched' ); $this->assertTrue( $watchlistManager->isTempWatched( $authority, $title ), 'The article has been tempoarily watched' ); $watchlistManager->removeWatch( $authority, $title ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ), 'The article has been unwatched' ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ), "The article hasn't been temporarily watched" ); $watchlistManager->addWatchIgnoringRights( $userIdentity, $title ); $this->assertTrue( $watchlistManager->isWatched( $authority, $title ), 'The article has been watched' ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ), "The article hasn't been temporarily watched" ); } /** * Can't move to unit tests because if the user is missing rights * the status is from User::newFatalPermissionDeniedStatus which uses * MediaWikiServices * * @covers \MediaWiki\Watchlist\WatchlistManager::isWatched * @covers \MediaWiki\Watchlist\WatchlistManager::isWatchedIgnoringRights * @covers \MediaWiki\Watchlist\WatchlistManager::isTempWatched * @covers \MediaWiki\Watchlist\WatchlistManager::isTempWatchedIgnoringRights * @covers \MediaWiki\Watchlist\WatchlistManager::addWatch * @covers \MediaWiki\Watchlist\WatchlistManager::addWatchIgnoringRights() * @covers \MediaWiki\Watchlist\WatchlistManager::removeWatch() */ public function testWatchlistNoRights() { $userIdentity = new UserIdentityValue( 100, 'User Name' ); $authority = $this->mockUserAuthorityWithPermissions( $userIdentity, [] ); $title = new PageIdentityValue( 100, NS_MAIN, 'Page_db_Key_goesHere', PageIdentityValue::LOCAL ); $services = $this->getServiceContainer(); $watchedItemStore = $services->getWatchedItemStore(); $watchlistManager = $services->getWatchlistManager(); $watchedItemStore->clearUserWatchedItems( $userIdentity ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); $this->assertFalse( $watchlistManager->isTempWatchedIgnoringRights( $userIdentity, $title ) ); $watchlistManager->addWatch( $authority, $title ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); $this->assertFalse( $watchlistManager->isTempWatchedIgnoringRights( $userIdentity, $title ) ); $watchlistManager->addWatchIgnoringRights( $userIdentity, $title ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ) ); $this->assertTrue( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); $this->assertFalse( $watchlistManager->isTempWatchedIgnoringRights( $userIdentity, $title ) ); $watchlistManager->addWatchIgnoringRights( $userIdentity, $title, '1 week' ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ) ); $this->assertTrue( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); $this->assertTrue( $watchlistManager->isTempWatchedIgnoringRights( $userIdentity, $title ) ); $watchlistManager->removeWatch( $authority, $title ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ) ); $this->assertTrue( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); $this->assertTrue( $watchlistManager->isTempWatchedIgnoringRights( $userIdentity, $title ) ); $watchlistManager->removeWatchIgnoringRights( $userIdentity, $title ); $this->assertFalse( $watchlistManager->isWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isTempWatched( $authority, $title ) ); $this->assertFalse( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); $this->assertFalse( $watchlistManager->isTempWatchedIgnoringRights( $userIdentity, $title ) ); } /** * Can't move to unit tests because if the user is missing rights * the status is from User::newFatalPermissionDeniedStatus which uses * MediaWikiServices * * @covers \MediaWiki\Watchlist\WatchlistManager::addWatch() */ public function testAddWatchUserNotPermittedStatusNotGood() { $userIdentity = new UserIdentityValue( 100, 'User Name' ); $performer = $this->mockUserAuthorityWithPermissions( $userIdentity, [] ); $title = new PageIdentityValue( 100, NS_MAIN, 'Page_db_Key_goesHere', PageIdentityValue::LOCAL ); $services = $this->getServiceContainer(); $watchedItemStore = $services->getWatchedItemStore(); $watchlistManager = $services->getWatchlistManager(); $watchedItemStore->clearUserWatchedItems( $userIdentity ); $actual = $watchlistManager->addWatch( $performer, $title ); $this->assertStatusNotGood( $actual ); $this->assertFalse( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); } /** * Can't move to unit tests because if the user is missing rights * the status is from User::newFatalPermissionDeniedStatus which uses * MediaWikiServices * * @covers \MediaWiki\Watchlist\WatchlistManager::removeWatch() */ public function testRemoveWatchWithoutRights() { $userIdentity = new UserIdentityValue( 100, 'User Name' ); $performer = $this->mockUserAuthorityWithPermissions( $userIdentity, [] ); $title = new PageIdentityValue( 100, NS_MAIN, 'Page_db_Key_goesHere', PageIdentityValue::LOCAL ); $services = $this->getServiceContainer(); $watchlistManager = $services->getWatchlistManager(); $watchlistManager->addWatchIgnoringRights( $userIdentity, $title ); $actual = $watchlistManager->removeWatch( $performer, $title ); $this->assertStatusNotGood( $actual ); $this->assertTrue( $watchlistManager->isWatchedIgnoringRights( $userIdentity, $title ) ); } }