. /** * Fixture for mocking callbacks used in \core_course_category * * @package core_course * @category test * @copyright 2020 Ruslan Kabalin * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace tests\core_course { /** * Class mock_hooks * * @package core_course * @category test * @copyright 2020 Ruslan Kabalin * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class mock_hooks { /** @var bool $cancoursecategorydelete */ private static $cancoursecategorydelete = true; /** @var bool $cancoursecategorydeletemove */ private static $cancoursecategorydeletemove = true; /** @var string $getcoursecategorycontents */ private static $getcoursecategorycontents = ''; /** @var array $callingarguments */ private static $callingarguments = []; /** * Set calling arguments. * * This is supposed to be used in the callbacks to store arguments passed to callback. * * @param array $callingarguments */ public static function set_calling_arguments($callingarguments) { self::$callingarguments = $callingarguments; } /** * Get calling arguments. * * This is supposed to be used in the test to verify arguments passed to callback. * This method also reset stored calling arguments. * * @return array $callingarguments */ public static function get_calling_arguments() { $callingarguments = self::$callingarguments; self::$callingarguments = []; return $callingarguments; } /** * Get can_course_category_delete callback return. * * @return bool */ public static function get_can_course_category_delete_return() : bool { return self::$cancoursecategorydelete; } /** * Sets can_course_category_delete callback return. * * @param bool $return */ public static function set_can_course_category_delete_return(bool $return) { self::$cancoursecategorydelete = $return; } /** * Get can_course_category_delete_move callback return. * * @return bool */ public static function get_can_course_category_delete_move_return() : bool { return self::$cancoursecategorydeletemove; } /** * Sets can_course_category_delete_move callback return. * * @param bool $return */ public static function set_can_course_category_delete_move_return(bool $return) { self::$cancoursecategorydeletemove = $return; } /** * Get get_course_category_contents callback return. * * @return string */ public static function get_get_course_category_contents_return() : string { return self::$getcoursecategorycontents; } /** * Sets get_course_category_contents callback return. * * @param string $return */ public static function set_get_course_category_contents_return(string $return) { self::$getcoursecategorycontents = $return; } } } namespace { /** * Test pre_course_category_delete callback. * * @param object $category */ function tool_unittest_pre_course_category_delete(object $category) { \tests\core_course\mock_hooks::set_calling_arguments(func_get_args()); } /** * Test pre_course_category_delete_move callback. * * @param core_course_category $category * @param core_course_category $newcategory */ function tool_unittest_pre_course_category_delete_move(core_course_category $category, core_course_category $newcategory) { \tests\core_course\mock_hooks::set_calling_arguments(func_get_args()); } /** * Test can_course_category_delete callback. * * @param core_course_category $category * @return bool */ function tool_unittest_can_course_category_delete(core_course_category $category) { \tests\core_course\mock_hooks::set_calling_arguments(func_get_args()); return \tests\core_course\mock_hooks::get_can_course_category_delete_return(); } /** * Test can_course_category_delete_move callback. * * @param core_course_category $category * @param core_course_category $newcategory * @return bool */ function tool_unittest_can_course_category_delete_move(core_course_category $category, core_course_category $newcategory) { \tests\core_course\mock_hooks::set_calling_arguments(func_get_args()); return \tests\core_course\mock_hooks::get_can_course_category_delete_move_return(); } /** * Test get_course_category_contents callback. * * @param core_course_category $category * @return string */ function tool_unittest_get_course_category_contents(core_course_category $category) { \tests\core_course\mock_hooks::set_calling_arguments(func_get_args()); return \tests\core_course\mock_hooks::get_get_course_category_contents_return(); } }