mirror of
https://github.com/moodle/moodle.git
synced 2025-08-07 01:46:45 +02:00
Merge branch 'MDL-35744_23' of git://github.com/timhunt/moodle into MOODLE_23_STABLE
This commit is contained in:
commit
a8d7f5cf15
2 changed files with 89 additions and 1 deletions
|
@ -987,7 +987,7 @@ function quiz_get_flag_option($attempt, $context) {
|
||||||
* IMMEDIATELY_AFTER, LATER_WHILE_OPEN or AFTER_CLOSE constants.
|
* IMMEDIATELY_AFTER, LATER_WHILE_OPEN or AFTER_CLOSE constants.
|
||||||
*/
|
*/
|
||||||
function quiz_attempt_state($quiz, $attempt) {
|
function quiz_attempt_state($quiz, $attempt) {
|
||||||
if ($attempt->state != quiz_attempt::FINISHED) {
|
if ($attempt->state == quiz_attempt::IN_PROGRESS) {
|
||||||
return mod_quiz_display_options::DURING;
|
return mod_quiz_display_options::DURING;
|
||||||
} else if (time() < $attempt->timefinish + 120) {
|
} else if (time() < $attempt->timefinish + 120) {
|
||||||
return mod_quiz_display_options::IMMEDIATELY_AFTER;
|
return mod_quiz_display_options::IMMEDIATELY_AFTER;
|
||||||
|
|
|
@ -151,4 +151,92 @@ class mod_quiz_locallib_testcase extends basic_testcase {
|
||||||
$this->assertEquals(1, quiz_get_slot_for_question($quiz, 1));
|
$this->assertEquals(1, quiz_get_slot_for_question($quiz, 1));
|
||||||
$this->assertEquals(3, quiz_get_slot_for_question($quiz, 7));
|
$this->assertEquals(3, quiz_get_slot_for_question($quiz, 7));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_in_progress() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::IN_PROGRESS;
|
||||||
|
$attempt->timefinish = 0;
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = 0;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::DURING, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_recently_submitted() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::FINISHED;
|
||||||
|
$attempt->timefinish = time() - 10;
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = 0;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::IMMEDIATELY_AFTER, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_sumitted_quiz_never_closes() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::FINISHED;
|
||||||
|
$attempt->timefinish = time() - 7200;
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = 0;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::LATER_WHILE_OPEN, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_sumitted_quiz_closes_later() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::FINISHED;
|
||||||
|
$attempt->timefinish = time() - 7200;
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = time() + 3600;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::LATER_WHILE_OPEN, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_sumitted_quiz_closed() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::FINISHED;
|
||||||
|
$attempt->timefinish = time() - 7200;
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = time() - 3600;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::AFTER_CLOSE, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_never_sumitted_quiz_never_closes() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::ABANDONED;
|
||||||
|
$attempt->timefinish = 1000; // A very long time ago!
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = 0;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::LATER_WHILE_OPEN, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_never_sumitted_quiz_closes_later() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::ABANDONED;
|
||||||
|
$attempt->timefinish = time() - 7200;
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = time() + 3600;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::LATER_WHILE_OPEN, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_quiz_attempt_state_never_sumitted_quiz_closed() {
|
||||||
|
$attempt = new stdClass();
|
||||||
|
$attempt->state = quiz_attempt::ABANDONED;
|
||||||
|
$attempt->timefinish = time() - 7200;
|
||||||
|
|
||||||
|
$quiz = new stdClass();
|
||||||
|
$quiz->timeclose = time() - 3600;
|
||||||
|
|
||||||
|
$this->assertEquals(mod_quiz_display_options::AFTER_CLOSE, quiz_attempt_state($quiz, $attempt));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue