Current File : /home/jvzmxxx/wiki/extensions/Flow/tests/phpunit/api/ApiFlowViewHeaderTest.php
<?php

namespace Flow\Tests\Api;

/**
 * @group Flow
 * @group medium
 */
class ApiFlowViewHeaderTest extends ApiTestCase {
	public function testViewEmptyHeader() {
		$data = $this->doApiRequest( array(
			'page' => "Talk:Flow_QA",
			'action' => 'flow',
			'submodule' => 'view-header',
		) );

		$result = $data[0]['flow']['view-header']['result']['header'];
		$debug = json_encode( $result );
		$this->assertArrayHasKey( 'errors', $result, $debug );
		$this->assertCount( 0, $result['errors'], $debug );

		// a revision key should exist with only an action link
		$this->assertArrayHasKey( 'revision', $result, $debug );
		$revision = $result['revision'];
		$this->assertEmpty( $revision['links'], $debug );
		$this->assertEquals( array( 'edit' ), array_keys( $revision['actions'] ), $debug );
		$this->assertArrayNotHasKey( 'content', $revision );
	}

	public function testViewHeader() {
		$data = $this->doApiRequest( array(
			'page' => 'Talk:Flow_QA',
			'token' => $this->getEditToken(),
			'action' => 'flow',
			'submodule' => 'edit-header',
			'ehprev_revision' => '',
			'ehcontent' => 'swimmingly',
			'ehformat' => 'wikitext',
		) );

		$debug = json_encode( $data );
		$this->assertEquals( 'ok', $data[0]['flow']['edit-header']['status'], $debug );
		$this->assertCount( 1, $data[0]['flow']['edit-header']['committed'], $debug );

		$data = $this->doApiRequest( array(
			'page' => "Talk:Flow_QA",
			'action' => 'flow',
			'submodule' => 'view-header',
			'vhformat' => 'html',
		) );
		$result = $data[0]['flow']['view-header']['result']['header'];
		$debug = json_encode( $result );
		$this->assertArrayHasKey( 'errors', $result, $debug );
		$this->assertCount( 0, $result['errors'], $debug );
		$this->assertArrayHasKey( 'revision', $result );

		$revision = $result['revision'];
		$this->assertArrayHasKey( 'revisionId', $revision, $debug );
		$this->assertArrayHasKey( 'content', $revision, $debug );
		$this->assertArrayHasKey( 'content', $revision['content'], $debug );
		$this->assertEquals(
			'swimmingly',
			trim( strip_tags( $revision['content']['content'] ) ),
			$debug
		);
		$this->assertArrayHasKey( 'format', $revision['content'], $debug );
		$this->assertEquals( 'html', $revision['content']['format'], $debug );
	}

	/**
	 * @todo
	 *
	public function testViewHistorical() {
	}
	 */
}