/** * Fetch the plugin by its type. * * @return setask_submission_plugin */ protected function get_submission_plugin() { global $CFG; if (!$this->plugin || !$this->cmid) { return null; } require_once $CFG->dirroot . '/mod/setask/locallib.php'; $context = context_module::instance($this->cmid); $setaskment = new setask($context, null, null); return $setaskment->get_submission_plugin_by_type($this->plugin); }
public function test_upgrade_offline_setaskment() { global $DB, $CFG; $commentconfig = false; if (!empty($CFG->usecomments)) { $commentconfig = $CFG->usecomments; } $CFG->usecomments = false; $this->setUser($this->editingteachers[0]); $generator = $this->getDataGenerator()->get_plugin_generator('mod_setaskment'); $params = array('course' => $this->course->id, 'setaskmenttype' => 'offline'); $setaskment = $generator->create_instance($params); $this->setAdminUser(); $log = ''; $upgrader = new setask_upgrade_manager(); $this->assertTrue($upgrader->upgrade_setaskment($setaskment->id, $log)); $record = $DB->get_record('setask', array('course' => $this->course->id)); $cm = get_coursemodule_from_instance('setask', $record->id); $context = context_module::instance($cm->id); $setask = new setask($context, $cm, $this->course); $plugin = $setask->get_submission_plugin_by_type('onlinetext'); $this->assertEmpty($plugin->is_enabled()); $plugin = $setask->get_submission_plugin_by_type('comments'); $this->assertEmpty($plugin->is_enabled()); $plugin = $setask->get_submission_plugin_by_type('file'); $this->assertEmpty($plugin->is_enabled()); $plugin = $setask->get_feedback_plugin_by_type('comments'); $this->assertNotEmpty($plugin->is_enabled()); $plugin = $setask->get_feedback_plugin_by_type('file'); $this->assertEmpty($plugin->is_enabled()); $plugin = $setask->get_feedback_plugin_by_type('offline'); $this->assertEmpty($plugin->is_enabled()); $CFG->usecomments = $commentconfig; course_delete_module($cm->id); }
/** * Test submit_for_grading */ public function test_submit_for_grading() { global $DB, $USER; $this->resetAfterTest(true); // Create a course and setaskment and users. $course = self::getDataGenerator()->create_course(); set_config('submissionreceipts', 0, 'setask'); $generator = $this->getDataGenerator()->get_plugin_generator('mod_setask'); $params['course'] = $course->id; $params['setasksubmission_onlinetext_enabled'] = 1; $params['submissiondrafts'] = 1; $params['sendnotifications'] = 0; $params['requiresubmissionstatement'] = 1; $instance = $generator->create_instance($params); $cm = get_coursemodule_from_instance('setask', $instance->id); $context = context_module::instance($cm->id); $setask = new setask($context, $cm, $course); $student1 = self::getDataGenerator()->create_user(); $studentrole = $DB->get_record('role', array('shortname' => 'student')); $this->getDataGenerator()->enrol_user($student1->id, $course->id, $studentrole->id); // Create a student1 with an online text submission. // Simulate a submission. $this->setUser($student1); $submission = $setask->get_user_submission($student1->id, true); $data = new stdClass(); $data->onlinetext_editor = array('itemid' => file_get_unused_draft_itemid(), 'text' => 'Submission text', 'format' => FORMAT_MOODLE); $plugin = $setask->get_submission_plugin_by_type('onlinetext'); $plugin->save($submission, $data); $result = mod_setask_external::submit_for_grading($instance->id, false); $result = external_api::clean_returnvalue(mod_setask_external::submit_for_grading_returns(), $result); // Should be 1 fail because the submission statement was not aceptted. $this->assertEquals(1, count($result)); $result = mod_setask_external::submit_for_grading($instance->id, true); $result = external_api::clean_returnvalue(mod_setask_external::submit_for_grading_returns(), $result); // Check for 0 warnings. $this->assertEquals(0, count($result)); $submission = $setask->get_user_submission($student1->id, false); $this->assertEquals(ASSIGN_SUBMISSION_STATUS_SUBMITTED, $submission->status); }