AutorÃa | Ultima modificación | Ver Log |
<?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/>./*** Helper for privacy tests.** @package core_question* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/defined('MOODLE_INTERNAL') || die();use \core_privacy\local\request\writer;/*** Helper for privacy tests.** @package core_question* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/trait core_question_privacy_helper {/*** Assert that the question usage in the supplied slot matches the expected format* and usage for a question.** @param \question_usage_by_activity $quba The Question Usage to test against.* @param int $slotno The slot number to compare* @param \question_display_options $options The display options used for formatting.* @param \stdClass $data The data to check.*/public function assert_question_slot_equals(\question_usage_by_activity $quba,$slotno,\question_display_options $options,$data) {$attempt = $quba->get_question_attempt($slotno);$question = $attempt->get_question(false);// Check the question data exported.$this->assertEquals($data->name, $question->name);$this->assertEquals($data->question, $question->questiontext);// Check the answer exported.$this->assertEquals($attempt->get_response_summary(), $data->answer);if ($options->marks != \question_display_options::HIDDEN) {$this->assertEquals($attempt->get_mark(), $data->mark);} else {$this->assertFalse(isset($data->mark));}if ($options->flags != \question_display_options::HIDDEN) {$this->assertEquals($attempt->is_flagged(), (int) $data->flagged);} else {$this->assertFalse(isset($data->flagged));}if ($options->generalfeedback != \question_display_options::HIDDEN) {$this->assertEquals($question->format_generalfeedback($attempt), $data->generalfeedback);} else {$this->assertFalse(isset($data->generalfeedback));}}/*** Assert that a question attempt was exported.** @param \context $context The context which the attempt should be in* @param array $subcontext The base of the export* @param question_usage_by_activity $quba The question usage expected* @param \question_display_options $options The display options used for formatting.* @param \stdClass $user The user exported*/public function assert_question_attempt_exported(\context $context, array $subcontext, $quba, $options, $user) {$usagecontext = array_merge($subcontext,[get_string('questions', 'core_question')]);/** @var \core_privacy\tests\request\content_writer $writer */$writer = writer::with_context($context);foreach ($quba->get_slots() as $slotno) {$data = $writer->get_data(array_merge($usagecontext, [$slotno]));$this->assert_question_slot_equals($quba, $slotno, $options, $data);}}}