public function test_informationitem_feedback_description()
 {
     // Create a true-false question with correct answer true.
     $description = test_question_maker::make_a_description_question();
     $this->start_attempt_at_question($description, 'deferredfeedback');
     // Check the initial state.
     $this->check_current_state(question_state::$todo);
     $this->check_current_mark(null);
     $this->check_current_output($this->get_contains_question_text_expectation($description), new ContainsTagWithAttributes('input', array('type' => 'hidden', 'name' => $this->quba->get_field_prefix($this->slot) . '-seen', 'value' => 1)), $this->get_does_not_contain_feedback_expectation());
     // Process a submission indicating this question has been seen.
     $this->process_submission(array('-seen' => 1));
     $this->check_current_state(question_state::$complete);
     $this->check_current_mark(null);
     $this->check_current_output($this->get_does_not_contain_correctness_expectation(), new NoPatternExpectation('/type=\\"hidden\\"[^>]*name=\\"[^"]*seen\\"|name=\\"[^"]*seen\\"[^>]*type=\\"hidden\\"/'), $this->get_does_not_contain_feedback_expectation());
     // Finish the attempt.
     $this->quba->finish_all_questions();
     // Verify.
     $this->check_current_state(question_state::$finished);
     $this->check_current_mark(null);
     $this->check_current_output($this->get_contains_question_text_expectation($description), $this->get_contains_general_feedback_expectation($description));
     // Process a manual comment.
     $this->manual_grade('Not good enough!', null);
     $this->check_current_state(question_state::$manfinished);
     $this->check_current_mark(null);
     $this->check_current_output(new PatternExpectation('/' . preg_quote('Not good enough!') . '/'));
     // Check that trying to process a manual comment with a grade causes an exception.
     $this->expectException();
     $this->manual_grade('Not good enough!', 1);
 }
 public function setUp()
 {
     $this->quba = question_engine::make_questions_usage_by_activity('unit_test', get_context_instance(CONTEXT_SYSTEM));
     $this->quba->set_preferred_behaviour('deferredfeedback');
     $slot = $this->quba->add_question(test_question_maker::make_a_description_question());
     $this->qas[$slot] = $this->quba->get_question_attempt($slot);
     $slot = $this->quba->add_question(test_question_maker::make_a_description_question());
     $this->qas[$slot] = $this->quba->get_question_attempt($slot);
     $this->iterator = $this->quba->get_attempt_iterator();
 }
 public function setUp()
 {
     $question = test_question_maker::make_a_description_question();
     $this->qa = new testable_question_attempt($question, 0);
     for ($i = 0; $i < 3; $i++) {
         $step = new question_attempt_step(array('i' => $i));
         $this->qa->add_step($step);
     }
     $this->iterator = $this->qa->get_step_iterator();
 }
 public function setUp()
 {
     $this->question = test_question_maker::make_a_description_question();
     $this->qa = new testable_question_attempt($this->question, 0, null, 2);
     for ($i = 0; $i < 3; $i++) {
         $step = new question_attempt_step(array('i' => $i));
         $this->qa->add_step($step);
     }
 }