18fed17f3SAndreas Gohr<?php 28fed17f3SAndreas Gohr 38fed17f3SAndreas Gohrnamespace dokuwiki\plugin\struct\test; 48fed17f3SAndreas Gohr 58fed17f3SAndreas Gohruse dokuwiki\plugin\struct\meta; 68fed17f3SAndreas Gohr 78fed17f3SAndreas Gohr/** 88fed17f3SAndreas Gohr * Tests for parsing the aggregation config for the struct plugin 98fed17f3SAndreas Gohr * 108fed17f3SAndreas Gohr * @group plugin_struct 118fed17f3SAndreas Gohr * @group plugins 128fed17f3SAndreas Gohr * 138fed17f3SAndreas Gohr */ 148fed17f3SAndreas Gohrclass ConfigParserTest extends StructTest 158fed17f3SAndreas Gohr{ 168fed17f3SAndreas Gohr 178fed17f3SAndreas Gohr public function test_simple() 188fed17f3SAndreas Gohr { 198fed17f3SAndreas Gohr $lines = [ 208fed17f3SAndreas Gohr "schema : testtable, another, foo bar", 218fed17f3SAndreas Gohr "cols : %pageid%, count", 228fed17f3SAndreas Gohr "sort : ^count", 238fed17f3SAndreas Gohr "sort : %pageid%, ^bam", 24*af0ce8d2SAndreas Gohr "align : r,l,center,foo", 25*af0ce8d2SAndreas Gohr "class : foo, bar", 268fed17f3SAndreas Gohr ]; 278fed17f3SAndreas Gohr 288fed17f3SAndreas Gohr $configParser = new meta\ConfigParser($lines); 298fed17f3SAndreas Gohr $actual_config = $configParser->getConfig(); 308fed17f3SAndreas Gohr 318fed17f3SAndreas Gohr $expected_config = [ 328fed17f3SAndreas Gohr 'limit' => 0, 338fed17f3SAndreas Gohr 'dynfilters' => false, 348fed17f3SAndreas Gohr 'summarize' => false, 358fed17f3SAndreas Gohr 'rownumbers' => false, 368fed17f3SAndreas Gohr 'sepbyheaders' => false, 378fed17f3SAndreas Gohr 'headers' => 388fed17f3SAndreas Gohr [ 398fed17f3SAndreas Gohr 0 => NULL, 408fed17f3SAndreas Gohr 1 => NULL, 418fed17f3SAndreas Gohr ], 428fed17f3SAndreas Gohr 'widths' => 438fed17f3SAndreas Gohr [], 448fed17f3SAndreas Gohr 'filter' => 458fed17f3SAndreas Gohr [], 468fed17f3SAndreas Gohr 'schemas' => 478fed17f3SAndreas Gohr [ 488fed17f3SAndreas Gohr 0 => 498fed17f3SAndreas Gohr [ 508fed17f3SAndreas Gohr 0 => 'testtable', 518fed17f3SAndreas Gohr 1 => '', 528fed17f3SAndreas Gohr ], 538fed17f3SAndreas Gohr 1 => 548fed17f3SAndreas Gohr [ 558fed17f3SAndreas Gohr 0 => 'another', 568fed17f3SAndreas Gohr 1 => '', 578fed17f3SAndreas Gohr ], 588fed17f3SAndreas Gohr 2 => 598fed17f3SAndreas Gohr [ 608fed17f3SAndreas Gohr 0 => 'foo', 618fed17f3SAndreas Gohr 1 => 'bar', 628fed17f3SAndreas Gohr ], 638fed17f3SAndreas Gohr ], 648fed17f3SAndreas Gohr 'cols' => 658fed17f3SAndreas Gohr [ 668fed17f3SAndreas Gohr 0 => '%pageid%', 678fed17f3SAndreas Gohr 1 => 'count', 688fed17f3SAndreas Gohr ], 698fed17f3SAndreas Gohr 'sort' => 708fed17f3SAndreas Gohr [ 718fed17f3SAndreas Gohr [ 728fed17f3SAndreas Gohr 0 => 'count', 738fed17f3SAndreas Gohr 1 => false, 748fed17f3SAndreas Gohr ], 758fed17f3SAndreas Gohr [ 768fed17f3SAndreas Gohr 0 => '%pageid%', 778fed17f3SAndreas Gohr 1 => true, 788fed17f3SAndreas Gohr ], 798fed17f3SAndreas Gohr [ 808fed17f3SAndreas Gohr 0 => 'bam', 818fed17f3SAndreas Gohr 1 => false, 828fed17f3SAndreas Gohr ] 838fed17f3SAndreas Gohr ], 848fed17f3SAndreas Gohr 'csv' => true, 858fed17f3SAndreas Gohr 'target' => '', 86f6acb215SAndreas Gohr 'align' => ['right', 'left', 'center', null], 87f6acb215SAndreas Gohr 'nesting' => 0, 8800f71f17SAndreas Gohr 'index' => 0, 89*af0ce8d2SAndreas Gohr 'classes' => ['struct-custom-foo', 'struct-custom-bar'], 908fed17f3SAndreas Gohr ]; 918fed17f3SAndreas Gohr 928fed17f3SAndreas Gohr $this->assertEquals($expected_config, $actual_config); 938fed17f3SAndreas Gohr } 948fed17f3SAndreas Gohr 958fed17f3SAndreas Gohr public function test_width() 968fed17f3SAndreas Gohr { 978fed17f3SAndreas Gohr $lines = ['width: 5, 15px, 23.4em, meh, 10em']; 988fed17f3SAndreas Gohr 998fed17f3SAndreas Gohr $configParser = new meta\ConfigParser($lines); 1008fed17f3SAndreas Gohr 1018fed17f3SAndreas Gohr $config = $configParser->getConfig(); 1028fed17f3SAndreas Gohr 1038fed17f3SAndreas Gohr $this->assertEquals( 1048fed17f3SAndreas Gohr ['5px', '15px', '23.4em', '', '10em'], 1058fed17f3SAndreas Gohr $config['widths'] 1068fed17f3SAndreas Gohr ); 1078fed17f3SAndreas Gohr } 1088fed17f3SAndreas Gohr 1098fed17f3SAndreas Gohr /** 1108fed17f3SAndreas Gohr * @see test_splitLine 1118fed17f3SAndreas Gohr */ 1128fed17f3SAndreas Gohr public function provide_splitLine() 1138fed17f3SAndreas Gohr { 1148fed17f3SAndreas Gohr return [ 1158fed17f3SAndreas Gohr ['', ['', '']], 1168fed17f3SAndreas Gohr [' ', ['', '']], 1178fed17f3SAndreas Gohr ['foo', ['foo', '']], 1188fed17f3SAndreas Gohr ['foo:bar', ['foo', 'bar']], 1198fed17f3SAndreas Gohr ['foo: bar', ['foo', 'bar']], 1208fed17f3SAndreas Gohr ['fOO: bar', ['foo', 'bar']], 1218fed17f3SAndreas Gohr [' fOO: bar ', ['foo', 'bar']], 1228fed17f3SAndreas Gohr ]; 1238fed17f3SAndreas Gohr } 1248fed17f3SAndreas Gohr 1258fed17f3SAndreas Gohr /** 1268fed17f3SAndreas Gohr * @dataProvider provide_splitLine 1278fed17f3SAndreas Gohr */ 1288fed17f3SAndreas Gohr public function test_splitLine($line, $expected) 1298fed17f3SAndreas Gohr { 1308fed17f3SAndreas Gohr $configParser = new meta\ConfigParser(array()); 1318fed17f3SAndreas Gohr $actual = $this->callInaccessibleMethod($configParser, 'splitLine', [$line]); 1328fed17f3SAndreas Gohr $this->assertEquals($expected, $actual); 1338fed17f3SAndreas Gohr } 1348fed17f3SAndreas Gohr} 135