X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fspecialpage%2FChangesListSpecialPageTest.php;h=d612b538d0917b08c58a94f51b650034d3c80617;hp=d96758892e862832033829a0d3b9063238dab40d;hb=e4277f170be4cb8aee0fe407793db47a94ec24c2;hpb=f8e202e0fbd62ac26cfa9ae2695ebc081b08226f diff --git a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php index d96758892e..d612b538d0 100644 --- a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php +++ b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php @@ -15,6 +15,13 @@ use Wikimedia\TestingAccessWrapper; * @covers ChangesListSpecialPage */ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase { + public function setUp() { + parent::setUp(); + $this->setMwGlobals( [ + 'wgStructuredChangeFiltersShowPreference' => true, + ] ); + } + protected function getPage() { $mock = $this->getMockBuilder( ChangesListSpecialPage::class ) ->setConstructorArgs( @@ -192,10 +199,15 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testRcHidemyselfFilter() { + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_WRITE_BOTH ); + $this->overrideMwServices(); + $user = $this->getTestUser()->getUser(); + $user->getActorId( wfGetDB( DB_MASTER ) ); $this->assertConditions( [ # expected - "rc_user_text != '{$user->getName()}'", + "NOT((rc_actor = '{$user->getActorId()}') OR " + . "(rc_actor = '0' AND rc_user = '{$user->getId()}'))", ], [ 'hidemyself' => 1, @@ -205,9 +217,10 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase ); $user = User::newFromName( '10.11.12.13', false ); + $id = $user->getActorId( wfGetDB( DB_MASTER ) ); $this->assertConditions( [ # expected - "rc_user_text != '10.11.12.13'", + "NOT((rc_actor = '$id') OR (rc_actor = '0' AND rc_user_text = '10.11.12.13'))", ], [ 'hidemyself' => 1, @@ -218,10 +231,15 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testRcHidebyothersFilter() { + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_WRITE_BOTH ); + $this->overrideMwServices(); + $user = $this->getTestUser()->getUser(); + $user->getActorId( wfGetDB( DB_MASTER ) ); $this->assertConditions( [ # expected - "rc_user_text = '{$user->getName()}'", + "(rc_actor = '{$user->getActorId()}') OR " + . "(rc_actor = '0' AND rc_user_text = '{$user->getName()}')", ], [ 'hidebyothers' => 1, @@ -231,9 +249,10 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase ); $user = User::newFromName( '10.11.12.13', false ); + $id = $user->getActorId( wfGetDB( DB_MASTER ) ); $this->assertConditions( [ # expected - "rc_user_text = '10.11.12.13'", + "(rc_actor = '$id') OR (rc_actor = '0' AND rc_user_text = '10.11.12.13')", ], [ 'hidebyothers' => 1, @@ -337,7 +356,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase $user = $this->getTestSysop()->getUser(); $this->assertConditions( [ # expected - "rc_patrolled = 1", + "rc_patrolled != 0", ], [ 'hideunpatrolled' => 1, @@ -421,10 +440,13 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testFilterUserExpLevelAllExperienceLevels() { + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_WRITE_BOTH ); + $this->overrideMwServices(); + $this->assertConditions( [ # expected - 'rc_user != 0', + 'COALESCE( actor_rc_user.actor_user, rc_user ) != 0', ], [ 'userExpLevel' => 'newcomer;learner;experienced', @@ -434,10 +456,13 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testFilterUserExpLevelRegistrered() { + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_WRITE_BOTH ); + $this->overrideMwServices(); + $this->assertConditions( [ # expected - 'rc_user != 0', + 'COALESCE( actor_rc_user.actor_user, rc_user ) != 0', ], [ 'userExpLevel' => 'registered', @@ -447,10 +472,13 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testFilterUserExpLevelUnregistrered() { + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_WRITE_BOTH ); + $this->overrideMwServices(); + $this->assertConditions( [ # expected - 'rc_user' => 0, + 'COALESCE( actor_rc_user.actor_user, rc_user ) = 0', ], [ 'userExpLevel' => 'unregistered', @@ -460,10 +488,13 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testFilterUserExpLevelRegistreredOrLearner() { + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_WRITE_BOTH ); + $this->overrideMwServices(); + $this->assertConditions( [ # expected - 'rc_user != 0', + 'COALESCE( actor_rc_user.actor_user, rc_user ) != 0', ], [ 'userExpLevel' => 'registered;learner', @@ -473,10 +504,14 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase } public function testFilterUserExpLevelUnregistreredOrExperienced() { + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_WRITE_BOTH ); + $this->overrideMwServices(); + $conds = $this->buildQuery( [ 'userExpLevel' => 'unregistered;experienced' ] ); $this->assertRegExp( - '/\(rc_user = 0\) OR \(\(user_editcount >= 500\) AND \(user_registration <= \'[^\']+\'\)\)/', + '/\(COALESCE\( actor_rc_user.actor_user, rc_user \) = 0\) OR ' + . '\(\(user_editcount >= 500\) AND \(user_registration <= \'[^\']+\'\)\)/', reset( $conds ), "rc conditions: userExpLevel=unregistered;experienced" ); @@ -588,8 +623,10 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase ] ); + // @todo: This is not at all safe or sane. It just blindly assumes + // nothing in $conds depends on any other tables. $result = wfGetDB( DB_MASTER )->select( - $tables, + 'user', 'user_name', array_filter( $conds ) + [ 'user_email' => 'ut' ] ); @@ -974,15 +1011,33 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase [ [ 'hideanons' => 1, 'hideliu' => 1, 'hidebots' => 1 ], true, - [ 'hideliu' => 1, 'hidebots' => 1, ], + [ 'userExpLevel' => 'unregistered', 'hidebots' => 1, ], ], - [ [ 'hideanons' => 1, 'hideliu' => 1, 'hidebots' => 0 ], true, [ 'hidebots' => 0, 'hidehumans' => 1 ], ], - + [ + [ 'hideanons' => 1 ], + true, + [ 'userExpLevel' => 'registered' ] + ], + [ + [ 'hideliu' => 1 ], + true, + [ 'userExpLevel' => 'unregistered' ] + ], + [ + [ 'hideanons' => 1, 'hidebots' => 1 ], + true, + [ 'userExpLevel' => 'registered', 'hidebots' => 1 ] + ], + [ + [ 'hideliu' => 1, 'hidebots' => 0 ], + true, + [ 'userExpLevel' => 'unregistered', 'hidebots' => 0 ] + ], [ [ 'hidemyself' => 1, 'hidebyothers' => 1 ], true,