Run maintenance/generateLocalAutoload.php
[mediawiki.git] / tests / phpunit / includes / WatchedItemIntegrationTest.php
blobe5362053fda9ae3df324c4fc8273856c53a2d10b
1 <?php
3 /**
4 * @author Addshore
6 * @group Database
8 * @covers WatchedItem
9 */
10 class WatchedItemIntegrationTest extends MediaWikiTestCase {
12 public function setUp() {
13 parent::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();
28 $this->assertFalse(
29 WatchedItem::fromUserTitle( $user, $title )->isWatched(),
30 'Page should not initially be watched'
32 WatchedItem::fromUserTitle( $user, $title )->addWatch();
33 $this->assertTrue(
34 WatchedItem::fromUserTitle( $user, $title )->isWatched(),
35 'Page should be watched'
37 WatchedItem::fromUserTitle( $user, $title )->removeWatch();
38 $this->assertFalse(
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' );
52 $this->assertEquals(
53 '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 );
73 $this->assertTrue(
74 WatchedItem::fromUserTitle( $user, $titleOld->getSubjectPage() )->isWatched()
76 $this->assertTrue(
77 WatchedItem::fromUserTitle( $user, $titleOld->getTalkPage() )->isWatched()
79 $this->assertTrue(
80 WatchedItem::fromUserTitle( $user, $titleNew->getSubjectPage() )->isWatched()
82 $this->assertTrue(
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() );
93 $user->mRights = [];
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();
103 $this->assertEquals(
104 null,
105 WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp()
107 $user->mRights = [];
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;
117 $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() );