10 class WatchedItemIntegrationTest
extends MediaWikiTestCase
{
12 public function setUp() {
14 self
::$users['WatchedItemIntegrationTestUser']
15 = new TestUser( 'WatchedItemIntegrationTestUser' );
17 $this->hideDeprecated( 'WatchedItem::fromUserTitle' );
18 $this->hideDeprecated( 'WatchedItem::addWatch' );
19 $this->hideDeprecated( 'WatchedItem::removeWatch' );
20 $this->hideDeprecated( 'WatchedItem::isWatched' );
21 $this->hideDeprecated( 'WatchedItem::duplicateEntries' );
22 $this->hideDeprecated( 'WatchedItem::batchAddWatch' );
25 private function getUser() {
26 return self
::$users['WatchedItemIntegrationTestUser']->getUser();
29 public function testWatchAndUnWatchItem() {
31 $user = $this->getUser();
32 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
33 // Cleanup after previous tests
34 WatchedItem
::fromUserTitle( $user, $title )->removeWatch();
37 WatchedItem
::fromUserTitle( $user, $title )->isWatched(),
38 'Page should not initially be watched'
40 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
42 WatchedItem
::fromUserTitle( $user, $title )->isWatched(),
43 'Page should be watched'
45 WatchedItem
::fromUserTitle( $user, $title )->removeWatch();
47 WatchedItem
::fromUserTitle( $user, $title )->isWatched(),
48 'Page should be unwatched'
52 public function testUpdateAndResetNotificationTimestamp() {
53 $user = $this->getUser();
54 $otherUser = ( new TestUser( 'WatchedItemIntegrationTestUser_otherUser' ) )->getUser();
55 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
56 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
57 $this->assertNull( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );
59 EmailNotification
::updateWatchlistTimestamp( $otherUser, $title, '20150202010101' );
62 WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp()
65 WatchedItem
::fromUserTitle( $user, $title )->resetNotificationTimestamp();
66 $this->assertNull( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );
69 public function testDuplicateAllAssociatedEntries() {
70 $user = $this->getUser();
71 $titleOld = Title
::newFromText( 'WatchedItemIntegrationTestPageOld' );
72 $titleNew = Title
::newFromText( 'WatchedItemIntegrationTestPageNew' );
73 WatchedItem
::fromUserTitle( $user, $titleOld->getSubjectPage() )->addWatch();
74 WatchedItem
::fromUserTitle( $user, $titleOld->getTalkPage() )->addWatch();
75 // Cleanup after previous tests
76 WatchedItem
::fromUserTitle( $user, $titleNew->getSubjectPage() )->removeWatch();
77 WatchedItem
::fromUserTitle( $user, $titleNew->getTalkPage() )->removeWatch();
79 WatchedItem
::duplicateEntries( $titleOld, $titleNew );
82 WatchedItem
::fromUserTitle( $user, $titleOld->getSubjectPage() )->isWatched()
85 WatchedItem
::fromUserTitle( $user, $titleOld->getTalkPage() )->isWatched()
88 WatchedItem
::fromUserTitle( $user, $titleNew->getSubjectPage() )->isWatched()
91 WatchedItem
::fromUserTitle( $user, $titleNew->getTalkPage() )->isWatched()
95 public function testIsWatched_falseOnNotAllowed() {
96 $user = $this->getUser();
97 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
98 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
100 $this->assertTrue( WatchedItem
::fromUserTitle( $user, $title )->isWatched() );
102 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->isWatched() );
105 public function testGetNotificationTimestamp_falseOnNotAllowed() {
106 $user = $this->getUser();
107 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
108 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
109 WatchedItem
::fromUserTitle( $user, $title )->resetNotificationTimestamp();
113 WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp()
116 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );
119 public function testRemoveWatch_falseOnNotAllowed() {
120 $user = $this->getUser();
121 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
122 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
124 $previousRights = $user->mRights
;
126 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->removeWatch() );
127 $user->mRights
= $previousRights;
128 $this->assertTrue( WatchedItem
::fromUserTitle( $user, $title )->removeWatch() );
131 public function testGetNotificationTimestamp_falseOnNotWatched() {
132 $user = $this->getUser();
133 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
135 WatchedItem
::fromUserTitle( $user, $title )->removeWatch();
136 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->isWatched() );
138 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );