From dd72df20f2cb048f0c76ba9ef829c9b1ae77a5fa Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Thu, 8 Feb 2024 10:24:17 +0800 Subject: [PATCH] MDL-66903 testing: Helper to load fixture files --- lib/phpunit/classes/advanced_testcase.php | 34 +++++++++++++++++++++++ lib/upgrade.txt | 1 + 2 files changed, 35 insertions(+) diff --git a/lib/phpunit/classes/advanced_testcase.php b/lib/phpunit/classes/advanced_testcase.php index 5b8262f863b..8b77826ed3d 100644 --- a/lib/phpunit/classes/advanced_testcase.php +++ b/lib/phpunit/classes/advanced_testcase.php @@ -741,4 +741,38 @@ abstract class advanced_testcase extends base_testcase { \core\task\manager::adhoc_task_complete($task); } } + + /** + * Convenience method to load a fixture from a component's fixture directory. + * + * @param string $component + * @param string $path + * @throws coding_exception + */ + protected static function load_fixture( + string $component, + string $path, + ): void { + $fullpath = sprintf( + "%s/tests/fixtures/%s", + \core_component::get_component_directory($component), + $path, + ); + if (!file_exists($fullpath)) { + throw new \coding_exception("Fixture file not found: $fullpath"); + } + + global $ADMIN; + global $CFG; + global $DB; + global $SITE; + global $USER; + global $OUTPUT; + global $PAGE; + global $SESSION; + global $COURSE; + global $SITE; + + require_once($fullpath); + } } diff --git a/lib/upgrade.txt b/lib/upgrade.txt index b56ec52268f..689faaea1b5 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -6,6 +6,7 @@ information provided here is intended especially for developers. * The `\core\dataformat::get_format_instance` method is now public, and can be used to retrieve a writer instance for a given dataformat * Added the ability for unit tests to autoload classes in the `\[component]\tests\` namespace from the `[path/to/component]/tests/classes` directory. +* Added the `advanced_testcase::load_fixture()` helper to load fixtures from a components `tests/fixtures/` folder. === 4.3.4 ===