Skip to content

Commit

Permalink
Merge branch 'MDL-35744_23' of git://github.com/timhunt/moodle into M…
Browse files Browse the repository at this point in the history
…OODLE_23_STABLE
  • Loading branch information
stronk7 committed Oct 2, 2012
2 parents c67ed6a + db1052c commit a8d7f5c
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 1 deletion.
2 changes: 1 addition & 1 deletion mod/quiz/locallib.php
Expand Up @@ -987,7 +987,7 @@ function quiz_get_flag_option($attempt, $context) {
* IMMEDIATELY_AFTER, LATER_WHILE_OPEN or AFTER_CLOSE constants.
*/
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;
} else if (time() < $attempt->timefinish + 120) {
return mod_quiz_display_options::IMMEDIATELY_AFTER;
Expand Down
88 changes: 88 additions & 0 deletions mod/quiz/tests/locallib_test.php
Expand Up @@ -151,4 +151,92 @@ public function test_quiz_get_slot_for_question() {
$this->assertEquals(1, quiz_get_slot_for_question($quiz, 1));
$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));
}
}

0 comments on commit a8d7f5c

Please sign in to comment.