From 0708470862f0caa1ac1ff2b30ef70c35f013d900 Mon Sep 17 00:00:00 2001 From: addshore Date: Tue, 8 Mar 2016 14:51:42 +0000 Subject: [PATCH] Add WatchedItemIntegrationTest Change-Id: I4760820fe075a29319e64c4dbc5d44f69848a351 --- .../includes/WatchedItemIntegrationTest.php | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 tests/phpunit/includes/WatchedItemIntegrationTest.php diff --git a/tests/phpunit/includes/WatchedItemIntegrationTest.php b/tests/phpunit/includes/WatchedItemIntegrationTest.php new file mode 100644 index 0000000000..20fcedb9a1 --- /dev/null +++ b/tests/phpunit/includes/WatchedItemIntegrationTest.php @@ -0,0 +1,123 @@ +getUser(); + } + + public function testWatchAndUnWatchItem() { + $user = $this->getUser(); + $title = Title::newFromText( 'WatchedItemIntegrationTestPage' ); + // Cleanup after previous tests + WatchedItem::fromUserTitle( $user, $title )->removeWatch(); + + $this->assertFalse( + WatchedItem::fromUserTitle( $user, $title )->isWatched(), + 'Page should not initially be watched' + ); + WatchedItem::fromUserTitle( $user, $title )->addWatch(); + $this->assertTrue( + WatchedItem::fromUserTitle( $user, $title )->isWatched(), + 'Page should be watched' + ); + WatchedItem::fromUserTitle( $user, $title )->removeWatch(); + $this->assertFalse( + WatchedItem::fromUserTitle( $user, $title )->isWatched(), + 'Page should be unwatched' + ); + } + + public function testUpdateAndResetNotificationTimestamp() { + $user = $this->getUser(); + $otherUser = ( new TestUser( 'WatchedItemIntegrationTestUser_otherUser' ) )->getUser(); + $title = Title::newFromText( 'WatchedItemIntegrationTestPage' ); + WatchedItem::fromUserTitle( $user, $title )->addWatch(); + $this->assertNull( WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() ); + + EmailNotification::updateWatchlistTimestamp( $otherUser, $title, '20150202010101' ); + $this->assertEquals( + '20150202010101', + WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() + ); + + WatchedItem::fromUserTitle( $user, $title )->resetNotificationTimestamp(); + $this->assertNull( WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() ); + } + + public function testDuplicateAllAssociatedEntries() { + $user = $this->getUser(); + $titleOld = Title::newFromText( 'WatchedItemIntegrationTestPageOld' ); + $titleNew = Title::newFromText( 'WatchedItemIntegrationTestPageNew' ); + WatchedItem::fromUserTitle( $user, $titleOld->getSubjectPage() )->addWatch(); + WatchedItem::fromUserTitle( $user, $titleOld->getTalkPage() )->addWatch(); + // Cleanup after previous tests + WatchedItem::fromUserTitle( $user, $titleNew->getSubjectPage() )->removeWatch(); + WatchedItem::fromUserTitle( $user, $titleNew->getTalkPage() )->removeWatch(); + + WatchedItem::duplicateEntries( $titleOld, $titleNew ); + + $this->assertTrue( + WatchedItem::fromUserTitle( $user, $titleOld->getSubjectPage() )->isWatched() + ); + $this->assertTrue( + WatchedItem::fromUserTitle( $user, $titleOld->getTalkPage() )->isWatched() + ); + $this->assertTrue( + WatchedItem::fromUserTitle( $user, $titleNew->getSubjectPage() )->isWatched() + ); + $this->assertTrue( + WatchedItem::fromUserTitle( $user, $titleNew->getTalkPage() )->isWatched() + ); + } + + public function testIsWatched_falseOnNotAllowed() { + $user = $this->getUser(); + $title = Title::newFromText( 'WatchedItemIntegrationTestPage' ); + WatchedItem::fromUserTitle( $user, $title )->addWatch(); + + $this->assertTrue( WatchedItem::fromUserTitle( $user, $title )->isWatched() ); + $user->mRights = []; + $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->isWatched() ); + } + + public function testGetNotificationTimestamp_falseOnNotAllowed() { + $user = $this->getUser(); + $title = Title::newFromText( 'WatchedItemIntegrationTestPage' ); + WatchedItem::fromUserTitle( $user, $title )->addWatch(); + WatchedItem::fromUserTitle( $user, $title )->resetNotificationTimestamp(); + + $this->assertEquals( + null, + WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() + ); + $user->mRights = []; + $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->isWatched() ); + } + + public function testRemoveWatch_falseOnNotAllowed() { + $user = $this->getUser(); + $title = Title::newFromText( 'WatchedItemIntegrationTestPage' ); + WatchedItem::fromUserTitle( $user, $title )->addWatch(); + + $previousRights = $user->mRights; + $user->mRights = []; + $this->assertFalse( WatchedItem::fromUserTitle( $user, $title )->removeWatch() ); + $user->mRights = $previousRights; + $this->assertTrue( WatchedItem::fromUserTitle( $user, $title )->removeWatch() ); + } + +} -- 2.20.1