1*8fed17f3SAndreas Gohr<?php 2*8fed17f3SAndreas Gohr 3*8fed17f3SAndreas Gohrnamespace dokuwiki\plugin\struct\test; 4*8fed17f3SAndreas Gohr 5*8fed17f3SAndreas Gohruse dokuwiki\plugin\struct\meta; 6*8fed17f3SAndreas Gohr 7*8fed17f3SAndreas Gohr/** 8*8fed17f3SAndreas Gohr * Tests for parsing the aggregation config for the struct plugin 9*8fed17f3SAndreas Gohr * 10*8fed17f3SAndreas Gohr * @group plugin_struct 11*8fed17f3SAndreas Gohr * @group plugins 12*8fed17f3SAndreas Gohr * 13*8fed17f3SAndreas Gohr */ 14*8fed17f3SAndreas Gohrclass ConfigParserTest extends StructTest 15*8fed17f3SAndreas Gohr{ 16*8fed17f3SAndreas Gohr 17*8fed17f3SAndreas Gohr public function test_simple() 18*8fed17f3SAndreas Gohr { 19*8fed17f3SAndreas Gohr $lines = [ 20*8fed17f3SAndreas Gohr "schema : testtable, another, foo bar", 21*8fed17f3SAndreas Gohr "cols : %pageid%, count", 22*8fed17f3SAndreas Gohr "sort : ^count", 23*8fed17f3SAndreas Gohr "sort : %pageid%, ^bam", 24*8fed17f3SAndreas Gohr "align : r,l,center,foo" 25*8fed17f3SAndreas Gohr ]; 26*8fed17f3SAndreas Gohr 27*8fed17f3SAndreas Gohr $configParser = new meta\ConfigParser($lines); 28*8fed17f3SAndreas Gohr $actual_config = $configParser->getConfig(); 29*8fed17f3SAndreas Gohr 30*8fed17f3SAndreas Gohr $expected_config = [ 31*8fed17f3SAndreas Gohr 'limit' => 0, 32*8fed17f3SAndreas Gohr 'dynfilters' => false, 33*8fed17f3SAndreas Gohr 'summarize' => false, 34*8fed17f3SAndreas Gohr 'rownumbers' => false, 35*8fed17f3SAndreas Gohr 'sepbyheaders' => false, 36*8fed17f3SAndreas Gohr 'headers' => 37*8fed17f3SAndreas Gohr [ 38*8fed17f3SAndreas Gohr 0 => NULL, 39*8fed17f3SAndreas Gohr 1 => NULL, 40*8fed17f3SAndreas Gohr ], 41*8fed17f3SAndreas Gohr 'widths' => 42*8fed17f3SAndreas Gohr [], 43*8fed17f3SAndreas Gohr 'filter' => 44*8fed17f3SAndreas Gohr [], 45*8fed17f3SAndreas Gohr 'schemas' => 46*8fed17f3SAndreas Gohr [ 47*8fed17f3SAndreas Gohr 0 => 48*8fed17f3SAndreas Gohr [ 49*8fed17f3SAndreas Gohr 0 => 'testtable', 50*8fed17f3SAndreas Gohr 1 => '', 51*8fed17f3SAndreas Gohr ], 52*8fed17f3SAndreas Gohr 1 => 53*8fed17f3SAndreas Gohr [ 54*8fed17f3SAndreas Gohr 0 => 'another', 55*8fed17f3SAndreas Gohr 1 => '', 56*8fed17f3SAndreas Gohr ], 57*8fed17f3SAndreas Gohr 2 => 58*8fed17f3SAndreas Gohr [ 59*8fed17f3SAndreas Gohr 0 => 'foo', 60*8fed17f3SAndreas Gohr 1 => 'bar', 61*8fed17f3SAndreas Gohr ], 62*8fed17f3SAndreas Gohr ], 63*8fed17f3SAndreas Gohr 'cols' => 64*8fed17f3SAndreas Gohr [ 65*8fed17f3SAndreas Gohr 0 => '%pageid%', 66*8fed17f3SAndreas Gohr 1 => 'count', 67*8fed17f3SAndreas Gohr ], 68*8fed17f3SAndreas Gohr 'sort' => 69*8fed17f3SAndreas Gohr [ 70*8fed17f3SAndreas Gohr [ 71*8fed17f3SAndreas Gohr 0 => 'count', 72*8fed17f3SAndreas Gohr 1 => false, 73*8fed17f3SAndreas Gohr ], 74*8fed17f3SAndreas Gohr [ 75*8fed17f3SAndreas Gohr 0 => '%pageid%', 76*8fed17f3SAndreas Gohr 1 => true, 77*8fed17f3SAndreas Gohr ], 78*8fed17f3SAndreas Gohr [ 79*8fed17f3SAndreas Gohr 0 => 'bam', 80*8fed17f3SAndreas Gohr 1 => false, 81*8fed17f3SAndreas Gohr ] 82*8fed17f3SAndreas Gohr ], 83*8fed17f3SAndreas Gohr 'csv' => true, 84*8fed17f3SAndreas Gohr 'target' => '', 85*8fed17f3SAndreas Gohr 'align' => ['right', 'left', 'center', null] 86*8fed17f3SAndreas Gohr ]; 87*8fed17f3SAndreas Gohr 88*8fed17f3SAndreas Gohr $this->assertEquals($expected_config, $actual_config); 89*8fed17f3SAndreas Gohr } 90*8fed17f3SAndreas Gohr 91*8fed17f3SAndreas Gohr public function test_width() 92*8fed17f3SAndreas Gohr { 93*8fed17f3SAndreas Gohr $lines = ['width: 5, 15px, 23.4em, meh, 10em']; 94*8fed17f3SAndreas Gohr 95*8fed17f3SAndreas Gohr $configParser = new meta\ConfigParser($lines); 96*8fed17f3SAndreas Gohr 97*8fed17f3SAndreas Gohr $config = $configParser->getConfig(); 98*8fed17f3SAndreas Gohr 99*8fed17f3SAndreas Gohr $this->assertEquals( 100*8fed17f3SAndreas Gohr ['5px', '15px', '23.4em', '', '10em'], 101*8fed17f3SAndreas Gohr $config['widths'] 102*8fed17f3SAndreas Gohr ); 103*8fed17f3SAndreas Gohr } 104*8fed17f3SAndreas Gohr 105*8fed17f3SAndreas Gohr /** 106*8fed17f3SAndreas Gohr * @see test_splitLine 107*8fed17f3SAndreas Gohr */ 108*8fed17f3SAndreas Gohr public function provide_splitLine() 109*8fed17f3SAndreas Gohr { 110*8fed17f3SAndreas Gohr return [ 111*8fed17f3SAndreas Gohr ['', ['', '']], 112*8fed17f3SAndreas Gohr [' ', ['', '']], 113*8fed17f3SAndreas Gohr ['foo', ['foo', '']], 114*8fed17f3SAndreas Gohr ['foo:bar', ['foo', 'bar']], 115*8fed17f3SAndreas Gohr ['foo: bar', ['foo', 'bar']], 116*8fed17f3SAndreas Gohr ['fOO: bar', ['foo', 'bar']], 117*8fed17f3SAndreas Gohr [' fOO: bar ', ['foo', 'bar']], 118*8fed17f3SAndreas Gohr ]; 119*8fed17f3SAndreas Gohr } 120*8fed17f3SAndreas Gohr 121*8fed17f3SAndreas Gohr /** 122*8fed17f3SAndreas Gohr * @dataProvider provide_splitLine 123*8fed17f3SAndreas Gohr */ 124*8fed17f3SAndreas Gohr public function test_splitLine($line, $expected) 125*8fed17f3SAndreas Gohr { 126*8fed17f3SAndreas Gohr $configParser = new meta\ConfigParser(array()); 127*8fed17f3SAndreas Gohr $actual = $this->callInaccessibleMethod($configParser, 'splitLine', [$line]); 128*8fed17f3SAndreas Gohr $this->assertEquals($expected, $actual); 129*8fed17f3SAndreas Gohr } 130*8fed17f3SAndreas Gohr} 131