diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/MediaWiki/Api/QueryTest.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/MediaWiki/Api/QueryTest.php | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/MediaWiki/Api/QueryTest.php b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/MediaWiki/Api/QueryTest.php new file mode 100644 index 00000000..bdbdb17c --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/MediaWiki/Api/QueryTest.php @@ -0,0 +1,137 @@ +<?php + +namespace SMW\Tests\MediaWiki\Api; + +use ReflectionClass; +use SMW\ApplicationFactory; +use SMW\Tests\Utils\MwApiFactory; + +/** + * @covers \SMW\MediaWiki\Api\Query + * @group semantic-mediawiki + * + * @license GNU GPL v2+ + * @since 1.9 + * + * @author mwjames + */ +class QueryTest extends \PHPUnit_Framework_TestCase { + + private $apiFactory; + private $applicationFactory; + + protected function setUp() { + parent::setUp(); + + $this->apiFactory = new MwApiFactory(); + $this->applicationFactory = ApplicationFactory::getInstance(); + } + + protected function tearDown() { + ApplicationFactory::clear(); + + parent::tearDown(); + } + + public function testCanConstruct() { + + $instance = $this->getMockBuilder( '\SMW\MediaWiki\Api\Query' ) + ->disableOriginalConstructor() + ->getMock(); + + $this->assertInstanceOf( + '\SMW\MediaWiki\Api\Query', + $instance + ); + } + + public function testQueryAndQueryResult() { + + $instance = $this->getMockBuilder( '\SMW\MediaWiki\Api\Query' ) + ->disableOriginalConstructor() + ->getMock(); + + $reflector = new ReflectionClass( '\SMW\MediaWiki\Api\Query' ); + $getQuery = $reflector->getMethod( 'getQuery' ); + $getQuery->setAccessible( true ); + $query = $getQuery->invoke( $instance, '[[Modification date::+]]', [], [] ); + + $this->assertInstanceOf( + '\SMWQuery', + $query + ); + + $getQueryResult = $reflector->getMethod( 'getQueryResult' ); + $getQueryResult->setAccessible( true ); + + $this->assertInstanceOf( + '\SMWQueryResult', + $getQueryResult->invoke( $instance, $query ) + ); + } + + public function testAddQueryResultOnMockStore() { + + // Minimalistic test case to verify executability + // For a full coverage, use Api\QueryResultFormatterTest + $test = [ + 'results' => [ + 'Foo' => [ + 'printouts' => [ 'lula' => [ 'lila' ] ] + ] + ], + 'printrequests' => [ 'Bar' ], + 'meta' => [ 'count' => 5, 'offset' => 5 ] + ]; + + $queryResult = $this->getMockBuilder( '\SMWQueryResult' ) + ->disableOriginalConstructor() + ->getMock(); + + $queryResult->expects( $this->atLeastOnce() ) + ->method( 'toArray' ) + ->will( $this->returnValue( $test ) ); + + $queryResult->expects( $this->atLeastOnce() ) + ->method( 'getErrors' ) + ->will( $this->returnValue( [] ) ); + + $queryResult->expects( $this->atLeastOnce() ) + ->method( 'hasFurtherResults' ) + ->will( $this->returnValue( true ) ); + + $apiResult = $this->apiFactory->newApiResult( [] ); + + $reflector = new ReflectionClass( '\SMW\MediaWiki\Api\Query' ); + $method = $reflector->getMethod( 'addQueryResult' ); + $method->setAccessible( true ); + + $instance = $this->getMockBuilder( '\SMW\MediaWiki\Api\Query' ) + ->disableOriginalConstructor() + ->getMock(); + + $instance->expects( $this->atLeastOnce() ) + ->method( 'getResult' ) + ->will( $this->returnValue( $apiResult ) ); + + $method->invoke( $instance, $queryResult ); + + // MW 1.25 + $result = method_exists( $apiResult, 'getResultData' ) ? $apiResult->getResultData() : $instance->getData(); + + // This came with 1.25, no idea what this suppose to be + unset( $result['warnings'] ); + unset( $result['_type'] ); + + $this->assertInternalType( + 'array', + $result + ); + + //$this->assertEquals( + // array( 'query' => $test, 'query-continue-offset' => 10 ), + // $result + //); + } + +} |