Merge "shared.css: Don't center text in .mw_metadata (file metadata table)"
[lhc/web/wiklou.git] / tests / phpunit / includes / WatchedItemIntegrationTest.php
1 <?php
2
3 /**
4 * @author Addshore
5 *
6 * @group Database
7 *
8 * @covers WatchedItem
9 */
10 class WatchedItemIntegrationTest extends MediaWikiTestCase {
11
12 public function setUp() {
13 parent::setUp();
14 self::$users['WatchedItemIntegrationTestUser']
15 = new TestUser( 'WatchedItemIntegrationTestUser' );
16
17 $this->hideDeprecated( 'WatchedItem::fromUserTitle' );
18 $this->hideDeprecated( 'WatchedItem::addWatch' );
19 $this->hideDeprecated( 'WatchedItem::removeWatch' );
20 $this->hideDeprecated( 'WatchedItem::isWatched' );
21 $this->hideDeprecated( 'WatchedItem::resetNotificationTimestamp' );
22 $this->hideDeprecated( 'WatchedItem::duplicateEntries' );
23 $this->hideDeprecated( 'WatchedItem::batchAddWatch' );
24 }
25
26 private function getUser() {
27 return self::$users['WatchedItemIntegrationTestUser']->getUser();
28 }
29
30 public function testWatchAndUnWatchItem() {
31
32 $user = $this->getUser();
33 $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
34 // Cleanup after previous tests
35 WatchedItem::fromUserTitle( $user, $title )->removeWatch();
36
37 $this->assertFalse(
38 WatchedItem::fromUserTitle( $user, $title )->isWatched(),
39 'Page should not initially be watched'
40 );
41 WatchedItem::fromUserTitle( $user, $title )->addWatch();
42 $this->assertTrue(
43 WatchedItem::fromUserTitle( $user, $title )->isWatched(),
44 'Page should be watched'
45 );
46 WatchedItem::fromUserTitle( $user, $title )->removeWatch();
47 $this->assertFalse(
48 WatchedItem::fromUserTitle( $user, $title )->isWatched(),
49 'Page should be unwatched'
50 );
51 }
52
53 public function testUpdateAndResetNotificationTimestamp() {
54 $user = $this->getUser();
55 $otherUser = ( new TestUser( 'WatchedItemIntegrationTestUser_otherUser' ) )->getUser();
56 $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
57 WatchedItem::fromUserTitle( $user, $title )->addWatch();
58 $this->assertNull( WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() );
59
60 EmailNotification::updateWatchlistTimestamp( $otherUser, $title, '20150202010101' );
61 $this->assertEquals(
62 '20150202010101',
63 WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp()
64 );
65
66 WatchedItem::fromUserTitle( $user, $title )->resetNotificationTimestamp();
67 $this->assertNull( WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() );
68 }
69
70 public function testDuplicateAllAssociatedEntries() {
71 $user = $this->getUser();
72 $titleOld = Title::newFromText( 'WatchedItemIntegrationTestPageOld' );
73 $titleNew = Title::newFromText( 'WatchedItemIntegrationTestPageNew' );
74 WatchedItem::fromUserTitle( $user, $titleOld->getSubjectPage() )->addWatch();
75 WatchedItem::fromUserTitle( $user, $titleOld->getTalkPage() )->addWatch();
76 // Cleanup after previous tests
77 WatchedItem::fromUserTitle( $user, $titleNew->getSubjectPage() )->removeWatch();
78 WatchedItem::fromUserTitle( $user, $titleNew->getTalkPage() )->removeWatch();
79
80 WatchedItem::duplicateEntries( $titleOld, $titleNew );
81
82 $this->assertTrue(
83 WatchedItem::fromUserTitle( $user, $titleOld->getSubjectPage() )->isWatched()
84 );
85 $this->assertTrue(
86 WatchedItem::fromUserTitle( $user, $titleOld->getTalkPage() )->isWatched()
87 );
88 $this->assertTrue(
89 WatchedItem::fromUserTitle( $user, $titleNew->getSubjectPage() )->isWatched()
90 );
91 $this->assertTrue(
92 WatchedItem::fromUserTitle( $user, $titleNew->getTalkPage() )->isWatched()
93 );
94 }
95
96 public function testIsWatched_falseOnNotAllowed() {
97 $user = $this->getUser();
98 $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
99 WatchedItem::fromUserTitle( $user, $title )->addWatch();
100
101 $this->assertTrue( WatchedItem::fromUserTitle( $user, $title )->isWatched() );
102 $user->mRights = [];
103 $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->isWatched() );
104 }
105
106 public function testGetNotificationTimestamp_falseOnNotAllowed() {
107 $user = $this->getUser();
108 $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
109 WatchedItem::fromUserTitle( $user, $title )->addWatch();
110 WatchedItem::fromUserTitle( $user, $title )->resetNotificationTimestamp();
111
112 $this->assertEquals(
113 null,
114 WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp()
115 );
116 $user->mRights = [];
117 $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() );
118 }
119
120 public function testRemoveWatch_falseOnNotAllowed() {
121 $user = $this->getUser();
122 $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
123 WatchedItem::fromUserTitle( $user, $title )->addWatch();
124
125 $previousRights = $user->mRights;
126 $user->mRights = [];
127 $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->removeWatch() );
128 $user->mRights = $previousRights;
129 $this->assertTrue( WatchedItem::fromUserTitle( $user, $title )->removeWatch() );
130 }
131
132 public function testGetNotificationTimestamp_falseOnNotWatched() {
133 $user = $this->getUser();
134 $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
135
136 WatchedItem::fromUserTitle( $user, $title )->removeWatch();
137 $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->isWatched() );
138
139 $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() );
140 }
141
142 }