MDL-38128 mod_assign: Counts and groups unit tests
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user