Merge "Inject LoadBalancer into GenderCache"
[lhc/web/wiklou.git] / tests / phpunit / includes / api / query / ApiQueryAllRevisionsTest.php
1 <?php
2
3 /**
4 * @group API
5 * @group Database
6 * @group medium
7 * @covers ApiQueryAllRevisions
8 */
9 class ApiQueryAllRevisionsTest extends ApiTestCase {
10
11 public function __construct( $name = null, array $data = [], $dataName = '' ) {
12 parent::__construct( $name, $data, $dataName );
13
14 $this->tablesUsed[] = 'revision';
15 }
16
17 /**
18 * @group medium
19 */
20 public function testContentComesWithContentModelAndFormat() {
21 $pageName = 'Help:' . __METHOD__;
22 $title = Title::newFromText( $pageName );
23 $page = WikiPage::factory( $title );
24
25 $page->doEditContent(
26 ContentHandler::makeContent( 'Some text', $page->getTitle() ),
27 'inserting content'
28 );
29 $page->doEditContent(
30 ContentHandler::makeContent( 'Some other text', $page->getTitle() ),
31 'adding revision'
32 );
33
34 $apiResult = $this->doApiRequest( [
35 'action' => 'query',
36 'list' => 'allrevisions',
37 'arvprop' => 'content',
38 'arvslots' => 'main',
39 'arvdir' => 'older',
40 ] );
41
42 $this->assertArrayHasKey( 'query', $apiResult[0] );
43 $this->assertArrayHasKey( 'allrevisions', $apiResult[0]['query'] );
44 $this->assertArrayHasKey( 0, $apiResult[0]['query']['allrevisions'] );
45 $this->assertArrayHasKey( 'title', $apiResult[0]['query']['allrevisions'][0] );
46 $this->assertSame( $pageName, $apiResult[0]['query']['allrevisions'][0]['title'] );
47 $this->assertArrayHasKey( 'revisions', $apiResult[0]['query']['allrevisions'][0] );
48 $this->assertCount( 2, $apiResult[0]['query']['allrevisions'][0]['revisions'] );
49
50 foreach ( $apiResult[0]['query']['allrevisions'] as $page ) {
51 $this->assertArrayHasKey( 'revisions', $page );
52 foreach ( $page['revisions'] as $revision ) {
53 $this->assertArrayHasKey( 'slots', $revision );
54 $this->assertArrayHasKey( 'main', $revision['slots'] );
55 $this->assertArrayHasKey( 'contentformat', $revision['slots']['main'],
56 'contentformat should be included when asking content so client knows how to interpret it'
57 );
58 $this->assertArrayHasKey( 'contentmodel', $revision['slots']['main'],
59 'contentmodel should be included when asking content so client knows how to interpret it'
60 );
61 }
62 }
63 }
64 }