]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - tests/phpunit/includes/api/query/ApiQueryContinue2Test.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / phpunit / includes / api / query / ApiQueryContinue2Test.php
1 <?php
2 /**
3  * Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  * http://www.gnu.org/copyleft/gpl.html
19  */
20
21 /**
22  * @group API
23  * @group Database
24  * @group medium
25  * @covers ApiQuery
26  */
27 class ApiQueryContinue2Test extends ApiQueryContinueTestBase {
28         protected $exceptionFromAddDBData;
29
30         /**
31          * Create a set of pages. These must not change, otherwise the tests might give wrong results.
32          *
33 *@see MediaWikiTestCase::addDBDataOnce()
34          */
35         function addDBDataOnce() {
36                 try {
37                         $this->editPage( 'AQCT73462-A', '**AQCT73462-A**  [[AQCT73462-B]] [[AQCT73462-C]]' );
38                         $this->editPage( 'AQCT73462-B', '[[AQCT73462-A]]  **AQCT73462-B** [[AQCT73462-C]]' );
39                         $this->editPage( 'AQCT73462-C', '[[AQCT73462-A]]  [[AQCT73462-B]] **AQCT73462-C**' );
40                         $this->editPage( 'AQCT73462-A', '**AQCT73462-A**  [[AQCT73462-B]] [[AQCT73462-C]]' );
41                         $this->editPage( 'AQCT73462-B', '[[AQCT73462-A]]  **AQCT73462-B** [[AQCT73462-C]]' );
42                         $this->editPage( 'AQCT73462-C', '[[AQCT73462-A]]  [[AQCT73462-B]] **AQCT73462-C**' );
43                 } catch ( Exception $e ) {
44                         $this->exceptionFromAddDBData = $e;
45                 }
46         }
47
48         /**
49          * @medium
50          */
51         public function testA() {
52                 $this->mVerbose = false;
53                 $mk = function ( $g, $p, $gDir ) {
54                         return [
55                                 'generator' => 'allpages',
56                                 'gapprefix' => 'AQCT73462-',
57                                 'prop' => 'links',
58                                 'gaplimit' => "$g",
59                                 'pllimit' => "$p",
60                                 'gapdir' => $gDir ? "ascending" : "descending",
61                         ];
62                 };
63                 // generator + 1 prop + 1 list
64                 $data = $this->query( $mk( 99, 99, true ), 1, 'g1p', false ) +
65                         [ 'batchcomplete' => true ];
66                 $this->checkC( $data, $mk( 1, 1, true ), 6, 'g1p-11t' );
67                 $this->checkC( $data, $mk( 2, 2, true ), 3, 'g1p-22t' );
68                 $this->checkC( $data, $mk( 1, 1, false ), 6, 'g1p-11f' );
69                 $this->checkC( $data, $mk( 2, 2, false ), 3, 'g1p-22f' );
70         }
71 }