X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fspecials%2FSpecialRecentchangesTest.php;h=c11e6a3927967f6e11868cdacf823631154c5f0e;hb=afaab18b0863d1aceeb5337b5ee97c38769cecfa;hp=c51217c5b91ba76834e6fc9df8c9b058a293e9bf;hpb=81ea14a7cb4d7c66f9565598986ba4f19d09a622;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php index c51217c5b9..c11e6a3927 100644 --- a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php +++ b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php @@ -48,12 +48,24 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { ); $this->assertEquals( - $expected, - $queryConditions, + self::normalizeCondition( $expected ), + self::normalizeCondition( $queryConditions ), $message ); } + private static function normalizeCondition( $conds ) { + $normalized = array_map( + function ( $k, $v ) { + return is_numeric( $k ) ? $v : "$k = $v"; + }, + array_keys( $conds ), + $conds + ); + sort( $normalized ); + return $normalized; + } + /** return false if condition begin with 'rc_timestamp ' */ private static function filterOutRcTimestampCondition( $var ) { return ( false === strpos( $var, 'rc_timestamp ' ) ); @@ -63,8 +75,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_type != '6'", - 1 => "rc_namespace = '0'", + "rc_type != '6'", + "rc_namespace = '0'", ], [ 'namespace' => NS_MAIN, @@ -77,8 +89,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_type != '6'", - 1 => sprintf( "rc_namespace != '%s'", NS_MAIN ), + "rc_type != '6'", + "rc_namespace != '0'", ], [ 'namespace' => NS_MAIN, @@ -96,8 +108,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_type != '6'", - 1 => sprintf( "(rc_namespace = '%s' OR rc_namespace = '%s')", $ns1, $ns2 ), + "rc_type != '6'", + "(rc_namespace = '$ns1' OR rc_namespace = '$ns2')", ], [ 'namespace' => $ns1, @@ -115,8 +127,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_type != '6'", - 1 => sprintf( "(rc_namespace != '%s' AND rc_namespace != '%s')", $ns1, $ns2 ), + "rc_type != '6'", + "(rc_namespace != '$ns1' AND rc_namespace != '$ns2')", ], [ 'namespace' => $ns1, @@ -143,8 +155,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user != '{$user->getId()}'", - 1 => "rc_type != '6'", + "rc_user != '{$user->getId()}'", + "rc_type != '6'", ], [ 'hidemyself' => 1, @@ -157,8 +169,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user_text != '10.11.12.13'", - 1 => "rc_type != '6'", + "rc_user_text != '10.11.12.13'", + "rc_type != '6'", ], [ 'hidemyself' => 1, @@ -173,8 +185,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user = '{$user->getId()}'", - 1 => "rc_type != '6'", + "rc_user = '{$user->getId()}'", + "rc_type != '6'", ], [ 'hidebyothers' => 1, @@ -187,8 +199,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user_text = '10.11.12.13'", - 1 => "rc_type != '6'", + "rc_user_text = '10.11.12.13'", + "rc_type != '6'", ], [ 'hidebyothers' => 1, @@ -203,9 +215,9 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user != '{$user->getId()}'", - 1 => "rc_user = '{$user->getId()}'", - 2 => "rc_type != '6'", + "rc_user != '{$user->getId()}'", + "rc_user = '{$user->getId()}'", + "rc_type != '6'", ], [ 'hidemyself' => 1, @@ -215,4 +227,170 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $user ); } + + public function testRcHidepageedits() { + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_type != '6'", + "rc_type != '0'", + ], + [ + 'hidepageedits' => 1, + ], + "rc conditions: hidepageedits=1" + ); + } + + public function testRcHidenewpages() { + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_type != '6'", + "rc_type != '1'", + ], + [ + 'hidenewpages' => 1, + ], + "rc conditions: hidenewpages=1" + ); + } + + public function testRcHidelog() { + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_type != '6'", + "rc_type != '3'", + ], + [ + 'hidelog' => 1, + ], + "rc conditions: hidelog=1" + ); + } + + public function testRcHidehumans() { + $this->assertConditions( + [ # expected + 'rc_bot' => 1, + "rc_type != '6'", + ], + [ + 'hidebots' => 0, + 'hidehumans' => 1, + ], + "rc conditions: hidebots=0 hidehumans=1" + ); + } + + public function testRcHidepatrolledDisabledFilter() { + $user = $this->getTestUser()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_type != '6'", + ], + [ + 'hidepatrolled' => 1, + ], + "rc conditions: hidepatrolled=1 (user not allowed)", + $user + ); + } + + public function testRcHideunpatrolledDisabledFilter() { + $user = $this->getTestUser()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_type != '6'", + ], + [ + 'hideunpatrolled' => 1, + ], + "rc conditions: hideunpatrolled=1 (user not allowed)", + $user + ); + } + public function testRcHidepatrolledFilter() { + $user = $this->getTestSysop()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_patrolled = 0", + "rc_type != '6'", + ], + [ + 'hidepatrolled' => 1, + ], + "rc conditions: hidepatrolled=1", + $user + ); + } + + public function testRcHideunpatrolledFilter() { + $user = $this->getTestSysop()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_patrolled = 1", + "rc_type != '6'", + ], + [ + 'hideunpatrolled' => 1, + ], + "rc conditions: hideunpatrolled=1", + $user + ); + } + + public function testRcHideminorFilter() { + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_minor = 0", + "rc_type != '6'", + ], + [ + 'hideminor' => 1, + ], + "rc conditions: hideminor=1" + ); + } + + public function testRcHidemajorFilter() { + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_minor = 1", + "rc_type != '6'", + ], + [ + 'hidemajor' => 1, + ], + "rc conditions: hidemajor=1" + ); + } + + // This is probably going to change when we do auto-fix of + // filters combinations that don't make sense but for now + // it's the behavior therefore it's the test. + public function testRcHidepatrolledHideunpatrolledFilter() { + $user = $this->getTestSysop()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_patrolled = 0", + "rc_patrolled = 1", + "rc_type != '6'", + ], + [ + 'hidepatrolled' => 1, + 'hideunpatrolled' => 1, + ], + "rc conditions: hidepatrolled=1 hideunpatrolled=1", + $user + ); + } }