r90372 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r90371‎ | r90372 | r90373 >
Date:22:04, 18 June 2011
Author:aaron
Status:ok
Tags:
Comment:
Added FRUserActivityTest.php
Modified paths:
  • /trunk/extensions/FlaggedRevs/dataclasses/FRUserActivity.php (modified) (history)
  • /trunk/extensions/FlaggedRevs/tests/FRUserActivityTest.php (added) (history)
  • /trunk/extensions/FlaggedRevs/tests/FlaggedRevsTest.hooks.php (modified) (history)

Diff [purge]

Index: trunk/extensions/FlaggedRevs/tests/FlaggedRevsTest.hooks.php
@@ -6,6 +6,7 @@
77 public static function getUnitTests( &$files ) {
88 $files[] = dirname( __FILE__ ) . '/FRInclusionManagerTest.php';
99 $files[] = dirname( __FILE__ ) . '/FRUserCountersTest.php';
 10+ $files[] = dirname( __FILE__ ) . '/FRUserActivityTest.php';
1011 $files[] = dirname( __FILE__ ) . '/FRParserCacheStableTest.php';
1112 return true;
1213 }
Index: trunk/extensions/FlaggedRevs/tests/FRUserActivityTest.php
@@ -0,0 +1,166 @@
 2+<?php
 3+
 4+class FRUserActivityTest extends PHPUnit_Framework_TestCase {
 5+ /**
 6+ * Prepares the environment before running a test.
 7+ */
 8+ protected function setUp() {
 9+ global $wgMemc;
 10+ parent::setUp();
 11+ $this->user = User::newFromName( "someReviewer" );
 12+ $wgMemc = wfGetCache( CACHE_DB );
 13+ }
 14+
 15+ /**
 16+ * Cleans up the environment after running a test.
 17+ */
 18+ protected function tearDown() {
 19+ parent::tearDown();
 20+ }
 21+
 22+ /**
 23+ * Constructs the test case.
 24+ */
 25+ public function __construct() {}
 26+
 27+ public function testPageIsUnderReview() {
 28+ $page = 110;
 29+
 30+ FRUserActivity::clearAllReviewingPage( $page ); // clear
 31+ $this->assertEquals( false,
 32+ FRUserActivity::pageIsUnderReview( $page ), "Not reviewing page" );
 33+
 34+ FRUserActivity::setUserReviewingPage( $this->user, $page );
 35+
 36+ $this->assertEquals( true,
 37+ FRUserActivity::pageIsUnderReview( $page ), "Now reviewing page" );
 38+ }
 39+
 40+ public function testDiffIsUnderReview() {
 41+ $oldid = 10910;
 42+ $newid = 11910;
 43+
 44+ FRUserActivity::clearAllReviewingDiff( $oldid, $newid ); // clear
 45+ $this->assertEquals( false,
 46+ FRUserActivity::diffIsUnderReview( $oldid, $newid ), "Not reviewing diff" );
 47+
 48+ FRUserActivity::setUserReviewingDiff( $this->user, $oldid, $newid );
 49+
 50+ $this->assertEquals( true,
 51+ FRUserActivity::diffIsUnderReview( $oldid, $newid ), "Now reviewing diff" );
 52+ }
 53+
 54+ public function testGetUserReviewingPage() {
 55+ $page = 110;
 56+
 57+ FRUserActivity::clearAllReviewingPage( $page ); // clear
 58+ $this->assertEquals( array( null, null ),
 59+ FRUserActivity::getUserReviewingPage( $page ),
 60+ "Not reviewing page" );
 61+
 62+ $now1 = time();
 63+ FRUserActivity::setUserReviewingPage( $this->user, $page );
 64+ $now2 = time();
 65+
 66+ list($name, $ts) = FRUserActivity::getUserReviewingPage( $page );
 67+ $this->assertEquals( $this->user->getName(), $name,
 68+ "Now reviewing page (name matches)" );
 69+ $this->assertGreaterThanOrEqual( $now1, wfTimestamp( TS_UNIX, $ts ),
 70+ "Now reviewing page (timestamp matches)" );
 71+ $this->assertLessThanOrEqual( $now2, wfTimestamp( TS_UNIX, $ts ),
 72+ "Now reviewing page (timestamp matches)" );
 73+ }
 74+
 75+ public function testGetUserReviewingDiff() {
 76+ $oldid = 10910;
 77+ $newid = 11910;
 78+
 79+ FRUserActivity::clearAllReviewingDiff( $oldid, $newid ); // clear
 80+ $this->assertEquals( array( null, null ),
 81+ FRUserActivity::getUserReviewingDiff( $oldid, $newid ),
 82+ "Not reviewing diff" );
 83+
 84+ $now1 = time();
 85+ FRUserActivity::setUserReviewingDiff( $this->user, $oldid, $newid );
 86+ $now2 = time();
 87+
 88+ list($name, $ts) = FRUserActivity::getUserReviewingDiff( $oldid, $newid );
 89+ $this->assertEquals( $this->user->getName(), $name,
 90+ "Now reviewing diff (name matches)" );
 91+ $this->assertGreaterThanOrEqual( $now1, wfTimestamp( TS_UNIX, $ts ),
 92+ "Now reviewing diff (timestamp matches)" );
 93+ $this->assertLessThanOrEqual( $now2, wfTimestamp( TS_UNIX, $ts ),
 94+ "Now reviewing diff (timestamp matches)" );
 95+ }
 96+
 97+ public function testUserReviewingPage() {
 98+ $page = 910;
 99+
 100+ FRUserActivity::clearAllReviewingPage( $page ); // clear
 101+ $this->assertEquals( true,
 102+ FRUserActivity::setUserReviewingPage( $this->user, $page ),
 103+ "Set reviewing page succeeds" );
 104+
 105+ $this->assertEquals( true,
 106+ FRUserActivity::clearUserReviewingPage( $this->user, $page ),
 107+ "Unset reviewing page" );
 108+ $this->assertEquals( false,
 109+ FRUserActivity::clearUserReviewingPage( $this->user, $page ),
 110+ "Extra unset reviewing page" );
 111+
 112+ // set two instances...
 113+ $this->assertEquals( true,
 114+ FRUserActivity::setUserReviewingPage( $this->user, $page ),
 115+ "Set reviewing page (1)" );
 116+ $this->assertEquals( true,
 117+ FRUserActivity::setUserReviewingPage( $this->user, $page ),
 118+ "Set reviewing page (2)" );
 119+ // clear both...
 120+ $this->assertEquals( true,
 121+ FRUserActivity::clearUserReviewingPage( $this->user, $page ),
 122+ "Unset reviewing page (1)" );
 123+ $this->assertEquals( true,
 124+ FRUserActivity::clearUserReviewingPage( $this->user, $page ),
 125+ "Unset reviewing page (2)" );
 126+ // extra clears...
 127+ $this->assertEquals( false,
 128+ FRUserActivity::clearUserReviewingPage( $this->user, $page ),
 129+ "Extra unset reviewing page" );
 130+ }
 131+
 132+ public function testUserReviewingDiff() {
 133+ $oldid = 12910;
 134+ $newid = 15910;
 135+
 136+ FRUserActivity::clearAllReviewingDiff( $oldid, $newid ); // clear
 137+ $this->assertEquals( true,
 138+ FRUserActivity::setUserReviewingDiff( $this->user, $oldid, $newid ),
 139+ "Set reviewing page succeeds" );
 140+
 141+ $this->assertEquals( true,
 142+ FRUserActivity::clearUserReviewingDiff( $this->user, $oldid, $newid ),
 143+ "Unset reviewing page" );
 144+ $this->assertEquals( false,
 145+ FRUserActivity::clearUserReviewingDiff( $this->user, $oldid, $newid ),
 146+ "Extra unset reviewing page" );
 147+
 148+ // set two instances...
 149+ $this->assertEquals( true,
 150+ FRUserActivity::setUserReviewingDiff( $this->user, $oldid, $newid ),
 151+ "Set reviewing page (1)" );
 152+ $this->assertEquals( true,
 153+ FRUserActivity::setUserReviewingDiff( $this->user, $oldid, $newid ),
 154+ "Set reviewing page (2)" );
 155+ // clear both...
 156+ $this->assertEquals( true,
 157+ FRUserActivity::clearUserReviewingDiff( $this->user, $oldid, $newid ),
 158+ "Unset reviewing page (1)" );
 159+ $this->assertEquals( true,
 160+ FRUserActivity::clearUserReviewingDiff( $this->user, $oldid, $newid ),
 161+ "Unset reviewing page (2)" );
 162+ // extra clears...
 163+ $this->assertEquals( false,
 164+ FRUserActivity::clearUserReviewingDiff( $this->user, $oldid, $newid ),
 165+ "Extra unset reviewing page" );
 166+ }
 167+}
