You are here

public function QuizPageTestCase::testPageFeedback in Quiz 7.5

Same name and namespace in other branches
  1. 8.6 question_types/quiz_page/tests/src/Functional/QuizPageTestCase.php \QuizPageTestCase::testPageFeedback()
  2. 8.6 question_types/quiz_page/tests/src/Functional/QuizPageTestCase.test \QuizPageTestCase::testPageFeedback()
  3. 8.5 question_types/quiz_page/tests/src/Functional/QuizPageTestCase.php \QuizPageTestCase::testPageFeedback()
  4. 8.5 question_types/quiz_page/tests/src/Functional/QuizPageTestCase.test \QuizPageTestCase::testPageFeedback()

File

question_types/quiz_page/QuizPageTestCase.test, line 165

Class

QuizPageTestCase

Code

public function testPageFeedback() {
  $this
    ->drupalLogin($this->admin);
  $quiz_node = $this
    ->drupalCreateQuiz(array(
    'review_options' => array(
      'question' => array(
        'question_feedback' => 'question_feedback',
      ),
    ),
  ));

  // Create the questions.
  $question_node1 = $this
    ->drupalCreateNode(array(
    'type' => 'truefalse',
    'correct_answer' => 1,
    'body' => array(
      LANGUAGE_NONE => array(
        array(
          'value' => 'TF 1 body text',
        ),
      ),
    ),
  ));
  $this
    ->linkQuestionToQuiz($question_node1, $quiz_node);

  // QNR ID 1
  $question_node2 = $this
    ->drupalCreateNode(array(
    'type' => 'truefalse',
    'correct_answer' => 1,
    'body' => array(
      LANGUAGE_NONE => array(
        array(
          'value' => 'TF 2 body text',
        ),
      ),
    ),
  ));

  // Set feedback.
  $entities = entity_load('quiz_question', FALSE, array(
    'nid' => $question_node1->nid,
    'vid' => $question_node1->vid,
  ));
  $quiz_question = reset($entities);
  $quiz_question->feedback = 'This is the feedback for question 1.';
  $quiz_question->feedback_format = filter_default_format();
  entity_save('quiz_question', $quiz_question);
  $entities = entity_load('quiz_question', FALSE, array(
    'nid' => $question_node2->nid,
    'vid' => $question_node2->vid,
  ));
  $quiz_question = reset($entities);
  $quiz_question->feedback = 'This is the feedback for question 2.';
  $quiz_question->feedback_format = filter_default_format();
  entity_save('quiz_question', $quiz_question);
  $this
    ->linkQuestionToQuiz($question_node2, $quiz_node);

  // QNR ID 2
  // Create the page.
  $page_node1 = $this
    ->drupalCreateNode(array(
    'type' => 'quiz_page',
    'body' => array(
      LANGUAGE_NONE => array(
        array(
          'value' => 'PG 1 body text',
        ),
      ),
    ),
  ));
  $this
    ->linkQuestionToQuiz($page_node1, $quiz_node);

  // QNR ID 3
  // Go to the manage questions form.
  $this
    ->drupalGet("node/{$quiz_node->nid}/quiz/questions");
  $post = array(
    // Make the questions have parents.
    "qnr_pids[{$question_node1->nid}-{$question_node1->vid}]" => 3,
    "qnr_pids[{$question_node2->nid}-{$question_node2->vid}]" => 3,
    // Mirror what JS would have done by adjusting the weights.
    "weights[{$page_node1->nid}-{$page_node1->vid}]" => 1,
    "weights[{$question_node1->nid}-{$question_node1->vid}]" => 2,
    "weights[{$question_node2->nid}-{$question_node2->vid}]" => 3,
  );
  $this
    ->drupalPost(NULL, $post, t('Submit'));
  $this
    ->drupalLogin($this->user);
  $this
    ->drupalGet("node/{$quiz_node->nid}/take");
  $this
    ->drupalPost(NULL, array(
    "question[{$question_node1->nid}][answer]" => 1,
    "question[{$question_node2->nid}][answer]" => 1,
  ), t('Finish'));
  $this
    ->assertText('This is the feedback for question 1');
  $this
    ->assertText('This is the feedback for question 2');
}