diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/tests/phpunit/includes/queryprinters/JsonResultPrinterTest.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/tests/phpunit/includes/queryprinters/JsonResultPrinterTest.php | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/includes/queryprinters/JsonResultPrinterTest.php b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/includes/queryprinters/JsonResultPrinterTest.php new file mode 100644 index 00000000..8437760f --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/includes/queryprinters/JsonResultPrinterTest.php @@ -0,0 +1,128 @@ +<?php + +namespace SMW\Test; + +use ReflectionClass; +use SMW\JsonResultPrinter; +use SMW\Tests\Utils\Mock\CoreMockObjectRepository; +use SMW\Tests\Utils\Mock\MockObjectBuilder; + +/** + * @covers \SMW\JsonResultPrinter + * + * + * @group SMW + * @group SMWExtension + * + * @licence GNU GPL v2+ + * @since 1.9 + * + * @author mwjames + */ +class JsonResultPrinterTest extends QueryPrinterTestCase { + + protected $mockBuilder; + + protected function setUp() { + parent::setUp(); + + $this->mockBuilder = new MockObjectBuilder(); + $this->mockBuilder->registerRepository( new CoreMockObjectRepository() ); + } + + /** + * @return string|false + */ + public function getClass() { + return '\SMW\JsonResultPrinter'; + } + + /** + * @since 1.9 + * + * @return JsonResultPrinter + */ + private function newInstance( $parameters = [] ) { + return $this->setParameters( new JsonResultPrinter( 'json' ), $parameters ); + } + + /** + * @since 1.9 + */ + public function testConstructor() { + $this->assertInstanceOf( $this->getClass(), $this->newInstance() ); + } + + /** + * @since 1.9 + */ + public function testGetMimeType() { + + $this->assertEquals( + 'application/json', + $this->newInstance()->getMimeType( $this->mockBuilder->newObject( 'QueryResult' ) ), + 'Asserts that getMimeType() yields an expected result' + ); + + } + + /** + * @dataProvider filenameDataProvider + * + * @since 1.9 + */ + public function testGetFileName( $filename, $expected ) { + + $instance = $this->newInstance( [ 'searchlabel' => $filename ] ); + + $this->assertEquals( + $expected, + $instance->getFileName( $this->mockBuilder->newObject( 'QueryResult' ) ), + 'Asserts that getFileName() yields an expected result'); + } + + /** + * @return array + */ + public function filenameDataProvider() { + + $provider = []; + + $provider[] = [ 'Lala', 'Lala.json' ]; + $provider[] = [ 'Lala Lilu', 'Lala_Lilu.json' ]; + $provider[] = [ '' , 'result.json']; + + return $provider; + } + + /** + * @since 1.9 + */ + public function testGetResultText() { + + $result = [ + 'lala' => __METHOD__, + 'lula' => 999388383838 + ]; + + $expected = array_merge( $result, [ 'rows' => count( $result ) ] ); + + $instance = $this->newInstance( [ 'prettyprint' => false, 'unescape' => false ] ); + + $reflector = new ReflectionClass( '\SMW\JsonResultPrinter' ); + $getResultText = $reflector->getMethod( 'getResultText' ); + $getResultText->setAccessible( true ); + + $queryResult = $this->mockBuilder->newObject( 'QueryResult', [ + 'serializeToArray' => $result, + 'getCount' => count( $result ) + ] ); + + $results = $getResultText->invoke( $instance, $queryResult, SMW_OUTPUT_FILE ); + + $this->assertInternalType( 'string', $results ); + $this->assertEquals( json_encode( $expected ), $results ); + + } + +} |