Back-end of new RecentChanges page, refactoring
[lhc/web/wiklou.git] / tests / phpunit / includes / specials / SpecialRecentchangesTest.php
index c51217c..011d8a0 100644 (file)
 <?php
+
 /**
  * Test class for SpecialRecentchanges class
  *
- * Copyright © 2011, Antoine Musso
- *
- * @author Antoine Musso
  * @group Database
  *
  * @covers SpecialRecentChanges
  */
-class SpecialRecentchangesTest extends MediaWikiTestCase {
-
+class SpecialRecentchangesTest extends AbstractChangesListSpecialPageTestCase {
        protected function setUp() {
                parent::setUp();
-               $this->setMwGlobals( 'wgRCWatchCategoryMembership', true );
-       }
-
-       /**
-        * @var SpecialRecentChanges
-        */
-       protected $rc;
-
-       /** helper to test SpecialRecentchanges::buildMainQueryConds() */
-       private function assertConditions(
-               $expected,
-               $requestOptions = null,
-               $message = '',
-               $user = null
-       ) {
-               $context = new RequestContext;
-               $context->setRequest( new FauxRequest( $requestOptions ) );
-               if ( $user ) {
-                       $context->setUser( $user );
-               }
-
-               # setup the rc object
-               $this->rc = new SpecialRecentChanges();
-               $this->rc->setContext( $context );
-               $formOptions = $this->rc->setup( null );
-
-               #  Filter out rc_timestamp conditions which depends on the test runtime
-               # This condition is not needed as of march 2, 2011 -- hashar
-               # @todo FIXME: Find a way to generate the correct rc_timestamp
-               $queryConditions = array_filter(
-                       $this->rc->buildMainQueryConds( $formOptions ),
-                       'SpecialRecentchangesTest::filterOutRcTimestampCondition'
-               );
 
-               $this->assertEquals(
-                       $expected,
-                       $queryConditions,
-                       $message
+               # setup the CLSP object
+               $this->changesListSpecialPage = TestingAccessWrapper::newFromObject(
+                       new SpecialRecentchanges
                );
        }
 
-       /** return false if condition begin with 'rc_timestamp ' */
-       private static function filterOutRcTimestampCondition( $var ) {
-               return ( false === strpos( $var, 'rc_timestamp ' ) );
-       }
-
-       public function testRcNsFilter() {
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_type != '6'",
-                               1 => "rc_namespace = '0'",
-                       ],
-                       [
-                               'namespace' => NS_MAIN,
-                       ],
-                       "rc conditions with no options (aka default setting)"
-               );
-       }
+       public function provideParseParameters() {
+               return [
+                       [ 'limit=123', [ 'limit' => '123' ] ],
 
-       public function testRcNsFilterInversion() {
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_type != '6'",
-                               1 => sprintf( "rc_namespace != '%s'", NS_MAIN ),
-                       ],
-                       [
-                               'namespace' => NS_MAIN,
-                               'invert' => 1,
-                       ],
-                       "rc conditions with namespace inverted"
-               );
-       }
+                       [ '234', [ 'limit' => '234' ] ],
 
-       /**
-        * @bug 2429
-        * @dataProvider provideNamespacesAssociations
-        */
-       public function testRcNsFilterAssociation( $ns1, $ns2 ) {
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_type != '6'",
-                               1 => sprintf( "(rc_namespace = '%s' OR rc_namespace = '%s')", $ns1, $ns2 ),
-                       ],
-                       [
-                               'namespace' => $ns1,
-                               'associated' => 1,
-                       ],
-                       "rc conditions with namespace inverted"
-               );
-       }
+                       [ 'days=3', [ 'days' => '3' ] ],
 
-       /**
-        * @bug 2429
-        * @dataProvider provideNamespacesAssociations
-        */
-       public function testRcNsFilterAssociationWithInversion( $ns1, $ns2 ) {
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_type != '6'",
-                               1 => sprintf( "(rc_namespace != '%s' AND rc_namespace != '%s')", $ns1, $ns2 ),
-                       ],
-                       [
-                               'namespace' => $ns1,
-                               'associated' => 1,
-                               'invert' => 1,
-                       ],
-                       "rc conditions with namespace inverted"
-               );
-       }
+                       [ 'namespace=5', [ 'namespace' => 5 ] ],
 
-       /**
-        * Provides associated namespaces to test recent changes
-        * namespaces association filtering.
-        */
-       public static function provideNamespacesAssociations() {
-               return [ # (NS => Associated_NS)
-                       [ NS_MAIN, NS_TALK ],
-                       [ NS_TALK, NS_MAIN ],
+                       [ 'tagfilter=foo', [ 'tagfilter' => 'foo' ] ],
                ];
        }
-
-       public function testRcHidemyselfFilter() {
-               $user = $this->getTestUser()->getUser();
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_user != '{$user->getId()}'",
-                               1 => "rc_type != '6'",
-                       ],
-                       [
-                               'hidemyself' => 1,
-                       ],
-                       "rc conditions: hidemyself=1 (logged in)",
-                       $user
-               );
-
-               $user = User::newFromName( '10.11.12.13', false );
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_user_text != '10.11.12.13'",
-                               1 => "rc_type != '6'",
-                       ],
-                       [
-                               'hidemyself' => 1,
-                       ],
-                       "rc conditions: hidemyself=1 (anon)",
-                       $user
-               );
-       }
-
-       public function testRcHidebyothersFilter() {
-               $user = $this->getTestUser()->getUser();
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_user = '{$user->getId()}'",
-                               1 => "rc_type != '6'",
-                       ],
-                       [
-                               'hidebyothers' => 1,
-                       ],
-                       "rc conditions: hidebyothers=1 (logged in)",
-                       $user
-               );
-
-               $user = User::newFromName( '10.11.12.13', false );
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_user_text = '10.11.12.13'",
-                               1 => "rc_type != '6'",
-                       ],
-                       [
-                               'hidebyothers' => 1,
-                       ],
-                       "rc conditions: hidebyothers=1 (anon)",
-                       $user
-               );
-       }
-
-       public function testRcHidemyselfHidebyothersFilter() {
-               $user = $this->getTestUser()->getUser();
-               $this->assertConditions(
-                       [ # expected
-                               'rc_bot' => 0,
-                               0 => "rc_user != '{$user->getId()}'",
-                               1 => "rc_user = '{$user->getId()}'",
-                               2 => "rc_type != '6'",
-                       ],
-                       [
-                               'hidemyself' => 1,
-                               'hidebyothers' => 1,
-                       ],
-                       "rc conditions: hidemyself=1 hidebyothers=1 (logged in)",
-                       $user
-               );
-       }
 }