From 2bb03c59e88b8e84a22c2d5b7a2cb07d67f2bc2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Mudr=C3=A1k?= Date: Mon, 1 Jul 2019 14:31:27 +0200 Subject: [PATCH] MDL-66049 workshop: Fix the fully qualified class name Because of the missing slash, the class 'workshop' was not found in the current namespace and the cron failed to work. --- mod/workshop/classes/task/cron_task.php | 2 +- mod/workshop/tests/cron_task_test.php | 76 +++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 mod/workshop/tests/cron_task_test.php diff --git a/mod/workshop/classes/task/cron_task.php b/mod/workshop/classes/task/cron_task.php index cf64925926d..892c658bbd1 100644 --- a/mod/workshop/classes/task/cron_task.php +++ b/mod/workshop/classes/task/cron_task.php @@ -65,7 +65,7 @@ class cron_task extends \core\task\scheduled_task { $cm = get_coursemodule_from_instance('workshop', $workshop->id, $workshop->course, false, MUST_EXIST); $course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST); $workshop = new \workshop($workshop, $cm, $course); - $workshop->switch_phase(workshop::PHASE_ASSESSMENT); + $workshop->switch_phase(\workshop::PHASE_ASSESSMENT); $params = [ 'objectid' => $workshop->id, diff --git a/mod/workshop/tests/cron_task_test.php b/mod/workshop/tests/cron_task_test.php new file mode 100644 index 00000000000..7a3971846c4 --- /dev/null +++ b/mod/workshop/tests/cron_task_test.php @@ -0,0 +1,76 @@ +. + +/** + * Provides the {@link mod_workshop_cron_task_testcase} class. + * + * @package mod_workshop + * @category test + * @copyright 2019 David Mudrák + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot.'/mod/workshop/lib.php'); + +/** + * Test the functionality provided by the {@link mod_workshop\task\cron_task} scheduled task. + * + * @copyright 2019 David Mudrák + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_workshop_cron_task_testcase extends advanced_testcase { + + /** + * Test that the phase is automatically switched after the submissions deadline. + */ + public function test_phase_switching() { + global $DB; + + $this->resetAfterTest(); + $this->setAdminUser(); + + // Set up a test workshop with 'Switch to the next phase after the submissions deadline' enabled. + $generator = $this->getDataGenerator(); + $course = $generator->create_course(); + $workshop = $generator->create_module('workshop', [ + 'course' => $course, + 'name' => 'Test Workshop', + ]); + + $DB->update_record('workshop', [ + 'id' => $workshop->id, + 'phase' => workshop::PHASE_SUBMISSION, + 'phaseswitchassessment' => 1, + 'submissionend' => time() - 1, + ]); + + // Execute the cron. + ob_start(); + cron_setup_user(); + $cron = new \mod_workshop\task\cron_task(); + $cron->execute(); + $output = ob_get_contents(); + ob_end_clean(); + + // Assert that the phase has been switched. + $this->assertContains('Processing automatic assessment phase switch', $output); + $this->assertEquals(workshop::PHASE_ASSESSMENT, $DB->get_field('workshop', 'phase', ['id' => $workshop->id])); + } +}