Línea 33... |
Línea 33... |
33 |
* @copyright 2013 The Open University
|
33 |
* @copyright 2013 The Open University
|
34 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
34 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
35 |
*/
|
35 |
*/
|
36 |
class questionusage_autosave_test extends \qbehaviour_walkthrough_test_base {
|
36 |
class questionusage_autosave_test extends \qbehaviour_walkthrough_test_base {
|
Línea 37... |
Línea 37... |
37 |
|
37 |
|
38 |
public function test_autosave_then_display() {
|
38 |
public function test_autosave_then_display(): void {
|
39 |
$this->resetAfterTest();
|
39 |
$this->resetAfterTest();
|
40 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
40 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
41 |
$cat = $generator->create_question_category();
|
41 |
$cat = $generator->create_question_category();
|
42 |
$question = $generator->create_question('shortanswer', null,
|
42 |
$question = $generator->create_question('shortanswer', null,
|
Línea 78... |
Línea 78... |
78 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
78 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
Línea 79... |
Línea 79... |
79 |
|
79 |
|
80 |
$this->delete_quba();
|
80 |
$this->delete_quba();
|
Línea 81... |
Línea 81... |
81 |
}
|
81 |
}
|
82 |
|
82 |
|
83 |
public function test_autosave_then_autosave_different_data() {
|
83 |
public function test_autosave_then_autosave_different_data(): void {
|
84 |
$this->resetAfterTest();
|
84 |
$this->resetAfterTest();
|
85 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
85 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
86 |
$cat = $generator->create_question_category();
|
86 |
$cat = $generator->create_question_category();
|
Línea 137... |
Línea 137... |
137 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
137 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
Línea 138... |
Línea 138... |
138 |
|
138 |
|
139 |
$this->delete_quba();
|
139 |
$this->delete_quba();
|
Línea 140... |
Línea 140... |
140 |
}
|
140 |
}
|
141 |
|
141 |
|
142 |
public function test_autosave_then_autosave_same_data() {
|
142 |
public function test_autosave_then_autosave_same_data(): void {
|
143 |
$this->resetAfterTest();
|
143 |
$this->resetAfterTest();
|
144 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
144 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
145 |
$cat = $generator->create_question_category();
|
145 |
$cat = $generator->create_question_category();
|
Línea 202... |
Línea 202... |
202 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
202 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
Línea 203... |
Línea 203... |
203 |
|
203 |
|
204 |
$this->delete_quba();
|
204 |
$this->delete_quba();
|
Línea 205... |
Línea 205... |
205 |
}
|
205 |
}
|
206 |
|
206 |
|
207 |
public function test_autosave_then_autosave_original_data() {
|
207 |
public function test_autosave_then_autosave_original_data(): void {
|
208 |
$this->resetAfterTest();
|
208 |
$this->resetAfterTest();
|
209 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
209 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
210 |
$cat = $generator->create_question_category();
|
210 |
$cat = $generator->create_question_category();
|
Línea 262... |
Línea 262... |
262 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
262 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
Línea 263... |
Línea 263... |
263 |
|
263 |
|
264 |
$this->delete_quba();
|
264 |
$this->delete_quba();
|
Línea 265... |
Línea 265... |
265 |
}
|
265 |
}
|
266 |
|
266 |
|
267 |
public function test_autosave_then_real_save() {
|
267 |
public function test_autosave_then_real_save(): void {
|
268 |
$this->resetAfterTest();
|
268 |
$this->resetAfterTest();
|
269 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
269 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
270 |
$cat = $generator->create_question_category();
|
270 |
$cat = $generator->create_question_category();
|
Línea 318... |
Línea 318... |
318 |
$this->render();
|
318 |
$this->render();
|
319 |
$this->check_output_contains_text_input('answer', 'third response');
|
319 |
$this->check_output_contains_text_input('answer', 'third response');
|
320 |
$this->check_output_contains_hidden_input(':sequencecheck', 3);
|
320 |
$this->check_output_contains_hidden_input(':sequencecheck', 3);
|
321 |
}
|
321 |
}
|
Línea 322... |
Línea 322... |
322 |
|
322 |
|
323 |
public function test_autosave_then_real_save_same() {
|
323 |
public function test_autosave_then_real_save_same(): void {
|
324 |
$this->resetAfterTest();
|
324 |
$this->resetAfterTest();
|
325 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
325 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
326 |
$cat = $generator->create_question_category();
|
326 |
$cat = $generator->create_question_category();
|
327 |
$question = $generator->create_question('shortanswer', null,
|
327 |
$question = $generator->create_question('shortanswer', null,
|
Línea 374... |
Línea 374... |
374 |
$this->render();
|
374 |
$this->render();
|
375 |
$this->check_output_contains_text_input('answer', 'second response');
|
375 |
$this->check_output_contains_text_input('answer', 'second response');
|
376 |
$this->check_output_contains_hidden_input(':sequencecheck', 3);
|
376 |
$this->check_output_contains_hidden_input(':sequencecheck', 3);
|
377 |
}
|
377 |
}
|
Línea 378... |
Línea 378... |
378 |
|
378 |
|
379 |
public function test_autosave_then_submit() {
|
379 |
public function test_autosave_then_submit(): void {
|
380 |
$this->resetAfterTest();
|
380 |
$this->resetAfterTest();
|
381 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
381 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
382 |
$cat = $generator->create_question_category();
|
382 |
$cat = $generator->create_question_category();
|
383 |
$question = $generator->create_question('shortanswer', null,
|
383 |
$question = $generator->create_question('shortanswer', null,
|
Línea 431... |
Línea 431... |
431 |
$this->render();
|
431 |
$this->render();
|
432 |
$this->check_output_contains_text_input('answer', 'third response', false);
|
432 |
$this->check_output_contains_text_input('answer', 'third response', false);
|
433 |
$this->check_output_contains_hidden_input(':sequencecheck', 4);
|
433 |
$this->check_output_contains_hidden_input(':sequencecheck', 4);
|
434 |
}
|
434 |
}
|
Línea 435... |
Línea 435... |
435 |
|
435 |
|
436 |
public function test_autosave_and_save_concurrently() {
|
436 |
public function test_autosave_and_save_concurrently(): void {
|
437 |
// This test simulates the following scenario:
|
437 |
// This test simulates the following scenario:
|
438 |
// 1. Student looking at a page of the quiz, and edits a field then waits.
|
438 |
// 1. Student looking at a page of the quiz, and edits a field then waits.
|
439 |
// 2. Autosave starts.
|
439 |
// 2. Autosave starts.
|
440 |
// 3. Student immediately clicks Next, which submits the current page.
|
440 |
// 3. Student immediately clicks Next, which submits the current page.
|
Línea 504... |
Línea 504... |
504 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
504 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
Línea 505... |
Línea 505... |
505 |
|
505 |
|
506 |
$DB2->dispose();
|
506 |
$DB2->dispose();
|
Línea 507... |
Línea 507... |
507 |
}
|
507 |
}
|
508 |
|
508 |
|
509 |
public function test_concurrent_autosaves() {
|
509 |
public function test_concurrent_autosaves(): void {
|
510 |
// This test simulates the following scenario:
|
510 |
// This test simulates the following scenario:
|
511 |
// 1. Student opens a page of the quiz in two separate browser.
|
511 |
// 1. Student opens a page of the quiz in two separate browser.
|
512 |
// 2. Autosave starts in both at the same time.
|
512 |
// 2. Autosave starts in both at the same time.
|
Línea 576... |
Línea 576... |
576 |
$this->check_output_contains_hidden_input(':sequencecheck', 1);
|
576 |
$this->check_output_contains_hidden_input(':sequencecheck', 1);
|
Línea 577... |
Línea 577... |
577 |
|
577 |
|
578 |
$DB2->dispose();
|
578 |
$DB2->dispose();
|
Línea 579... |
Línea 579... |
579 |
}
|
579 |
}
|
580 |
|
580 |
|
581 |
public function test_autosave_with_wrong_seq_number_ignored() {
|
581 |
public function test_autosave_with_wrong_seq_number_ignored(): void {
|
582 |
$this->resetAfterTest();
|
582 |
$this->resetAfterTest();
|
583 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
583 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
584 |
$cat = $generator->create_question_category();
|
584 |
$cat = $generator->create_question_category();
|
Línea 623... |
Línea 623... |
623 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
623 |
$this->check_output_contains_hidden_input(':sequencecheck', 2);
|
Línea 624... |
Línea 624... |
624 |
|
624 |
|
625 |
$this->delete_quba();
|
625 |
$this->delete_quba();
|
Línea 626... |
Línea 626... |
626 |
}
|
626 |
}
|
627 |
|
627 |
|
628 |
public function test_finish_with_unhandled_autosave_data() {
|
628 |
public function test_finish_with_unhandled_autosave_data(): void {
|
629 |
$this->resetAfterTest();
|
629 |
$this->resetAfterTest();
|
630 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
630 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
631 |
$cat = $generator->create_question_category();
|
631 |
$cat = $generator->create_question_category();
|
Línea 685... |
Línea 685... |
685 |
/**
|
685 |
/**
|
686 |
* Test that regrading doesn't convert autosave steps to finished steps.
|
686 |
* Test that regrading doesn't convert autosave steps to finished steps.
|
687 |
* This can result in students loosing data (due to question_out_of_sequence_exception) if a teacher
|
687 |
* This can result in students loosing data (due to question_out_of_sequence_exception) if a teacher
|
688 |
* regrades an attempt while it is in progress.
|
688 |
* regrades an attempt while it is in progress.
|
689 |
*/
|
689 |
*/
|
690 |
public function test_autosave_and_regrade_then_display() {
|
690 |
public function test_autosave_and_regrade_then_display(): void {
|
691 |
$this->resetAfterTest();
|
691 |
$this->resetAfterTest();
|
692 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
692 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
693 |
$cat = $generator->create_question_category();
|
693 |
$cat = $generator->create_question_category();
|
694 |
$question = $generator->create_question('shortanswer', null,
|
694 |
$question = $generator->create_question('shortanswer', null,
|
695 |
array('category' => $cat->id));
|
695 |
array('category' => $cat->id));
|