mirror of
https://github.com/moodle/moodle.git
synced 2025-08-08 02:16:41 +02:00
Merge branch 'MDL-54707_master' of git://github.com/dmonllao/moodle
This commit is contained in:
commit
74eb5bb9fe
4 changed files with 45 additions and 1 deletions
|
@ -346,7 +346,16 @@ class manager {
|
||||||
|
|
||||||
$systemcontextid = \context_system::instance()->id;
|
$systemcontextid = \context_system::instance()->id;
|
||||||
foreach ($areasbylevel[CONTEXT_SYSTEM] as $areaid => $searchclass) {
|
foreach ($areasbylevel[CONTEXT_SYSTEM] as $areaid => $searchclass) {
|
||||||
$areascontexts[$areaid][] = $systemcontextid;
|
$areascontexts[$areaid][$systemcontextid] = $systemcontextid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($areasbylevel[CONTEXT_USER])) {
|
||||||
|
if ($usercontext = \context_user::instance($USER->id, IGNORE_MISSING)) {
|
||||||
|
// Extra checking although only logged users should reach this point, guest users have a valid context id.
|
||||||
|
foreach ($areasbylevel[CONTEXT_USER] as $areaid => $searchclass) {
|
||||||
|
$areascontexts[$areaid][$usercontext->id] = $usercontext->id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
6
search/tests/fixtures/mock_search_area.php
vendored
6
search/tests/fixtures/mock_search_area.php
vendored
|
@ -29,6 +29,12 @@ defined('MOODLE_INTERNAL') || die;
|
||||||
|
|
||||||
class mock_search_area extends \core_search\area\base {
|
class mock_search_area extends \core_search\area\base {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multiple context level so we can test get_areas_user_accesses.
|
||||||
|
* @var int[]
|
||||||
|
*/
|
||||||
|
protected static $levels = [CONTEXT_SYSTEM, CONTEXT_USER];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To make things easier, base class required config stuff.
|
* To make things easier, base class required config stuff.
|
||||||
*
|
*
|
||||||
|
|
15
search/tests/fixtures/testable_core_search.php
vendored
15
search/tests/fixtures/testable_core_search.php
vendored
|
@ -29,6 +29,11 @@ require_once(__DIR__ . '/mock_search_engine.php');
|
||||||
/**
|
/**
|
||||||
* Core search class adapted to unit test.
|
* Core search class adapted to unit test.
|
||||||
*
|
*
|
||||||
|
* Note that by default all core search areas are returned when calling get_search_areas_list,
|
||||||
|
* if you want to use the mock search area you can use testable_core_search::add_search_area
|
||||||
|
* although if you want to add mock search areas on top of the core ones you should call
|
||||||
|
* testable_core_search::add_core_search_areas before calling testable_core_search::add_search_area.
|
||||||
|
*
|
||||||
* @package core_search
|
* @package core_search
|
||||||
* @copyright 2015 David Monllao {@link http://www.davidmonllao.com}
|
* @copyright 2015 David Monllao {@link http://www.davidmonllao.com}
|
||||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
|
@ -82,4 +87,14 @@ class testable_core_search extends \core_search\manager {
|
||||||
self::$enabledsearchareas[$areaid] = $searcharea;
|
self::$enabledsearchareas[$areaid] = $searcharea;
|
||||||
self::$allsearchareas[$areaid] = $searcharea;
|
self::$allsearchareas[$areaid] = $searcharea;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads all core search areas.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function add_core_search_areas() {
|
||||||
|
self::get_search_areas_list(false);
|
||||||
|
self::get_search_areas_list(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
require_once(__DIR__ . '/fixtures/testable_core_search.php');
|
require_once(__DIR__ . '/fixtures/testable_core_search.php');
|
||||||
|
require_once(__DIR__ . '/fixtures/mock_search_area.php');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for search manager.
|
* Unit tests for search manager.
|
||||||
|
@ -165,8 +166,11 @@ class search_manager_testcase extends advanced_testcase {
|
||||||
$course2 = $this->getDataGenerator()->create_course();
|
$course2 = $this->getDataGenerator()->create_course();
|
||||||
$course2ctx = context_course::instance($course2->id);
|
$course2ctx = context_course::instance($course2->id);
|
||||||
$teacher = $this->getDataGenerator()->create_user();
|
$teacher = $this->getDataGenerator()->create_user();
|
||||||
|
$teacherctx = context_user::instance($teacher->id);
|
||||||
$student = $this->getDataGenerator()->create_user();
|
$student = $this->getDataGenerator()->create_user();
|
||||||
|
$studentctx = context_user::instance($student->id);
|
||||||
$noaccess = $this->getDataGenerator()->create_user();
|
$noaccess = $this->getDataGenerator()->create_user();
|
||||||
|
$noaccessctx = context_user::instance($noaccess->id);
|
||||||
$this->getDataGenerator()->enrol_user($teacher->id, $course1->id, 'teacher');
|
$this->getDataGenerator()->enrol_user($teacher->id, $course1->id, 'teacher');
|
||||||
$this->getDataGenerator()->enrol_user($student->id, $course1->id, 'student');
|
$this->getDataGenerator()->enrol_user($student->id, $course1->id, 'student');
|
||||||
|
|
||||||
|
@ -180,17 +184,23 @@ class search_manager_testcase extends advanced_testcase {
|
||||||
$context3 = context_module::instance($forum3->cmid);
|
$context3 = context_module::instance($forum3->cmid);
|
||||||
|
|
||||||
$search = testable_core_search::instance();
|
$search = testable_core_search::instance();
|
||||||
|
$mockareaid = \core_search\manager::generate_areaid('core_mocksearch', 'mock_search_area');
|
||||||
|
$search->add_core_search_areas();
|
||||||
|
$search->add_search_area($mockareaid, new core_mocksearch\search\mock_search_area());
|
||||||
|
|
||||||
$this->setAdminUser();
|
$this->setAdminUser();
|
||||||
$this->assertTrue($search->get_areas_user_accesses());
|
$this->assertTrue($search->get_areas_user_accesses());
|
||||||
|
|
||||||
$sitectx = \context_course::instance(SITEID);
|
$sitectx = \context_course::instance(SITEID);
|
||||||
|
$systemctxid = \context_system::instance()->id;
|
||||||
|
|
||||||
// Can access the frontpage ones.
|
// Can access the frontpage ones.
|
||||||
$this->setUser($noaccess);
|
$this->setUser($noaccess);
|
||||||
$contexts = $search->get_areas_user_accesses();
|
$contexts = $search->get_areas_user_accesses();
|
||||||
$this->assertEquals(array($frontpageforumcontext->id => $frontpageforumcontext->id), $contexts[$this->forumpostareaid]);
|
$this->assertEquals(array($frontpageforumcontext->id => $frontpageforumcontext->id), $contexts[$this->forumpostareaid]);
|
||||||
$this->assertEquals(array($sitectx->id => $sitectx->id), $contexts[$this->mycoursesareaid]);
|
$this->assertEquals(array($sitectx->id => $sitectx->id), $contexts[$this->mycoursesareaid]);
|
||||||
|
$mockctxs = array($noaccessctx->id => $noaccessctx->id, $systemctxid => $systemctxid);
|
||||||
|
$this->assertEquals($mockctxs, $contexts[$mockareaid]);
|
||||||
|
|
||||||
$this->setUser($teacher);
|
$this->setUser($teacher);
|
||||||
$contexts = $search->get_areas_user_accesses();
|
$contexts = $search->get_areas_user_accesses();
|
||||||
|
@ -199,12 +209,16 @@ class search_manager_testcase extends advanced_testcase {
|
||||||
$this->assertEquals($frontpageandcourse1, $contexts[$this->forumpostareaid]);
|
$this->assertEquals($frontpageandcourse1, $contexts[$this->forumpostareaid]);
|
||||||
$this->assertEquals(array($sitectx->id => $sitectx->id, $course1ctx->id => $course1ctx->id),
|
$this->assertEquals(array($sitectx->id => $sitectx->id, $course1ctx->id => $course1ctx->id),
|
||||||
$contexts[$this->mycoursesareaid]);
|
$contexts[$this->mycoursesareaid]);
|
||||||
|
$mockctxs = array($teacherctx->id => $teacherctx->id, $systemctxid => $systemctxid);
|
||||||
|
$this->assertEquals($mockctxs, $contexts[$mockareaid]);
|
||||||
|
|
||||||
$this->setUser($student);
|
$this->setUser($student);
|
||||||
$contexts = $search->get_areas_user_accesses();
|
$contexts = $search->get_areas_user_accesses();
|
||||||
$this->assertEquals($frontpageandcourse1, $contexts[$this->forumpostareaid]);
|
$this->assertEquals($frontpageandcourse1, $contexts[$this->forumpostareaid]);
|
||||||
$this->assertEquals(array($sitectx->id => $sitectx->id, $course1ctx->id => $course1ctx->id),
|
$this->assertEquals(array($sitectx->id => $sitectx->id, $course1ctx->id => $course1ctx->id),
|
||||||
$contexts[$this->mycoursesareaid]);
|
$contexts[$this->mycoursesareaid]);
|
||||||
|
$mockctxs = array($studentctx->id => $studentctx->id, $systemctxid => $systemctxid);
|
||||||
|
$this->assertEquals($mockctxs, $contexts[$mockareaid]);
|
||||||
|
|
||||||
// Hide the activity.
|
// Hide the activity.
|
||||||
set_coursemodule_visible($forum2->cmid, 0);
|
set_coursemodule_visible($forum2->cmid, 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue