From e084865f19315d8bd92a91d88ded626714eadeec Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Mon, 6 Mar 2023 09:05:52 +0000 Subject: [PATCH] MDL-77533 customfield: fix exception thrown during handler retrieval. --- customfield/classes/handler.php | 2 +- customfield/tests/handler_test.php | 51 ++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 customfield/tests/handler_test.php diff --git a/customfield/classes/handler.php b/customfield/classes/handler.php index 650be9daedc..de75119aea0 100644 --- a/customfield/classes/handler.php +++ b/customfield/classes/handler.php @@ -117,7 +117,7 @@ abstract class handler { return $classname::create($itemid); } $a = ['component' => s($component), 'area' => s($area)]; - throw new \moodle_exception('unknownhandler', 'core_customfield', (object)$a); + throw new \moodle_exception('unknownhandler', 'core_customfield', '', $a); } /** diff --git a/customfield/tests/handler_test.php b/customfield/tests/handler_test.php new file mode 100644 index 00000000000..40d3c8e8ffc --- /dev/null +++ b/customfield/tests/handler_test.php @@ -0,0 +1,51 @@ +. + +declare(strict_types=1); + +namespace core_customfield; + +use advanced_testcase; +use core_course\customfield\course_handler; +use moodle_exception; + +/** + * Unit tests for the abstract custom fields handler + * + * @package core_customfield + * @covers \core_customfield\handler + * @copyright 2023 Paul Holden + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class handler_test extends advanced_testcase { + + /** + * Test retrieving handler for given component/area + */ + public function test_get_handler(): void { + $handler = handler::get_handler('core_course', 'course'); + $this->assertInstanceOf(course_handler::class, $handler); + } + + /** + * Test retrieving handler for invalid component/area + */ + public function test_get_handler_invalid(): void { + $this->expectException(moodle_exception::class); + $this->expectExceptionMessage('Unable to find handler for custom fields for component core_blimey and area test'); + handler::get_handler('core_blimey', 'test'); + } +}