xref: /plugin/struct/_test/ConfigParserTest.php (revision af0ce8d2fb493ed201ed374daddbc04d257baa9c)
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