diff --git a/question/type/essay/tests/question_test.php b/question/type/essay/tests/question_test.php index 31c4821b838..2bca5ca0111 100644 --- a/question/type/essay/tests/question_test.php +++ b/question/type/essay/tests/question_test.php @@ -31,6 +31,7 @@ require_once($CFG->dirroot . '/question/engine/tests/helpers.php'); * @package qtype_essay * @copyright 2009 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @covers \qtype_essay_question */ final class question_test extends \advanced_testcase { public function test_get_question_summary(): void { @@ -100,6 +101,58 @@ final class question_test extends \advanced_testcase { ]; } + /** + * Test un_summarise_response(). + * + * @dataProvider un_summarise_response_provider + * @param string $responseformat + * @param string $summary + * @param array $expected + */ + public function test_un_summarise_response(string $responseformat, string $summary, array $expected): void { + $this->resetAfterTest(); + + $essay = \test_question_maker::make_an_essay_question(); + $essay->start_attempt(new question_attempt_step(), 1); + + $essay->responseformat = $responseformat; + + $this->assertEquals($expected, $essay->un_summarise_response($summary)); + } + + /** + * Data provider for test_un_summarise_response(). + * + * Covers multiple response formats, empty responses, + * case sensitivity, unicode text, and HTML content. + * + * @return array + */ + public static function un_summarise_response_provider(): array { + return [ + 'empty summary returns empty array' => [ + 'plain', + '', + [], + ], + 'plain format returns plain text' => [ + 'plain', + 'Hello Moodle', + ['answer' => 'Hello Moodle', 'answerformat' => FORMAT_PLAIN], + ], + 'editor format converts to HTML' => [ + 'editor', + 'Hello Moodle', + ['answer' => text_to_html('Hello Moodle'), 'answerformat' => FORMAT_HTML], + ], + 'plain format preserves HTML tags literally' => [ + 'plain', + 'bold', + ['answer' => 'bold', 'answerformat' => FORMAT_PLAIN], + ], + ]; + } + public function test_is_same_response(): void { $essay = \test_question_maker::make_an_essay_question();