From ec8e5dcf95311120ebce88dbd0ad4221c83d3763 Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Mon, 24 Apr 2017 08:54:10 -0400 Subject: [PATCH] userExpLevel test: use a single time() Capture `$now = time()` only once and propagate the value in the test and production code. Bug: T161041 Change-Id: Ib2887a81a4e8015e3c80ef89d48181c7e5e1d406 --- .../specialpage/ChangesListSpecialPage.php | 6 ++-- .../ChangesListSpecialPageTest.php | 30 ++++++++++--------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 3aafc948e5..870f24ac82 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -1211,7 +1211,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { * @param array $selectedExpLevels The allowed active values, sorted */ public function filterOnUserExperienceLevel( $specialPageClassName, $context, $dbr, - &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels ) { + &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels, $now = 0 ) { global $wgLearnerEdits, $wgExperiencedUserEdits, @@ -1230,7 +1230,9 @@ abstract class ChangesListSpecialPage extends SpecialPage { $tables[] = 'user'; $join_conds['user'] = [ 'LEFT JOIN', 'rc_user = user_id' ]; - $now = time(); + if ( $now === 0 ) { + $now = time(); + } $secondsPerDay = 86400; $learnerCutoff = $now - $wgLearnerMemberSince * $secondsPerDay; $experiencedUserCutoff = $now - $wgExperiencedUserMemberSince * $secondsPerDay; diff --git a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php index b536c22f2e..d8919cd7aa 100644 --- a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php +++ b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php @@ -396,6 +396,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testFilterUserExpLevel() { + $now = time(); $this->setMwGlobals( [ 'wgLearnerEdits' => 10, 'wgLearnerMemberSince' => 4, @@ -412,12 +413,12 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase 'Learner3' => [ 'edits' => 460, 'days' => 33 ], 'Learner4' => [ 'edits' => 525, 'days' => 28 ], 'Experienced1' => [ 'edits' => 538, 'days' => 33 ], - ] ); + ], $now ); // newcomers only $this->assertArrayEquals( [ 'Newcomer1', 'Newcomer2', 'Newcomer3' ], - $this->fetchUsers( [ 'newcomer' ] ) + $this->fetchUsers( [ 'newcomer' ], $now ) ); // newcomers and learner @@ -426,7 +427,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase 'Newcomer1', 'Newcomer2', 'Newcomer3', 'Learner1', 'Learner2', 'Learner3', 'Learner4', ], - $this->fetchUsers( [ 'newcomer', 'learner' ] ) + $this->fetchUsers( [ 'newcomer', 'learner' ], $now ) ); // newcomers and more learner @@ -435,19 +436,19 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase 'Newcomer1', 'Newcomer2', 'Newcomer3', 'Experienced1', ], - $this->fetchUsers( [ 'newcomer', 'experienced' ] ) + $this->fetchUsers( [ 'newcomer', 'experienced' ], $now ) ); // learner only $this->assertArrayEquals( [ 'Learner1', 'Learner2', 'Learner3', 'Learner4' ], - $this->fetchUsers( [ 'learner' ] ) + $this->fetchUsers( [ 'learner' ], $now ) ); // more experienced only $this->assertArrayEquals( [ 'Experienced1' ], - $this->fetchUsers( [ 'experienced' ] ) + $this->fetchUsers( [ 'experienced' ], $now ) ); // learner and more experienced @@ -456,7 +457,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase 'Learner1', 'Learner2', 'Learner3', 'Learner4', 'Experienced1', ], - $this->fetchUsers( [ 'learner', 'experienced' ] ), + $this->fetchUsers( [ 'learner', 'experienced' ], $now ), 'Learner and more experienced' ); @@ -469,25 +470,25 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase /* 'Learner1', 'Learner2', 'Learner3', 'Learner4', */ /* 'Experienced1', */ /* ], */ - /* $this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ] ) */ + /* $this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ], $now ) */ /* ); */ } - private function createUsers( $specs ) { + private function createUsers( $specs, $now ) { $dbw = wfGetDB( DB_MASTER ); foreach ( $specs as $name => $spec ) { User::createNew( $name, [ 'editcount' => $spec['edits'], - 'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'] ) ), + 'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'], $now ) ), 'email' => 'ut', ] ); } } - private function fetchUsers( $filters ) { + private function fetchUsers( $filters, $now ) { $tables = []; $conds = []; $fields = []; @@ -507,7 +508,8 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase &$conds, &$query_options, &$join_conds, - $filters + $filters, + $now ] ); @@ -525,9 +527,9 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase return $usernames; } - private function daysAgo( $days ) { + private function daysAgo( $days, $now ) { $secondsPerDay = 86400; - return time() - $days * $secondsPerDay; + return $now - $days * $secondsPerDay; } public function testGetFilterGroupDefinitionFromLegacyCustomFilters() { -- 2.20.1