forena-8.x-1.x-dev/tests/src/Unit/Renderer/FrxCrosstabTest.php
tests/src/Unit/Renderer/FrxCrosstabTest.php
<?php /** * Created by PhpStorm. * User: metzlerd * Date: 3/21/2016 * Time: 9:25 AM */ namespace Drupal\Tests\forena\Unit\Renderer; use Drupal\forena\Report; use Drupal\Tests\forena\Unit\FrxTestCase; /** * @group Forena * @require module forena * @coversDefaultClass \Drupal\forena\FrxPlugin\Renderer\FrxXML */ class FrxCrosstabTest extends FrxRendererTestCase { // Test report. private $doc = '<?xml version="1.0"?> <!DOCTYPE root [ <!ENTITY nbsp " "> ]> <html xmlns:frx="urn:FrxReports"> <head> <title>Report Title</title> <frx:category>Category</frx:category> <frx:fields> </frx:fields> </head> <body> <table frx:renderer="FrxCrosstab" frx:group="{state}" frx:dim="{gender}"> <thead> <tr><th>State</th><td>users</td></tr> </thead> <tbody> <tr><th>{state}</th><td>{users}</td></tr> </tbody> </table> </body> </html>'; /** * @param array $array * @return array * Helper function */ public function arrayData(array $array) { $new_array = []; foreach ($array as $r => $row) { $new_row = []; foreach ($row as $key => $value) { $new_row[$key] = $value['data']; } $new_array[] = $new_row; } return $new_array; } /** * Test Crosstab Renderer */ public function testFrxCrosstab() { // Generate the crosstab $data = $this->dataManager()->data('test/crosstab_data'); $this->pushData($data); $elements = $this->render('\Drupal\forena\FrxPlugin\Renderer\FrxCrosstab', $this->doc, 'table'); $this->popData(); // Assertions $this->assertGreaterThan(0, count($elements), $elements); $element = $elements[0]; $this->assertEquals('table', $element['#type']); $rows = $element['#rows']; $this->assertEquals(2, count($rows), "Correct row grouping count returned"); $data_rows = $this->arrayData($rows); $AL = $data_rows[0]; $CA = $data_rows[1]; $header_data[] = $element['#header']; $headers = $this->arrayData($header_data); $h = $headers[0]; $this->assertEquals(4, count($h)); $this->assertEquals(4, count($AL), "Correct Number of columns AL"); $this->assertEquals(4, count($CA), "Correct number of columns CA"); $this->assertEquals('State', $h[0]); $this->assertEquals('Male', $h[1]); $this->assertEquals('Female', $h[2]); $this->assertEquals('Unknown', $h[3]); } }