From c65980879a990e6d02a8ab262b014e670f314477 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 24 May 2021 18:04:18 +0200 Subject: Add function to generate selection boxes. --- giglogadmin.php | 1 + includes/view-helpers/select_field.php | 26 +++++++++++++++++ tests/SelectFieldTest.php | 53 ++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 includes/view-helpers/select_field.php create mode 100644 tests/SelectFieldTest.php diff --git a/giglogadmin.php b/giglogadmin.php index c8ae9b0..c35c470 100644 --- a/giglogadmin.php +++ b/giglogadmin.php @@ -33,6 +33,7 @@ if ( !class_exists( 'GiglogAdmin_Plugin' ) ) { require_once __DIR__ . '/includes/admin/helpfiles/instrunctions.php'; require_once __DIR__ . '/includes/admin/helpfiles/instr_reviewers.php'; require_once __DIR__ . '/includes/admin/helpfiles/instr_photog.php'; + require_once __DIR__ . '/includes/view-helpers/select_field.php'; class GiglogAdmin_Plugin { diff --git a/includes/view-helpers/select_field.php b/includes/view-helpers/select_field.php new file mode 100644 index 0000000..7cff3ef --- /dev/null +++ b/includes/view-helpers/select_field.php @@ -0,0 +1,26 @@ + +// SPDX-FileCopyrightText: 2021 Harald Eilertsen +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +namespace EternalTerror\ViewHelpers; + +/** + * Return HTML code for a selction box with the given options and preselected value. + * + * @param string $name The name attribute for the selection box + * @param array $opts The options as arrays of [value, label] pairs + * @param mixed|int $selected The value of the preselected option, or null if no + * option is preselected. + * @return string + */ +function select_field(string $name, ?array $opts = [], $selected = null) : string +{ + $body = ''; + foreach ($opts as $opt) { + $sel = selected($selected, $opt[0], false); + $body .= ""; + } + return ""; +} diff --git a/tests/SelectFieldTest.php b/tests/SelectFieldTest.php new file mode 100644 index 0000000..1c1a8c2 --- /dev/null +++ b/tests/SelectFieldTest.php @@ -0,0 +1,53 @@ + +// SPDX-FileCopyrightText: 2021 Harald Eilertsen +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +declare(strict_types=1); + +use \EternalTerror\ViewHelpers; + +final class SelectFieldTest extends WP_UnitTestCase +{ + public function testEmptySelectField() + { + $res = ViewHelpers\select_field("fooselect"); + $this->assertStringStartsWith('', $res); + } + + public function testSelectFieldWithOneOption() + { + $res = ViewHelpers\select_field("fooselect", [[42, 'An option']]); + $this->assertStringStartsWith('', $res); + $this->assertStringContainsString('', $res); + } + + public function testSelectFieldWithMultipleOption() + { + $opts = [[42, 'An option'], [666, 'Another option'], ["foo", 'A foo option']]; + + $res = ViewHelpers\select_field("fooselect", $opts); + + $this->assertStringStartsWith('', $res); + $this->assertStringContainsString('', $res); + $this->assertStringContainsString('', $res); + $this->assertStringContainsString('', $res); + } + + public function testSelectFieldWithSelectedOption() + { + $opts = [[42, 'An option'], [666, 'Another option'], ["foo", 'A foo option']]; + + $res = ViewHelpers\select_field("fooselect", $opts, 666); + + $this->assertStringStartsWith('', $res); + $this->assertStringContainsString('', $res); + $this->assertStringContainsString('', $res); + $this->assertStringContainsString('', $res); + } +} -- cgit v1.2.3