X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fspecialpage%2FChangesListSpecialPageTest.php;h=fd7e0f116e0316b51b936a90e860764531549740;hb=1af0d7d0251fa7660d65e6a4ad6d90cc142a46bb;hp=c8c65dc4a0e2bd2d3ed025e245e466a1b305ea6b;hpb=dca600fe7caeecf60d4eb13fdca9a054cd4b1376;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php index c8c65dc4a0..fd7e0f116e 100644 --- a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php +++ b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php @@ -37,11 +37,8 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase return $mock; } - /** helper to test SpecialRecentchanges::buildMainQueryConds() */ - private function assertConditions( - $expected, + private function buildQuery( $requestOptions = null, - $message = '', $user = null ) { $context = new RequestContext; @@ -81,6 +78,18 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase 'ChangesListSpecialPageTest::filterOutRcTimestampCondition' ); + return $queryConditions; + } + + /** helper to test SpecialRecentchanges::buildQuery() */ + private function assertConditions( + $expected, + $requestOptions = null, + $message = '', + $user = null + ) { + $queryConditions = $this->buildQuery( $requestOptions, $user ); + $this->assertEquals( self::normalizeCondition( $expected ), self::normalizeCondition( $queryConditions ), @@ -136,7 +145,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace IN ('1','2','3')", ], [ - 'namespace' => '1,2,3', + 'namespace' => '1;2;3', ], "rc conditions with multiple namespaces" ); @@ -148,7 +157,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace IN ('0','1','4','5','6','7')", ], [ - 'namespace' => '1,4,7', + 'namespace' => '1;4;7', 'associated' => 1, ], "rc conditions with multiple namespaces and associated" @@ -161,7 +170,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace NOT IN ('2','3','8','9')", ], [ - 'namespace' => '2,3,9', + 'namespace' => '2;3;9', 'associated' => 1, 'invert' => 1 ], @@ -175,7 +184,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace NOT IN ('1','2','3')", ], [ - 'namespace' => '1,2,3', + 'namespace' => '1;2;3', 'invert' => 1, ], "rc conditions with multiple namespaces inverted" @@ -284,6 +293,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testRcHidepatrolledDisabledFilter() { + $this->setMwGlobals( 'wgUseRCPatrol', false ); $user = $this->getTestUser()->getUser(); $this->assertConditions( [ # expected @@ -297,6 +307,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testRcHideunpatrolledDisabledFilter() { + $this->setMwGlobals( 'wgUseRCPatrol', false ); $user = $this->getTestUser()->getUser(); $this->assertConditions( [ # expected @@ -373,6 +384,104 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase ); } + public function testFilterUserExpLevelAll() { + $this->assertConditions( + [ + # expected + ], + [ + 'userExpLevel' => 'registered;unregistered;newcomer;learner;experienced', + ], + "rc conditions: userExpLevel=registered;unregistered;newcomer;learner;experienced" + ); + } + + public function testFilterUserExpLevelRegisteredUnregistered() { + $this->assertConditions( + [ + # expected + ], + [ + 'userExpLevel' => 'registered;unregistered', + ], + "rc conditions: userExpLevel=registered;unregistered" + ); + } + + public function testFilterUserExpLevelRegisteredUnregisteredLearner() { + $this->assertConditions( + [ + # expected + ], + [ + 'userExpLevel' => 'registered;unregistered;learner', + ], + "rc conditions: userExpLevel=registered;unregistered;learner" + ); + } + + public function testFilterUserExpLevelAllExperienceLevels() { + $this->assertConditions( + [ + # expected + 'rc_user != 0', + ], + [ + 'userExpLevel' => 'newcomer;learner;experienced', + ], + "rc conditions: userExpLevel=newcomer;learner;experienced" + ); + } + + public function testFilterUserExpLevelRegistrered() { + $this->assertConditions( + [ + # expected + 'rc_user != 0', + ], + [ + 'userExpLevel' => 'registered', + ], + "rc conditions: userExpLevel=registered" + ); + } + + public function testFilterUserExpLevelUnregistrered() { + $this->assertConditions( + [ + # expected + 'rc_user' => 0, + ], + [ + 'userExpLevel' => 'unregistered', + ], + "rc conditions: userExpLevel=unregistered" + ); + } + + public function testFilterUserExpLevelRegistreredOrLearner() { + $this->assertConditions( + [ + # expected + 'rc_user != 0', + ], + [ + 'userExpLevel' => 'registered;learner', + ], + "rc conditions: userExpLevel=registered;learner" + ); + } + + public function testFilterUserExpLevelUnregistreredOrExperienced() { + $conds = $this->buildQuery( [ 'userExpLevel' => 'unregistered;experienced' ] ); + + $this->assertRegExp( + '/\(rc_user = 0\) OR \(\(user_editcount >= 500\) AND \(user_registration <= \'[^\']+\'\)\)/', + reset( $conds ), + "rc conditions: userExpLevel=unregistered;experienced" + ); + } + public function testFilterUserExpLevel() { $now = time(); $this->setMwGlobals( [ @@ -438,18 +547,6 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase $this->fetchUsers( [ 'learner', 'experienced' ], $now ), 'Learner and more experienced' ); - - // newcomers, learner, and more experienced - // TOOD: Fix test. This needs to test that anons are excluded, - // and right now the join fails. - /* $this->assertArrayEquals( */ - /* [ */ - /* 'Newcomer1', 'Newcomer2', 'Newcomer3', */ - /* 'Learner1', 'Learner2', 'Learner3', 'Learner4', */ - /* 'Experienced1', */ - /* ], */ - /* $this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ], $now ) */ - /* ); */ } private function createUsers( $specs, $now ) { @@ -798,7 +895,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "hideliu" => true, "userExpLevel" => "newcomer", ], - "expectedConflicts" => true, + "expectedConflicts" => false, ], [ "parameters" => [