summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/includes/queryprinters/JsonResultPrinterTest.php
diff options
context:
space:
mode:
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.php128
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 );
+
+ }
+
+}