Property changes on: trunk/extensions/FlaggedRevs/tests/FRUserActivityTest.php
___________________________________________________________________
Added: svn:eol-style
1168 + native
Index: trunk/extensions/FlaggedRevs/dataclasses/FRUserActivity.php
@@ -81,7 +81,8 @@
8282 }
8383
8484 /*
85 - * Decrement/clear the flag for who is reviewing a page
 85+ * Clear an instance of a user reviewing a page by decrementing the counter.
 86+ * If it reaches 0 instances, then clear the flag for who is reviewing the page.
8687 * @param User $user
8788 * @param int $pageId
8889 * @return bool flag unset
@@ -92,6 +93,17 @@
9394 }
9495
9596 /*
 97+ * Totally clear the flag for who is reviewing a page.
 98+ * @param int $pageId
 99+ * @return void
 100+ */
 101+ public static function clearAllReviewingPage( $pageId ) {
 102+ global $wgMemc;
 103+ $key = wfMemcKey( 'flaggedrevs', 'userReviewingPage', $pageId );
 104+ $wgMemc->delete( $key );
 105+ }
 106+
 107+ /*
96108 * Get who is currently reviewing a diff
97109 * @param int $oldId
98110 * @param int $newId
@@ -131,7 +143,8 @@
132144 }
133145
134146 /*
135 - * Decrement/clear the flag for who is reviewing a diff
 147+ * Clear an instance of a user reviewing a diff by decrementing the counter.
 148+ * If it reaches 0 instances, then clear the flag for who is reviewing the diff.
136149 * @param User $user
137150 * @param int $oldId
138151 * @param int $newId
@@ -142,6 +155,18 @@
143156 return self::decUserReviewingItem( $key, $user, self::CHANGE_REVIEW_MS );
144157 }
145158
 159+ /*
 160+ * Totally clear the flag for who is reviewing a diff.
 161+ * @param int $oldId
 162+ * @param int $newId
 163+ * @return void
 164+ */
 165+ public static function clearAllReviewingDiff( $oldId, $newId ) {
 166+ global $wgMemc;
 167+ $key = wfMemcKey( 'flaggedrevs', 'userReviewingDiff', $oldId, $newId );
 168+ $wgMemc->delete( $key );
 169+ }
 170+
146171 protected static function incUserReviewingItem( $key, User $user, $ttlMs ) {
147172 global $wgMemc;
148173 $wasSet = false; // was changed?

Status & tagging log