Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
8.97% covered (danger)
8.97%
47 / 524
53.33% covered (warning)
53.33%
8 / 15
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_functions_acp_build_cfg_template_test
8.97% covered (danger)
8.97%
47 / 524
53.33% covered (warning)
53.33%
8 / 15
184.72
0.00% covered (danger)
0.00%
0 / 1
 build_cfg_template_text_data
0.00% covered (danger)
0.00%
0 / 50
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_cfg_template_text
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 build_cfg_template_dimension_data
0.00% covered (danger)
0.00%
0 / 52
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_cfg_template_dimension
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 build_cfg_template_number_data
0.00% covered (danger)
0.00%
0 / 50
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_cfg_template_number
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 build_cfg_template_textarea_data
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_cfg_template_textarea
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 build_cfg_template_radio_data
0.00% covered (danger)
0.00%
0 / 218
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_cfg_template_radio
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 build_cfg_template_append_data
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_cfg_template_append
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 build_cfg_template_select_data
0.00% covered (danger)
0.00%
0 / 72
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_cfg_template_select
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
 select_helper
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2/**
3*
4* This file is part of the phpBB Forum Software package.
5*
6* @copyright (c) phpBB Limited <https://www.phpbb.com>
7* @license GNU General Public License, version 2 (GPL-2.0)
8*
9* For full copyright and license information, please see
10* the docs/CREDITS.txt file.
11*
12*/
13
14require_once __DIR__ . '/../../phpBB/includes/functions_acp.php';
15
16class phpbb_functions_acp_build_cfg_template_test extends phpbb_test_case
17{
18    public static function build_cfg_template_text_data()
19    {
20        return array(
21            array(
22                array('text', 20, 255),
23                'key_name',
24                array('config_key_name'    => '1'),
25                'config_key_name',
26                array(),
27                [
28                    'tag'        => 'input',
29                    'id'        => 'key_name',
30                    'type'        => 'text',
31                    'name'        => 'config[config_key_name]',
32                    'size'        => 20,
33                    'maxlength'    => 255,
34                    'value'        => '1',
35                ],
36            ),
37            array(
38                array('password', 20, 128),
39                'key_name',
40                array('config_key_name'    => '2'),
41                'config_key_name',
42                array(),
43                [
44                    'tag'        => 'input',
45                    'id'        => 'key_name',
46                    'type'        => 'password',
47                    'name'        => 'config[config_key_name]',
48                    'size'        => 20,
49                    'maxlength'    => 128,
50                    'value'        => '********',
51                ],
52            ),
53            array(
54                array('text', 0, 255),
55                'key_name',
56                array('config_key_name'    => '3'),
57                'config_key_name',
58                array(),
59                [
60                    'tag'        => 'input',
61                    'id'        => 'key_name',
62                    'type'        => 'text',
63                    'name'        => 'config[config_key_name]',
64                    'maxlength'    => 255,
65                    'value'        => '3',
66                    'size'        => '',
67                ],
68            ),
69        );
70    }
71
72    /**
73    * @dataProvider build_cfg_template_text_data
74    */
75    public function test_build_cfg_template_text($tpl_type, $key, $new, $config_key, $vars, $expected)
76    {
77        global $user, $phpbb_dispatcher, $language;
78
79        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
80        $user = new phpbb_mock_user();
81        $language = new phpbb_mock_lang();
82        $user->lang = $language;
83
84        $this->assertEquals($expected, phpbb_build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
85    }
86
87    public static function build_cfg_template_dimension_data()
88    {
89        return array(
90            array(
91                array('dimension', 5, 15),
92                'number_key_name',
93                array('config_key_name_width' => 10, 'config_key_name_height' => 20),
94                'config_key_name',
95                array(),
96                [
97                    'tag'        => 'dimension',
98                    'width' => [
99                        'id'        => 'number_key_name',
100                        'type'        => 'number',
101                        'name'        => 'config[config_key_name_width]',
102                        'min'        => 5,
103                        'max'        => 15,
104                        'value'        => 10,
105                    ],
106                    'height' => [
107                        'type'        => 'number',
108                        'name'        => 'config[config_key_name_height]',
109                        'min'        => 5,
110                        'max'        => 15,
111                        'value'        => 20,
112                    ],
113                ],
114            ),
115            array(
116                array('dimension', 0, 15),
117                'number_key_name',
118                array('config_key_name_width' => 10, 'config_key_name_height' => 20),
119                'config_key_name',
120                array(),
121                [
122                    'tag'        => 'dimension',
123                    'width' => [
124                        'id'        => 'number_key_name',
125                        'type'        => 'number',
126                        'name'        => 'config[config_key_name_width]',
127                        'min'        => 0,
128                        'max'        => 15,
129                        'value'        => 10,
130                    ],
131                    'height' => [
132                        'type'        => 'number',
133                        'name'        => 'config[config_key_name_height]',
134                        'min'        => 0,
135                        'max'        => 15,
136                        'value'        => 20,
137                    ],
138                ],
139            ),
140        );
141    }
142
143    /**
144    * @dataProvider build_cfg_template_dimension_data
145    */
146    public function test_build_cfg_template_dimension($tpl_type, $key, $new, $config_key, $vars, $expected)
147    {
148        global $user, $phpbb_dispatcher;
149
150        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
151        $user = new phpbb_mock_user();
152        $user->lang = new phpbb_mock_lang();
153
154        $this->assertEquals($expected, phpbb_build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
155    }
156
157    public static function build_cfg_template_number_data()
158    {
159        return array(
160            array(
161                array('number', 5, 15),
162                'number_key_name',
163                array('config_key_name' => 10),
164                'config_key_name',
165                array(),
166                [
167                    'tag'        => 'input',
168                    'id'        => 'number_key_name',
169                    'type'        => 'number',
170                    'name'        => 'config[config_key_name]',
171                    'min'        => 5,
172                    'max'        => 15,
173                    'value'        => 10,
174                ],
175            ),
176            array(
177                array('number', -1, 9999),
178                'number_key_name',
179                array('config_key_name' => 10),
180                'config_key_name',
181                array(),
182                [
183                    'tag'        => 'input',
184                    'id'        => 'number_key_name',
185                    'type'        => 'number',
186                    'name'        => 'config[config_key_name]',
187                    'min'        => -1,
188                    'max'        => 9999,
189                    'value'        => 10,
190                ],
191            ),
192            array(
193                array('number', 0, 9999),
194                'number_key_name',
195                array('config_key_name' => 10),
196                'config_key_name',
197                array(),
198                [
199                    'tag'        => 'input',
200                    'id'        => 'number_key_name',
201                    'type'        => 'number',
202                    'name'        => 'config[config_key_name]',
203                    'min'        => 0,
204                    'max'        => 9999,
205                    'value'        => 10,
206                ],
207            ),
208        );
209    }
210
211    /**
212    * @dataProvider build_cfg_template_number_data
213    */
214    public function test_build_cfg_template_number($tpl_type, $key, $new, $config_key, $vars, $expected)
215    {
216        global $user, $phpbb_dispatcher;
217
218        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
219        $user = new phpbb_mock_user();
220        $user->lang = new phpbb_mock_lang();
221
222        $this->assertEquals($expected, phpbb_build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
223    }
224
225    public static function build_cfg_template_textarea_data()
226    {
227        return array(
228            array(
229                array('textarea', 5, 30),
230                'key_name',
231                array('config_key_name' => 'phpBB'),
232                'config_key_name',
233                array(),
234                [
235                    'tag'        => 'textarea',
236                    'id'        => 'key_name',
237                    'name'        => 'config[config_key_name]',
238                    'rows'        => 5,
239                    'cols'        => 30,
240                    'content'    => 'phpBB',
241                ]
242            ),
243        );
244    }
245
246    /**
247    * @dataProvider build_cfg_template_textarea_data
248    */
249    public function test_build_cfg_template_textarea($tpl_type, $key, $new, $config_key, $vars, $expected)
250    {
251        global $user, $phpbb_dispatcher;
252
253        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
254        $user = new phpbb_mock_user();
255        $user->lang = new phpbb_mock_lang();
256
257        $this->assertEquals($expected, phpbb_build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
258    }
259
260    public static function build_cfg_template_radio_data()
261    {
262        return [
263            [
264                ['radio', 'enabled_disabled'],
265                'key_name',
266                ['config_key_name'    => '0'],
267                'config_key_name',
268                [],
269                [
270                    'tag'        => 'radio',
271                    'buttons'    => [
272                        [
273                            'id'        => 'key_name',
274                            'type'        => 'radio',
275                            'value'        => 1,
276                            'name'        => 'config[config_key_name]',
277                            'label'        => 'ENABLED',
278                            'checked'    => false,
279                        ],
280                        [
281                            'type'        => 'radio',
282                            'value'        => 0,
283                            'checked'    => true,
284                            'name'        => 'config[config_key_name]',
285                            'label'        => 'DISABLED',
286                        ],
287                    ],
288                ],
289            ],
290            [
291                ['radio'],
292                'key_name',
293                ['config_key_name'    => '0'],
294                'config_key_name',
295                ['function' => 'phpbb_build_radio', 'params' => ['{CONFIG_VALUE}', '{KEY}', [1 => 'ENABLED', 0 => 'DISABLED']]],
296                [
297                    'tag'        => 'radio',
298                    'buttons'    => [
299                        [
300                            'id'        => 'key_name',
301                            'type'        => 'radio',
302                            'value'        => 1,
303                            'name'        => 'config[config_key_name]',
304                            'label'        => 'ENABLED',
305                            'checked'    => false,
306                        ],
307                        [
308                            'type'        => 'radio',
309                            'value'        => 0,
310                            'checked'    => true,
311                            'name'        => 'config[config_key_name]',
312                            'label'        => 'DISABLED',
313                        ],
314                    ],
315                ],
316            ],
317            [
318                ['radio', 'enabled_disabled'],
319                'key_name',
320                ['config_key_name'    => '1'],
321                'config_key_name',
322                [],
323                [
324                    'tag'        => 'radio',
325                    'buttons'    => [
326                        [
327                            'id'        => 'key_name',
328                            'type'        => 'radio',
329                            'value'        => 1,
330                            'name'        => 'config[config_key_name]',
331                            'label'        => 'ENABLED',
332                            'checked'    => true,
333                        ],
334                        [
335                            'type'        => 'radio',
336                            'value'        => 0,
337                            'checked'    => false,
338                            'name'        => 'config[config_key_name]',
339                            'label'        => 'DISABLED',
340                        ],
341                    ],
342                ],
343            ],
344            [
345                ['radio'],
346                'key_name',
347                ['config_key_name'    => '1'],
348                'config_key_name',
349                ['function' => 'phpbb_build_radio', 'params' => ['{CONFIG_VALUE}', '{KEY}', [1 => 'ENABLED', 0 => 'DISABLED']]],
350                [
351                    'tag'        => 'radio',
352                    'buttons'    => [
353                        [
354                            'id'        => 'key_name',
355                            'type'        => 'radio',
356                            'value'        => 1,
357                            'name'        => 'config[config_key_name]',
358                            'label'        => 'ENABLED',
359                            'checked'    => true,
360                        ],
361                        [
362                            'type'        => 'radio',
363                            'value'        => 0,
364                            'checked'    => false,
365                            'name'        => 'config[config_key_name]',
366                            'label'        => 'DISABLED',
367                        ],
368                    ],
369                ],
370            ],
371            [
372                ['radio', 'yes_no'],
373                'key_name',
374                ['config_key_name'    => '0'],
375                'config_key_name',
376                [],
377                [
378                    'tag'        => 'radio',
379                    'buttons'    => [
380                        [
381                            'id'        => 'key_name',
382                            'type'        => 'radio',
383                            'value'        => 1,
384                            'name'        => 'config[config_key_name]',
385                            'label'        => 'YES',
386                            'checked'    => false,
387                        ],
388                        [
389                            'type'        => 'radio',
390                            'value'        => 0,
391                            'checked'    => true,
392                            'name'        => 'config[config_key_name]',
393                            'label'        => 'NO',
394                        ],
395                    ],
396                ],
397            ],
398            [
399                ['radio'],
400                'key_name',
401                ['config_key_name'    => '0'],
402                'config_key_name',
403                ['function' => 'phpbb_build_radio', 'params' => ['{CONFIG_VALUE}', '{KEY}', [1 => 'YES', 0 => 'NO']]],
404                [
405                    'tag'        => 'radio',
406                    'buttons'    => [
407                        [
408                            'id'        => 'key_name',
409                            'type'        => 'radio',
410                            'value'        => 1,
411                            'name'        => 'config[config_key_name]',
412                            'label'        => 'YES',
413                            'checked'    => false,
414                        ],
415                        [
416                            'type'        => 'radio',
417                            'value'        => 0,
418                            'checked'    => true,
419                            'name'        => 'config[config_key_name]',
420                            'label'        => 'NO',
421                        ],
422                    ],
423                ],
424            ],
425            [
426                ['radio', 'yes_no'],
427                'key_name',
428                ['config_key_name'    => '1'],
429                'config_key_name',
430                [],
431                [
432                    'tag'        => 'radio',
433                    'buttons'    => [
434                        [
435                            'id'        => 'key_name',
436                            'type'        => 'radio',
437                            'value'        => 1,
438                            'name'        => 'config[config_key_name]',
439                            'label'        => 'YES',
440                            'checked'    => true,
441                        ],
442                        [
443                            'type'        => 'radio',
444                            'value'        => 0,
445                            'checked'    => false,
446                            'name'        => 'config[config_key_name]',
447                            'label'        => 'NO',
448                        ],
449                    ],
450                ],
451            ],
452            [
453                ['radio'],
454                'key_name',
455                ['config_key_name'    => '1'],
456                'config_key_name',
457                ['function' => 'phpbb_build_radio', 'params' => ['{CONFIG_VALUE}', '{KEY}', [1 => 'YES', 0 => 'NO']]],
458                [
459                    'tag'        => 'radio',
460                    'buttons'    => [
461                        [
462                            'id'        => 'key_name',
463                            'type'        => 'radio',
464                            'value'        => 1,
465                            'name'        => 'config[config_key_name]',
466                            'label'        => 'YES',
467                            'checked'    => true,
468                        ],
469                        [
470                            'type'        => 'radio',
471                            'value'        => 0,
472                            'checked'    => false,
473                            'name'        => 'config[config_key_name]',
474                            'label'        => 'NO',
475                        ],
476                    ],
477                ],
478            ],
479        ];
480    }
481
482    /**
483    * @dataProvider build_cfg_template_radio_data
484    */
485    public function test_build_cfg_template_radio($tpl_type, $key, $new, $config_key, $vars, $expected)
486    {
487        global $language, $phpbb_dispatcher;
488
489        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
490        $language = new \phpbb_mock_lang();
491
492        $this->assertEquals($expected, phpbb_build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
493    }
494
495    public static function build_cfg_template_append_data()
496    {
497        return array(
498            array(
499                array('textarea', 5, 30),
500                'key_name',
501                array('config_key_name' => 'phpBB'),
502                'config_key_name',
503                array('append' => 'Bertie is cool!'),
504                [
505                    'tag'        => 'textarea',
506                    'id'        => 'key_name',
507                    'name'        => 'config[config_key_name]',
508                    'rows'        => 5,
509                    'cols'        => 30,
510                    'content'    => 'phpBB',
511                    'append'    => 'Bertie is cool!',
512                ]
513            ),
514        );
515    }
516
517    /**
518    * @dataProvider build_cfg_template_append_data
519    */
520    public function test_build_cfg_template_append($tpl_type, $key, $new, $config_key, $vars, $expected)
521    {
522        global $user, $phpbb_dispatcher;
523
524        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
525        $user = new phpbb_mock_user();
526        $user->lang = new phpbb_mock_lang();
527
528        $this->assertEquals($expected, phpbb_build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
529    }
530
531    public static function build_cfg_template_select_data()
532    {
533        return [
534            [
535                ['select'],
536                'key_name',
537                ['config_key_name'    => '0'],
538                'config_key_name',
539                ['method' => 'select_helper'],
540                [
541                    'tag'        => 'select',
542                    'class'        => false,
543                    'id'        => 'key_name',
544                    'data'        => [],
545                    'name'        => 'config[config_key_name]',
546                    'toggleable' => false,
547                    'options'    => [
548                        [
549                            'value'        => 1,
550                            'label'        => 'First_Option',
551                            'selected'    => false,
552                        ],
553                        [
554                            'value'        => 2,
555                            'label'        => 'Second_Option',
556                            'selected'    => true,
557                        ],
558                        [
559                            'value'        => 3,
560                            'label'        => 'Third_Option',
561                            'selected'    => false,
562                        ]
563                    ],
564                    'group_only'    => false,
565                    'size'            => 1,
566                    'multiple'        => false,
567                ],
568            ],
569            [
570                ['select', 8],
571                'key_name',
572                ['config_key_name'    => '1'],
573                'config_key_name',
574                ['method' => 'select_helper'],
575                [
576                    'tag'        => 'select',
577                    'class'        => false,
578                    'id'        => 'key_name',
579                    'data'        => [],
580                    'name'        => 'config[config_key_name]',
581                    'toggleable' => false,
582                    'options'    => [
583                        [
584                            'value'        => 1,
585                            'label'        => 'First_Option',
586                            'selected'    => false,
587                        ],
588                        [
589                            'value'        => 2,
590                            'label'        => 'Second_Option',
591                            'selected'    => true,
592                        ],
593                        [
594                            'value'        => 3,
595                            'label'        => 'Third_Option',
596                            'selected'    => false,
597                        ]
598                    ],
599                    'group_only'    => false,
600                    'size'            => 8,
601                    'multiple'        => false,
602                ],
603            ],
604        ];
605    }
606
607    /**
608    * @dataProvider build_cfg_template_select_data
609    */
610    public function test_build_cfg_template_select($tpl_type, $key, $new, $config_key, $vars, $expected)
611    {
612        global $module, $user, $phpbb_dispatcher, $language;
613
614        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
615        $user = new phpbb_mock_user();
616        $language = new phpbb_mock_lang();
617        $user->lang = $language;
618        $user->module = $this;
619        $module = $user;
620
621        $this->assertEquals($expected, phpbb_build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
622    }
623
624    public function select_helper()
625    {
626        return [
627            'options' => build_select(
628                [
629                    '1'    => 'First_Option',
630                    '2'    => 'Second_Option',
631                    '3'    => 'Third_Option',
632                ],
633                '2'),
634        ];
635    }
636}