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