10 class WatchedItemIntegrationTest
extends MediaWikiTestCase
{
12 public function setUp() {
14 self
::$users['WatchedItemIntegrationTestUser']
15 = new TestUser( 'WatchedItemIntegrationTestUser' );
18 private function getUser() {
19 return self
::$users['WatchedItemIntegrationTestUser']->getUser();
22 public function testWatchAndUnWatchItem() {
23 $user = $this->getUser();
24 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
25 // Cleanup after previous tests
26 WatchedItem
::fromUserTitle( $user, $title )->removeWatch();
29 WatchedItem
::fromUserTitle( $user, $title )->isWatched(),
30 'Page should not initially be watched'
32 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
34 WatchedItem
::fromUserTitle( $user, $title )->isWatched(),
35 'Page should be watched'
37 WatchedItem
::fromUserTitle( $user, $title )->removeWatch();
39 WatchedItem
::fromUserTitle( $user, $title )->isWatched(),
40 'Page should be unwatched'
44 public function testUpdateAndResetNotificationTimestamp() {
45 $user = $this->getUser();
46 $otherUser = ( new TestUser( 'WatchedItemIntegrationTestUser_otherUser' ) )->getUser();
47 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
48 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
49 $this->assertNull( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );
51 EmailNotification
::updateWatchlistTimestamp( $otherUser, $title, '20150202010101' );
54 WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp()
57 WatchedItem
::fromUserTitle( $user, $title )->resetNotificationTimestamp();
58 $this->assertNull( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );
61 public function testDuplicateAllAssociatedEntries() {
62 $user = $this->getUser();
63 $titleOld = Title
::newFromText( 'WatchedItemIntegrationTestPageOld' );
64 $titleNew = Title
::newFromText( 'WatchedItemIntegrationTestPageNew' );
65 WatchedItem
::fromUserTitle( $user, $titleOld->getSubjectPage() )->addWatch();
66 WatchedItem
::fromUserTitle( $user, $titleOld->getTalkPage() )->addWatch();
67 // Cleanup after previous tests
68 WatchedItem
::fromUserTitle( $user, $titleNew->getSubjectPage() )->removeWatch();
69 WatchedItem
::fromUserTitle( $user, $titleNew->getTalkPage() )->removeWatch();
71 WatchedItem
::duplicateEntries( $titleOld, $titleNew );
74 WatchedItem
::fromUserTitle( $user, $titleOld->getSubjectPage() )->isWatched()
77 WatchedItem
::fromUserTitle( $user, $titleOld->getTalkPage() )->isWatched()
80 WatchedItem
::fromUserTitle( $user, $titleNew->getSubjectPage() )->isWatched()
83 WatchedItem
::fromUserTitle( $user, $titleNew->getTalkPage() )->isWatched()
87 public function testIsWatched_falseOnNotAllowed() {
88 $user = $this->getUser();
89 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
90 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
92 $this->assertTrue( WatchedItem
::fromUserTitle( $user, $title )->isWatched() );
94 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->isWatched() );
97 public function testGetNotificationTimestamp_falseOnNotAllowed() {
98 $user = $this->getUser();
99 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
100 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
101 WatchedItem
::fromUserTitle( $user, $title )->resetNotificationTimestamp();
105 WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp()
108 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );
111 public function testRemoveWatch_falseOnNotAllowed() {
112 $user = $this->getUser();
113 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
114 WatchedItem
::fromUserTitle( $user, $title )->addWatch();
116 $previousRights = $user->mRights
;
118 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->removeWatch() );
119 $user->mRights
= $previousRights;
120 $this->assertTrue( WatchedItem
::fromUserTitle( $user, $title )->removeWatch() );
123 public function testGetNotificationTimestamp_falseOnNotWatched() {
124 $user = $this->getUser();
125 $title = Title
::newFromText( 'WatchedItemIntegrationTestPage' );
127 WatchedItem
::fromUserTitle( $user, $title )->removeWatch();
128 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->isWatched() );
130 $this->assertFalse( WatchedItem
::fromUserTitle( $user, $title )->getNotificationTimestamp() );