Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.
<?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/>.

< /** < * External block functions unit tests < * < * @package block_recentlyaccesseditems < * @category external < * @copyright 2018 Victor Deniz <victor@moodle.com> < * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later < * @since Moodle 3.6 < */
> namespace block_recentlyaccesseditems; > > use externallib_advanced_testcase;
defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->dirroot . '/webservice/tests/helpers.php'); /** * Test Recently accessed items block external functions * * @package block_recentlyaccesseditems * @category external * @copyright 2018 Victor Deniz <victor@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @since Moodle 3.6 */
< class block_recentlyaccesseditems_externallib_testcase extends externallib_advanced_testcase {
> class externallib_test extends externallib_advanced_testcase {
/** * Test the get_recent_items function. */ public function test_get_recent_items() { $this->resetAfterTest(); $generator = $this->getDataGenerator(); // Add courses. $courses = array(); for ($i = 1; $i < 4; $i++) { $courses[] = $generator->create_course(); }; // Add users. $student = $generator->create_user(); $teacher = $generator->create_user(); // Enrol users and add items to courses. foreach ($courses as $course) { $generator->enrol_user($student->id, $course->id, 'student'); $forum[] = $this->getDataGenerator()->create_module('forum', array('course' => $course)); $glossary[] = $this->getDataGenerator()->create_module('glossary', array('course' => $course)); $chat[] = $this->getDataGenerator()->create_module('chat', array('course' => $course)); } $generator->enrol_user($teacher->id, $courses[0]->id, 'teacher'); $this->setUser($student); // No recent items. $result = \block_recentlyaccesseditems\external::get_recent_items(); $this->assertCount(0, $result); // Student access all forums. foreach ($forum as $module) {
< $event = \mod_forum\event\course_module_viewed::create(array('context' => context_module::instance($module->cmid),
> $event = \mod_forum\event\course_module_viewed::create(array('context' => \context_module::instance($module->cmid),
'objectid' => $module->id)); $event->trigger(); $this->waitForSecond(); } // Test that only access to forums are returned. $result = \block_recentlyaccesseditems\external::get_recent_items(); $this->assertCount(count($forum), $result); // Student access all assignments. foreach ($chat as $module) {
< $event = \mod_chat\event\course_module_viewed::create(array('context' => context_module::instance($module->cmid),
> $event = \mod_chat\event\course_module_viewed::create(array('context' => \context_module::instance($module->cmid),
'objectid' => $module->id)); $event->trigger(); $this->waitForSecond(); } // Test that results are sorted by timeaccess DESC (default). $result = \block_recentlyaccesseditems\external::get_recent_items(); $this->assertCount((count($forum) + count($chat)), $result); foreach ($result as $key => $record) { if ($key == 0) { continue; } $this->assertTrue($record->timeaccess < $result[$key - 1]->timeaccess); } // Delete a course and confirm it's activities don't get returned. delete_course($courses[0], false); $result = \block_recentlyaccesseditems\external::get_recent_items(); $this->assertCount((count($forum) + count($chat)) - 2, $result); // Delete a single course module should still return. course_delete_module($forum[1]->cmid); $result = \block_recentlyaccesseditems\external::get_recent_items(); $this->assertCount((count($forum) + count($chat)) - 3, $result); } }