Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5974224
WatchlistManagerTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
8 KB
Referenced Files
None
Subscribers
None
WatchlistManagerTest.php
View Options
<?php
use
MediaWiki\Page\PageIdentityValue
;
use
MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait
;
use
MediaWiki\User\UserIdentityValue
;
/**
* @covers \MediaWiki\Watchlist\WatchlistManager
*
* @author DannyS712
* @group Database
*/
class
WatchlistManagerTest
extends
MediaWikiIntegrationTestCase
{
use
MockAuthorityTrait
;
/**
* While this *could* be moved to a unit test, it is specifically kept
* here as an integration test to double check that the actual integration
* between this service and others, and getting this service from the
* service container, works as expected. Please don't move it to
* the unit tests.
*
* @covers \MediaWiki\Watchlist\WatchlistManager::isWatched
* @covers \MediaWiki\Watchlist\WatchlistManager::isTempWatched
* @covers \MediaWiki\Watchlist\WatchlistManager::addWatch
* @covers \MediaWiki\Watchlist\WatchlistManager::addWatchIgnoringRights()
* @covers \MediaWiki\Watchlist\WatchlistManager::removeWatch()
*/
public
function
testWatchlist
()
{
$userIdentity
=
new
UserIdentityValue
(
100
,
'User Name'
);
$authority
=
$this
->
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
)
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 17:13 (1 d, 7 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
00/49/25e95e9dc4adfffa6c5c022d6550
Default Alt Text
WatchlistManagerTest.php (8 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment