builder = $this->makeBuilder(array()); DataTable\Manager::getInstance()->deleteAll(); } public function testRenderSuccessShouldAlwaysReturnTrueAndIgnoreMessage() { $response = $this->builder->renderSuccess('ok'); $this->assertEquals('Success:ok', $response); } public function testRenderExceptionShouldThrowTheException() { $response = $this->builder->renderException('This message should be used', new \BadMethodCallException('The other message')); $this->assertEquals('Error: This message should be used', $response); } public function testRenderScalarShouldReturnTheSameValue() { $response = $this->builder->renderScalar(true); $this->assertSame("- 1 ['0' => 1] [] [idsubtable = ]
", $response); $response = $this->builder->renderScalar(5); $this->assertSame("- 1 ['0' => 5] [] [idsubtable = ]
", $response); $response = $this->builder->renderScalar('string'); $this->assertSame("- 1 ['0' => 'string'] [] [idsubtable = ]
", $response); } public function testRenderObjectShouldReturAnError() { $response = $this->builder->renderObject(new \stdClass()); $this->assertEquals('Error: The API cannot handle this data structure.', $response); } public function testRenderResourceShouldReturAnError() { $response = $this->builder->renderResource(new \stdClass()); $this->assertEquals('Error: The API cannot handle this data structure.', $response); } public function testRenderDataTableShouldReturnResult() { $dataTable = new DataTable(); $dataTable->addRowFromSimpleArray(array('nb_visits' => 5, 'nb_random' => 10)); $response = $this->builder->renderDataTable($dataTable); $this->assertSame("- 1 ['nb_visits' => 5, 'nb_random' => 10] [] [idsubtable = ]
", $response); } public function testRenderDataTableWithObjectsShouldReturnResult() { $dataTable = new DataTable(); $dataTable->addRowFromSimpleArray(array('nb_visits' => 5, 'nb_random' => 10)); $dataTable->setMetadata('processedRows', [ new AverageTimeOnSite(), new \stdClass(), Date::factory('2016-01-01 00:00:00'), ]); $response = $this->builder->renderDataTable($dataTable); $this->assertSame("- 1 ['nb_visits' => 5, 'nb_random' => 10] [] [idsubtable = ]

Metadata

processedRows
0 => Object [Piwik\Plugins\CoreHome\Columns\Metrics\AverageTimeOnSite]1 => Object [stdClass]2 => 2016-01-01", $response); } public function testRenderArrayShouldReturnConsoleResult() { $input = array(1, 2, 5, 'string', 10); $response = $this->builder->renderArray($input); $this->assertSame("- 1 ['0' => 1] [] [idsubtable = ]
- 2 ['0' => 2] [] [idsubtable = ]
- 3 ['0' => 5] [] [idsubtable = ]
- 4 ['0' => 'string'] [] [idsubtable = ]
- 5 ['0' => 10] [] [idsubtable = ]
", $response); } public function testRenderArrayShouldConvertMultiDimensionalAssociativeArrayToJson() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Data structure returned is not convertible in the requested format'); $input = array( "firstElement" => "isFirst", "secondElement" => array( "firstElement" => "isFirst", "secondElement" => "isSecond", ), "thirdElement" => "isThird"); $actual = $this->builder->renderArray($input); $this->assertSame($input, $actual); } private function makeBuilder($request) { return new Console($request); } }