Permalink
Browse files

MDL-40264 fix essay handling of zero-string response

Fixes an inappropriate behavior of the is_complete_response() function
for the Essay question type, which caused the string "0" to be
inappropriately marked as an incomplete response.

Also adds a set of unit tests for the Essay question type's
is_complete_response.
  • Loading branch information...
1 parent 6420fea commit 3553982d6d2d7866b13efe20890bb62c2f979925 @ktemkin ktemkin committed Jun 21, 2013
Showing with 16 additions and 1 deletion.
  1. +1 −1 question/type/essay/question.php
  2. +15 −0 question/type/essay/tests/question_test.php
@@ -82,7 +82,7 @@ public function get_correct_response() {
}
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) {
@@ -49,4 +49,19 @@ public function test_summarise_response() {
$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')));
+ }
}

0 comments on commit 3553982

Please sign in to comment.