Exemplo n.º 1
0
 /**
  * Test get_attempt_review
  */
 public function test_get_attempt_review()
 {
     global $DB;
     // Create a new quiz with two questions and one attempt finished.
     list($quiz, $context, $quizobj, $attempt, $attemptobj, $quba) = $this->create_quiz_with_questions(true, true);
     // Add feedback to the quiz.
     $feedback = new stdClass();
     $feedback->quizid = $quiz->id;
     $feedback->feedbacktext = 'Feedback text 1';
     $feedback->feedbacktextformat = 1;
     $feedback->mingrade = 49;
     $feedback->maxgrade = 100;
     $feedback->id = $DB->insert_record('quiz_feedback', $feedback);
     $feedback->feedbacktext = 'Feedback text 2';
     $feedback->feedbacktextformat = 1;
     $feedback->mingrade = 30;
     $feedback->maxgrade = 48;
     $feedback->id = $DB->insert_record('quiz_feedback', $feedback);
     $result = mod_quiz_external::get_attempt_review($attempt->id);
     $result = external_api::clean_returnvalue(mod_quiz_external::get_attempt_review_returns(), $result);
     // Two questions, one completed and correct, the other gave up.
     $this->assertEquals(50, $result['grade']);
     $this->assertEquals(1, $result['attempt']['attempt']);
     $this->assertEquals('finished', $result['attempt']['state']);
     $this->assertEquals(1, $result['attempt']['sumgrades']);
     $this->assertCount(2, $result['questions']);
     $this->assertEquals('gradedright', $result['questions'][0]['state']);
     $this->assertEquals(1, $result['questions'][0]['slot']);
     $this->assertEquals('gaveup', $result['questions'][1]['state']);
     $this->assertEquals(2, $result['questions'][1]['slot']);
     $this->assertCount(1, $result['additionaldata']);
     $this->assertEquals('feedback', $result['additionaldata'][0]['id']);
     $this->assertEquals('Feedback', $result['additionaldata'][0]['title']);
     $this->assertEquals('Feedback text 1', $result['additionaldata'][0]['content']);
     // Only first page.
     $result = mod_quiz_external::get_attempt_review($attempt->id, 0);
     $result = external_api::clean_returnvalue(mod_quiz_external::get_attempt_review_returns(), $result);
     $this->assertEquals(50, $result['grade']);
     $this->assertEquals(1, $result['attempt']['attempt']);
     $this->assertEquals('finished', $result['attempt']['state']);
     $this->assertEquals(1, $result['attempt']['sumgrades']);
     $this->assertCount(1, $result['questions']);
     $this->assertEquals('gradedright', $result['questions'][0]['state']);
     $this->assertEquals(1, $result['questions'][0]['slot']);
     $this->assertCount(1, $result['additionaldata']);
     $this->assertEquals('feedback', $result['additionaldata'][0]['id']);
     $this->assertEquals('Feedback', $result['additionaldata'][0]['title']);
     $this->assertEquals('Feedback text 1', $result['additionaldata'][0]['content']);
 }