From a1ab58275465d8294b8abc766dbffc3339f16405 Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Mon, 14 Nov 2016 12:47:41 -0500 Subject: [PATCH] Special:RC tests: ignore order when asserting conditions Normalize condition object to ignore order and ignore the following equivalent formats: $conds['column'] = 'value'; $conds[] = "column = 'value'"; This makes the tests more resilient to minor refactoring that doesn't affect functionality. Change-Id: I440f230c81182694a952de801cb37b9ddbad5599 --- .../specials/SpecialRecentchangesTest.php | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php index c51217c5b9..6fb0d23589 100644 --- a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php +++ b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php @@ -48,12 +48,22 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { ); $this->assertEquals( - $expected, - $queryConditions, + self::normalizeCondition( $expected ), + self::normalizeCondition( $queryConditions ), $message ); } + private static function normalizeCondition( $conds ) { + return array_map( + function ( $k, $v ) { + return is_numeric( $k ) ? $v : "$k = $v"; + }, + array_keys( $conds ), + $conds + ); + } + /** return false if condition begin with 'rc_timestamp ' */ private static function filterOutRcTimestampCondition( $var ) { return ( false === strpos( $var, 'rc_timestamp ' ) ); @@ -63,8 +73,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 +87,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 +106,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 +125,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, -- 2.20.1