diff --git a/question/type/essay/question.php b/question/type/essay/question.php index 19ad588f3f4..f85eff68aa4 100644 --- a/question/type/essay/question.php +++ b/question/type/essay/question.php @@ -82,7 +82,7 @@ class qtype_essay_question extends question_with_responses { } public function is_complete_response(array $response) { - return !empty($response['answer']); + return array_key_exists('answer', $response) && ($response['answer'] !== ''); } public function is_same_response(array $prevresponse, array $newresponse) { diff --git a/question/type/essay/tests/question_test.php b/question/type/essay/tests/question_test.php index 6381a6d6299..24a223144e9 100644 --- a/question/type/essay/tests/question_test.php +++ b/question/type/essay/tests/question_test.php @@ -49,4 +49,19 @@ class qtype_essay_question_test extends advanced_testcase { $this->assertEquals($longstring, $essay->summarise_response(array('answer' => $longstring))); } + + public function test_is_complete_response() { + + $essay = test_question_maker::make_an_essay_question(); + $essay->start_attempt(new question_attempt_step(), 1); + + // The empty string should be considered an empty response, as should a lack of a response. + $this->assertFalse($essay->is_complete_response(array('answer' => ''))); + $this->assertFalse($essay->is_complete_response(array())); + + // Any nonempty string should be considered a complete response. + $this->assertTrue($essay->is_complete_response(array('answer' => 'A student response.'))); + $this->assertTrue($essay->is_complete_response(array('answer' => '0 times.'))); + $this->assertTrue($essay->is_complete_response(array('answer' => '0'))); + } }