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", 248fed17f3SAndreas Gohr "align : r,l,center,foo" 258fed17f3SAndreas Gohr ]; 268fed17f3SAndreas Gohr 278fed17f3SAndreas Gohr $configParser = new meta\ConfigParser($lines); 288fed17f3SAndreas Gohr $actual_config = $configParser->getConfig(); 298fed17f3SAndreas Gohr 308fed17f3SAndreas Gohr $expected_config = [ 318fed17f3SAndreas Gohr 'limit' => 0, 328fed17f3SAndreas Gohr 'dynfilters' => false, 338fed17f3SAndreas Gohr 'summarize' => false, 348fed17f3SAndreas Gohr 'rownumbers' => false, 358fed17f3SAndreas Gohr 'sepbyheaders' => false, 368fed17f3SAndreas Gohr 'headers' => 378fed17f3SAndreas Gohr [ 388fed17f3SAndreas Gohr 0 => NULL, 398fed17f3SAndreas Gohr 1 => NULL, 408fed17f3SAndreas Gohr ], 418fed17f3SAndreas Gohr 'widths' => 428fed17f3SAndreas Gohr [], 438fed17f3SAndreas Gohr 'filter' => 448fed17f3SAndreas Gohr [], 458fed17f3SAndreas Gohr 'schemas' => 468fed17f3SAndreas Gohr [ 478fed17f3SAndreas Gohr 0 => 488fed17f3SAndreas Gohr [ 498fed17f3SAndreas Gohr 0 => 'testtable', 508fed17f3SAndreas Gohr 1 => '', 518fed17f3SAndreas Gohr ], 528fed17f3SAndreas Gohr 1 => 538fed17f3SAndreas Gohr [ 548fed17f3SAndreas Gohr 0 => 'another', 558fed17f3SAndreas Gohr 1 => '', 568fed17f3SAndreas Gohr ], 578fed17f3SAndreas Gohr 2 => 588fed17f3SAndreas Gohr [ 598fed17f3SAndreas Gohr 0 => 'foo', 608fed17f3SAndreas Gohr 1 => 'bar', 618fed17f3SAndreas Gohr ], 628fed17f3SAndreas Gohr ], 638fed17f3SAndreas Gohr 'cols' => 648fed17f3SAndreas Gohr [ 658fed17f3SAndreas Gohr 0 => '%pageid%', 668fed17f3SAndreas Gohr 1 => 'count', 678fed17f3SAndreas Gohr ], 688fed17f3SAndreas Gohr 'sort' => 698fed17f3SAndreas Gohr [ 708fed17f3SAndreas Gohr [ 718fed17f3SAndreas Gohr 0 => 'count', 728fed17f3SAndreas Gohr 1 => false, 738fed17f3SAndreas Gohr ], 748fed17f3SAndreas Gohr [ 758fed17f3SAndreas Gohr 0 => '%pageid%', 768fed17f3SAndreas Gohr 1 => true, 778fed17f3SAndreas Gohr ], 788fed17f3SAndreas Gohr [ 798fed17f3SAndreas Gohr 0 => 'bam', 808fed17f3SAndreas Gohr 1 => false, 818fed17f3SAndreas Gohr ] 828fed17f3SAndreas Gohr ], 838fed17f3SAndreas Gohr 'csv' => true, 848fed17f3SAndreas Gohr 'target' => '', 85*f6acb215SAndreas Gohr 'align' => ['right', 'left', 'center', null], 86*f6acb215SAndreas Gohr 'nesting' => 0, 878fed17f3SAndreas Gohr ]; 888fed17f3SAndreas Gohr 898fed17f3SAndreas Gohr $this->assertEquals($expected_config, $actual_config); 908fed17f3SAndreas Gohr } 918fed17f3SAndreas Gohr 928fed17f3SAndreas Gohr public function test_width() 938fed17f3SAndreas Gohr { 948fed17f3SAndreas Gohr $lines = ['width: 5, 15px, 23.4em, meh, 10em']; 958fed17f3SAndreas Gohr 968fed17f3SAndreas Gohr $configParser = new meta\ConfigParser($lines); 978fed17f3SAndreas Gohr 988fed17f3SAndreas Gohr $config = $configParser->getConfig(); 998fed17f3SAndreas Gohr 1008fed17f3SAndreas Gohr $this->assertEquals( 1018fed17f3SAndreas Gohr ['5px', '15px', '23.4em', '', '10em'], 1028fed17f3SAndreas Gohr $config['widths'] 1038fed17f3SAndreas Gohr ); 1048fed17f3SAndreas Gohr } 1058fed17f3SAndreas Gohr 1068fed17f3SAndreas Gohr /** 1078fed17f3SAndreas Gohr * @see test_splitLine 1088fed17f3SAndreas Gohr */ 1098fed17f3SAndreas Gohr public function provide_splitLine() 1108fed17f3SAndreas Gohr { 1118fed17f3SAndreas Gohr return [ 1128fed17f3SAndreas Gohr ['', ['', '']], 1138fed17f3SAndreas Gohr [' ', ['', '']], 1148fed17f3SAndreas Gohr ['foo', ['foo', '']], 1158fed17f3SAndreas Gohr ['foo:bar', ['foo', 'bar']], 1168fed17f3SAndreas Gohr ['foo: bar', ['foo', 'bar']], 1178fed17f3SAndreas Gohr ['fOO: bar', ['foo', 'bar']], 1188fed17f3SAndreas Gohr [' fOO: bar ', ['foo', 'bar']], 1198fed17f3SAndreas Gohr ]; 1208fed17f3SAndreas Gohr } 1218fed17f3SAndreas Gohr 1228fed17f3SAndreas Gohr /** 1238fed17f3SAndreas Gohr * @dataProvider provide_splitLine 1248fed17f3SAndreas Gohr */ 1258fed17f3SAndreas Gohr public function test_splitLine($line, $expected) 1268fed17f3SAndreas Gohr { 1278fed17f3SAndreas Gohr $configParser = new meta\ConfigParser(array()); 1288fed17f3SAndreas Gohr $actual = $this->callInaccessibleMethod($configParser, 'splitLine', [$line]); 1298fed17f3SAndreas Gohr $this->assertEquals($expected, $actual); 1308fed17f3SAndreas Gohr } 1318fed17f3SAndreas Gohr} 132