MDL-38128 mod_assign: Counts and groups unit tests

This commit is contained in:
David Monllao
2014-12-12 15:10:23 +08:00
parent bc006a666c
commit 2dda9417dd
+90 -30
View File
@@ -633,13 +633,23 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
public function test_count_teams() {
$this->create_extra_users();
$this->setUser($this->editingteachers[0]);
$assign = $this->create_instance(array('teamsubmission'=>1));
$assign1 = $this->create_instance(array('teamsubmission' => 1));
$this->assertEquals(self::GROUP_COUNT + 1, $assign1->count_teams());
$this->assertEquals(self::GROUP_COUNT + 1, $assign->count_teams());
$grouping = $this->getDataGenerator()->create_grouping(array('courseid' => $this->course->id));
$this->getDataGenerator()->create_grouping_group(array('groupid' => $this->groups[0]->id, 'groupingid' => $grouping->id));
$this->getDataGenerator()->create_grouping_group(array('groupid' => $this->groups[1]->id, 'groupingid' => $grouping->id));
// No active group => 2 groups + the default one.
$assign2 = $this->create_instance(array('teamsubmission' => 1, 'teamsubmissiongroupingid' => $grouping->id));
$this->assertEquals(3, $assign2->count_teams());
// An active group => Just the selected one.
$this->assertEquals(1, $assign2->count_teams($this->groups[0]->id));
}
public function test_submit_to_default_group() {
global $DB;
global $DB, $SESSION;
$this->preventResetByRollback();
$sink = $this->redirectMessages();
@@ -647,7 +657,8 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
$this->setUser($this->editingteachers[0]);
$params = array('teamsubmission' => 1,
'assignsubmission_onlinetext_enabled' => 1,
'submissiondrafts'=>0);
'submissiondrafts' => 0,
'groupmode' => VISIBLEGROUPS);
$assign = $this->create_instance($params);
$newstudent = $this->getDataGenerator()->create_user();
@@ -667,98 +678,147 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
$assign->save_submission($data, $notices);
$this->assertEmpty($notices, 'No errors on save submission');
// Set active groups to all groups.
$this->setUser($this->teachers[0]);
$SESSION->activegroup[$this->course->id]['aag'][0] = 0;
$this->assertEquals(1, $assign->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
// Set an active group.
$anothergroup = $this->groups[0];
$SESSION->activegroup[$this->course->id]['aag'][0] = (int)$anothergroup->id;
$this->assertEquals(0, $assign->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
$sink->close();
}
public function test_count_submissions() {
global $SESSION;
$this->create_extra_users();
$this->setUser($this->editingteachers[0]);
$assign = $this->create_instance(array('assignsubmission_onlinetext_enabled'=>1));
$assign1 = $this->create_instance(array('assignsubmission_onlinetext_enabled' => 1));
// Simulate a submission.
$this->setUser($this->extrastudents[0]);
$submission = $assign->get_user_submission($this->extrastudents[0]->id, true);
$submission = $assign1->get_user_submission($this->extrastudents[0]->id, true);
$submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
$assign->testable_update_submission($submission, $this->extrastudents[0]->id, true, false);
$assign1->testable_update_submission($submission, $this->extrastudents[0]->id, true, false);
// Leave this one as DRAFT.
$data = new stdClass();
$data->onlinetext_editor = array('itemid'=>file_get_unused_draft_itemid(),
'text'=>'Submission text',
'format'=>FORMAT_MOODLE);
$plugin = $assign->get_submission_plugin_by_type('onlinetext');
$plugin = $assign1->get_submission_plugin_by_type('onlinetext');
$plugin->save($submission, $data);
// Simulate adding a grade.
$this->setUser($this->teachers[0]);
$data = new stdClass();
$data->grade = '50.0';
$assign->testable_apply_grade_to_user($data, $this->extrastudents[0]->id, 0);
$assign1->testable_apply_grade_to_user($data, $this->extrastudents[0]->id, 0);
// Simulate a submission.
$this->setUser($this->extrastudents[1]);
$submission = $assign->get_user_submission($this->extrastudents[1]->id, true);
$submission = $assign1->get_user_submission($this->extrastudents[1]->id, true);
$submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
$assign->testable_update_submission($submission, $this->extrastudents[1]->id, true, false);
$assign1->testable_update_submission($submission, $this->extrastudents[1]->id, true, false);
$data = new stdClass();
$data->onlinetext_editor = array('itemid'=>file_get_unused_draft_itemid(),
'text'=>'Submission text',
'format'=>FORMAT_MOODLE);
$plugin = $assign->get_submission_plugin_by_type('onlinetext');
$plugin = $assign1->get_submission_plugin_by_type('onlinetext');
$plugin->save($submission, $data);
// Simulate a submission.
$this->setUser($this->extrastudents[2]);
$submission = $assign->get_user_submission($this->extrastudents[2]->id, true);
$submission = $assign1->get_user_submission($this->extrastudents[2]->id, true);
$submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
$assign->testable_update_submission($submission, $this->extrastudents[2]->id, true, false);
$assign1->testable_update_submission($submission, $this->extrastudents[2]->id, true, false);
$data = new stdClass();
$data->onlinetext_editor = array('itemid'=>file_get_unused_draft_itemid(),
'text'=>'Submission text',
'format'=>FORMAT_MOODLE);
$plugin = $assign->get_submission_plugin_by_type('onlinetext');
$plugin = $assign1->get_submission_plugin_by_type('onlinetext');
$plugin->save($submission, $data);
// Simulate a submission.
$this->setUser($this->extrastudents[3]);
$submission = $assign->get_user_submission($this->extrastudents[3]->id, true);
$submission = $assign1->get_user_submission($this->extrastudents[3]->id, true);
$submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
$assign->testable_update_submission($submission, $this->extrastudents[3]->id, true, false);
$assign1->testable_update_submission($submission, $this->extrastudents[3]->id, true, false);
$data = new stdClass();
$data->onlinetext_editor = array('itemid'=>file_get_unused_draft_itemid(),
'text'=>'Submission text',
'format'=>FORMAT_MOODLE);
$plugin = $assign->get_submission_plugin_by_type('onlinetext');
$plugin = $assign1->get_submission_plugin_by_type('onlinetext');
$plugin->save($submission, $data);
// Simulate a submission for suspended user, this will never be counted.
$this->setUser($this->extrastudents[3]);
$submission = $assign->get_user_submission($this->extrasuspendedstudents[0]->id, true);
$submission = $assign1->get_user_submission($this->extrasuspendedstudents[0]->id, true);
$submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
$assign->testable_update_submission($submission, $this->extrasuspendedstudents[0]->id, true, false);
$assign1->testable_update_submission($submission, $this->extrasuspendedstudents[0]->id, true, false);
$data = new stdClass();
$data->onlinetext_editor = array('itemid'=>file_get_unused_draft_itemid(),
'text'=>'Submission text',
'format'=>FORMAT_MOODLE);
$plugin = $assign->get_submission_plugin_by_type('onlinetext');
$plugin = $assign1->get_submission_plugin_by_type('onlinetext');
$plugin->save($submission, $data);
// Simulate adding a grade.
$this->setUser($this->teachers[0]);
$data = new stdClass();
$data->grade = '50.0';
$assign->testable_apply_grade_to_user($data, $this->extrastudents[3]->id, 0);
$assign->testable_apply_grade_to_user($data, $this->extrasuspendedstudents[0]->id, 0);
$assign1->testable_apply_grade_to_user($data, $this->extrastudents[3]->id, 0);
$assign1->testable_apply_grade_to_user($data, $this->extrasuspendedstudents[0]->id, 0);
// Create a new submission with status NEW.
$this->setUser($this->extrastudents[4]);
$submission = $assign->get_user_submission($this->extrastudents[4]->id, true);
$submission = $assign1->get_user_submission($this->extrastudents[4]->id, true);
$this->assertEquals(2, $assign->count_grades());
$this->assertEquals(4, $assign->count_submissions());
$this->assertEquals(5, $assign->count_submissions(true));
$this->assertEquals(2, $assign->count_submissions_need_grading());
$this->assertEquals(3, $assign->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
$this->assertEquals(1, $assign->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_DRAFT));
$this->assertEquals(2, $assign1->count_grades());
$this->assertEquals(4, $assign1->count_submissions());
$this->assertEquals(5, $assign1->count_submissions(true));
$this->assertEquals(2, $assign1->count_submissions_need_grading());
$this->assertEquals(3, $assign1->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
$this->assertEquals(1, $assign1->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_DRAFT));
// Groups.
$assign2 = $this->create_instance(array(
'assignsubmission_onlinetext_enabled' => 1,
'groupmode' => VISIBLEGROUPS
));
$this->setUser($this->extrastudents[1]);
$submission = $assign2->get_user_submission($this->extrastudents[1]->id, true);
$submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
$assign2->testable_update_submission($submission, $this->extrastudents[1]->id, true, false);
$data = new stdClass();
$data->onlinetext_editor = array('itemid' => file_get_unused_draft_itemid(),
'text' => 'Submission text',
'format' => FORMAT_MOODLE);
$plugin = $assign2->get_submission_plugin_by_type('onlinetext');
$plugin->save($submission, $data);
$this->assertEquals(1, $assign2->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
// Set active groups to all groups.
$this->setUser($this->teachers[0]);
$SESSION->activegroup[$this->course->id]['aag'][0] = 0;
$this->assertEquals(1, $assign2->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
// Set the user group.
$studentgroups = groups_get_user_groups($this->course->id, $this->extrastudents[1]->id);
$this->assertEquals(1, count($studentgroups));
$studentgroup = array_pop($studentgroups);
$SESSION->activegroup[$this->course->id]['aag'][0] = $studentgroup[0];
$this->assertEquals(1, $assign2->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
// Set another group.
$anothergroup = $this->groups[0];
$this->assertNotEquals($anothergroup->id, $studentgroup[0]);
$SESSION->activegroup[$this->course->id]['aag'][0] = (int)$anothergroup->id;
$this->assertEquals(0, $assign2->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED));
}
public function test_count_submissions_for_groups() {