<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Code quality unit tests that are fast enough to run each time.
*
* @package core
< * @category phpunit
> * @category test
* @copyright (C) 2013 onwards Remote Learner.net Inc (http://www.remote-learner.net)
* @author Brent Boghosian (brent.boghosian@remote-learner.net)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
> namespace core;
defined('MOODLE_INTERNAL') || die();
>
> use context;
/**
> use context_helper;
* Bogus custom context class for testing
>
*/
>
class context_bogus1 extends context {
> /**
/**
> * Code quality unit tests that are fast enough to run each time.
* Returns the most relevant URL for this context.
> *
*
> * @package core
* @return moodle_url
> * @category test
*/
> * @copyright (C) 2013 onwards Remote Learner.net Inc (http://www.remote-learner.net)
public function get_url() {
> * @author Brent Boghosian (brent.boghosian@remote-learner.net)
global $ME;
> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
return $ME;
> */
}
> class customcontext_test extends \advanced_testcase {
>
/**
> /**
* Returns array of relevant context capability records.
> * Perform setup before every test. This tells Moodle's phpunit to reset the database after every test.
*
> */
* @return array
> protected function setUp(): void {
*/
> parent::setUp();
public function get_capabilities() {
> $this->resetAfterTest(true);
return array();
> }
}
>
}
> /**
> * Test case for custom context classes
/**
> */
* Bogus custom context class for testing
> public function test_customcontexts() {
*/
> global $CFG;
class context_bogus2 extends context {
> static $customcontexts = array(
/**
> 11 => 'context_bogus1',
* Returns the most relevant URL for this context.
> 12 => 'context_bogus2',
*
> 13 => 'context_bogus3'
* @return moodle_url
> );
*/
>
public function get_url() {
> // save any existing custom contexts
global $ME;
> $existingcustomcontexts = get_config(null, 'custom_context_classes');
return $ME;
>
}
> set_config('custom_context_classes', serialize($customcontexts));
> initialise_cfg();
/**
> context_helper::reset_levels();
* Returns array of relevant context capability records.
> $alllevels = context_helper::get_all_levels();
*
> $this->assertEquals($alllevels[11], 'context_bogus1');
* @return array
> $this->assertEquals($alllevels[12], 'context_bogus2');
*/
> $this->assertEquals($alllevels[13], 'context_bogus3');
public function get_capabilities() {
>
return array();
> // clean-up & restore any custom contexts
}
> set_config('custom_context_classes', ($existingcustomcontexts === false) ? null : $existingcustomcontexts);
}
> initialise_cfg();
> context_helper::reset_levels();
/**
> }
* Bogus custom context class for testing
> }
*/
>
class context_bogus3 extends context {
> * Returns context shortname.
/**
> *
* Returns the most relevant URL for this context.
> * @return string
*
> */
* @return moodle_url
> public static function get_short_name(): string {
*/
> return 'bogus1';
public function get_url() {
> }
global $ME;
>
return $ME;
> /**
< * @return moodle_url
> * @return \moodle_url
< public function get_capabilities() {
> public function get_capabilities(string $sort = self::DEFAULT_CAPABILITY_SORT) {
/**
> * Returns context shortname.
* Returns array of relevant context capability records.
> *
*
> * @return string
* @return array
> */
*/
> public static function get_short_name(): string {
public function get_capabilities() {
> return 'bogus2';
return array();
> }
}
>
}
> /**
< * @return moodle_url
> * @return \moodle_url
< public function get_capabilities() {
> public function get_capabilities(string $sort = self::DEFAULT_CAPABILITY_SORT) {
> * Returns context shortname.
/**
> *
* Perform setup before every test. This tells Moodle's phpunit to reset the database after every test.
> * @return string
*/
> */
protected function setUp(): void {
> public static function get_short_name(): string {
parent::setUp();
> return 'bogus3';
$this->resetAfterTest(true);
> }
}
>
> /**
< * @return moodle_url
> * @return \moodle_url
< public function get_capabilities() {
> public function get_capabilities(string $sort = self::DEFAULT_CAPABILITY_SORT) {
< }
< }
<
< class customcontext_testcase extends advanced_testcase {
<
< /**
< * Perform setup before every test. This tells Moodle's phpunit to reset the database after every test.
< */
< protected function setUp(): void {
< parent::setUp();
< $this->resetAfterTest(true);
< }
<
< /**
< * Test case for custom context classes
< */
< public function test_customcontexts() {
< global $CFG;
< static $customcontexts = array(
< 11 => 'context_bogus1',
< 12 => 'context_bogus2',
< 13 => 'context_bogus3'
< );
<
< // save any existing custom contexts
< $existingcustomcontexts = get_config(null, 'custom_context_classes');
<
< set_config('custom_context_classes', serialize($customcontexts));
< initialise_cfg();
< context_helper::reset_levels();
< $alllevels = context_helper::get_all_levels();
< $this->assertEquals($alllevels[11], 'context_bogus1');
< $this->assertEquals($alllevels[12], 'context_bogus2');
< $this->assertEquals($alllevels[13], 'context_bogus3');
<
< // clean-up & restore any custom contexts
< set_config('custom_context_classes', ($existingcustomcontexts === false) ? null : $existingcustomcontexts);
< initialise_cfg();
< context_helper::reset_levels();