/** * Test get_completion_counts function. */ public function test_get_completion_counts() { global $DB; // Fixture. $elisgen = new elis_program_datagenerator($DB); $pmcourse = $elisgen->create_course(); $class = $elisgen->create_pmclass(array('courseid' => $pmcourse->id)); $class2 = $elisgen->create_pmclass(array('courseid' => $pmcourse->id)); $user = $elisgen->create_user(); $user2 = $elisgen->create_user(); $elisgen->assign_user_to_class($user->id, $class->id); $elisgen->assign_user_to_class($user2->id, $class2->id); $course = new course(); $course->id = $pmcourse->id; $completioncounts = $course->get_completion_counts(); // Verify results. $this->assertInternalType('array', $completioncounts); $this->assertEquals(3, count($completioncounts)); $this->assertArrayHasKey(STUSTATUS_NOTCOMPLETE, $completioncounts); $this->assertArrayHasKey(STUSTATUS_FAILED, $completioncounts); $this->assertArrayHasKey(STUSTATUS_PASSED, $completioncounts); $this->assertEquals(2, $completioncounts[STUSTATUS_NOTCOMPLETE]); $this->assertEquals(0, $completioncounts[STUSTATUS_FAILED]); $this->assertEquals(0, $completioncounts[STUSTATUS_PASSED]); }
/** * Test enrol function */ public function test_enrol() { global $DB; // Fixture. $elisgen = new elis_program_datagenerator($DB); $pgm = $elisgen->create_program(); $track = $elisgen->create_track(array('curid' => $pgm->id)); $course = $elisgen->create_course(); $pmclass = $elisgen->create_pmclass(array('courseid' => $course->id)); $user = $elisgen->create_user(); $elisgen->assign_class_to_track($pmclass->id, $course->id, $track->id, true); $result = usertrack::enrol($user->id, $track->id); $this->assertTrue($result); // Validate curriculumstudent rec. $rec = $DB->get_record(curriculumstudent::TABLE, array('curriculumid' => $pgm->id, 'userid' => $user->id)); $this->assertNotEmpty($rec); // Validate student rec. $rec = $DB->get_record(student::TABLE, array('classid' => $pmclass->id, 'userid' => $user->id)); $this->assertNotEmpty($rec); }
/** * Test get_dashboard_program_data function. */ public function test_get_dashboard_program_data() { global $DB; $datagen = new elis_program_datagenerator($DB); // Create entities. $mockuser = $datagen->create_user(); $pgm = $datagen->create_program(); $pmcourse = $datagen->create_course(); $pmclass = $datagen->create_pmclass(array('courseid' => $pmcourse->id)); // Perform assignments. $curcourse = $datagen->assign_course_to_program($pmcourse->id, $pgm->id); $curstu = $datagen->assign_user_to_program($mockuser->id, $pgm->id); $stu = $datagen->assign_user_to_class($mockuser->id, $pmclass->id); $expectedusercurs = array($curstu->id => (object) array('id' => $curstu->id, 'curid' => $pgm->id, 'name' => $pgm->name)); $expectedcurriculas = array($pgm->id => array('id' => $pgm->id, 'name' => $pgm->name, 'data' => array(array($pmcourse->name, $pmclass->idnumber, $pmcourse->syllabus, 0, get_string('n_completed', 'local_elisprogram'), get_string('na', 'local_elisprogram'))))); $expectedclassids = array($pmclass->id); $expectedtotalcurricula = 1; $expectedcompletecoursesmap = array($pgm->id => 0); $expectedtotalcoursesmap = array($pgm->id => 1); $user = new user(); $user->id = $mockuser->id; list($usercurs, $curriculas, $classids, $totalcurricula, $completecoursesmap, $totalcoursesmap) = $user->get_dashboard_program_data(false, false); $this->assertEquals($expectedusercurs, $usercurs); $this->assertEquals($expectedcurriculas, $curriculas); $this->assertEquals($expectedclassids, $classids); $this->assertEquals($expectedtotalcurricula, $totalcurricula); $this->assertEquals($expectedcompletecoursesmap, $completecoursesmap); $this->assertEquals($expectedtotalcoursesmap, $totalcoursesmap); $expectedcurriculas = array(); $expectedtotalcurricula = 0; $expectedcompletecoursesmap = array(); $expectedtotalcoursesmap = array(); list($usercurs, $curriculas, $classids, $totalcurricula, $completecoursesmap, $totalcoursesmap) = $user->get_dashboard_program_data(true, true); $this->assertEquals($expectedusercurs, $usercurs); $this->assertEquals($expectedcurriculas, $curriculas); $this->assertEquals($expectedclassids, $classids); $this->assertEquals($expectedtotalcurricula, $totalcurricula); $this->assertEquals($expectedcompletecoursesmap, $completecoursesmap); $this->assertEquals($expectedtotalcoursesmap, $totalcoursesmap); }
/** * Test get_elis_coursecompletion_grades method. */ public function test_get_elis_coursecompletion_grades() { global $DB; $edatagenerator = new \elis_program_datagenerator($DB); $pmcourse = $edatagenerator->create_course(); $pmclass1 = $edatagenerator->create_pmclass(array('courseid' => $pmcourse->id)); $pmclass2 = $edatagenerator->create_pmclass(array('courseid' => $pmcourse->id)); $eusers = array(); $musers = array(); for ($i = 0; $i < 6; $i++) { $euser = $edatagenerator->create_user(array('username' => 'testuser' . $i, 'idnumber' => 'testuser' . $i)); $muser = $this->getDataGenerator()->create_user(array('username' => 'testuser' . $i, 'idnumber' => 'testuser' . $i)); $edatagenerator->assign_euser_to_muser($euser->id, $muser->id, $euser->idnumber); $eusers[] = $euser; $musers[] = $muser; } $eusernomoodleuser = $edatagenerator->create_user(array('username' => 'testuser5', 'idnumber' => 'testuser5')); // Create grades. // 1. One user one class one grade. $grade1 = new \student_grade(array('userid' => $eusers[0]->id, 'classid' => $pmclass1->id, 'completionid' => 1, 'grade' => 71)); $grade1->save(); // 2. One user different class one grade. $grade2 = new \student_grade(array('userid' => $eusers[1]->id, 'classid' => $pmclass2->id, 'completionid' => 10, 'grade' => 72)); $grade2->save(); // 3. One user first class one grade (this tests a subsequent call with a larger muid but smaller pmclassid). $grade3 = new \student_grade(array('userid' => $eusers[2]->id, 'classid' => $pmclass1->id, 'completionid' => 1, 'grade' => 72)); $grade3->save(); // 4. One user one class two grades. $grade4 = new \student_grade(array('userid' => $eusers[3]->id, 'classid' => $pmclass1->id, 'completionid' => 1, 'grade' => 73)); $grade4->save(); $grade5 = new \student_grade(array('userid' => $eusers[3]->id, 'classid' => $pmclass1->id, 'completionid' => 2, 'grade' => 74)); $grade5->save(); // 5. One user two classes one grade in each. $grade6 = new \student_grade(array('userid' => $eusers[4]->id, 'classid' => $pmclass1->id, 'completionid' => 1, 'grade' => 75)); $grade6->save(); $grade7 = new \student_grade(array('userid' => $eusers[4]->id, 'classid' => $pmclass2->id, 'completionid' => 10, 'grade' => 76)); $grade7->save(); // 6. One user two classes one grade in one two grades in the other. $grade8 = new \student_grade(array('userid' => $eusers[5]->id, 'classid' => $pmclass1->id, 'completionid' => 1, 'grade' => 77)); $grade8->save(); $grade9 = new \student_grade(array('userid' => $eusers[5]->id, 'classid' => $pmclass2->id, 'completionid' => 10, 'grade' => 78)); $grade9->save(); $grade10 = new \student_grade(array('userid' => $eusers[5]->id, 'classid' => $pmclass2->id, 'completionid' => 11, 'grade' => 79)); $grade10->save(); $sync = new \local_elisprogram\moodle\synchronize(); // 1. One user one class one grade. $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[0]->id, $pmclass1->id); $expected = (object) array('userid' => (string) $eusers[0]->id, 'classid' => (string) $pmclass1->id, 'completionid' => '1', 'grade' => '71.00000', 'muid' => (string) $musers[0]->id, 'pmclassid' => $pmclass1->id, 'id' => $grade1->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade1->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected->completionid, $cmgrades); $this->assertEquals($expected, $cmgrades[$expected->completionid]); // 2. One user different class one grade. $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[1]->id, $pmclass2->id); $expected = (object) array('userid' => (string) $eusers[1]->id, 'classid' => (string) $pmclass2->id, 'completionid' => '10', 'grade' => '72.00000', 'muid' => (string) $musers[1]->id, 'pmclassid' => (string) $pmclass2->id, 'id' => $grade2->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade2->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected->completionid, $cmgrades); $this->assertEquals($expected, $cmgrades[$expected->completionid]); // 3. One user first class one grade (this tests a subsequent call with a larger muid but smaller pmclassid). $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[2]->id, $pmclass1->id); $expected = (object) array('userid' => (string) $eusers[2]->id, 'classid' => (string) $pmclass1->id, 'completionid' => '1', 'grade' => '72.00000', 'muid' => (string) $musers[2]->id, 'pmclassid' => (string) $pmclass1->id, 'id' => $grade3->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade3->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected->completionid, $cmgrades); $this->assertEquals($expected, $cmgrades[$expected->completionid]); // 4. One user one class two grades. $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[3]->id, $pmclass1->id); $expected1 = (object) array('userid' => (string) $eusers[3]->id, 'classid' => (string) $pmclass1->id, 'completionid' => '1', 'grade' => '73.00000', 'muid' => (string) $musers[3]->id, 'pmclassid' => (string) $pmclass1->id, 'id' => $grade4->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade4->timemodified); $expected2 = (object) array('userid' => (string) $eusers[3]->id, 'classid' => (string) $pmclass1->id, 'completionid' => '2', 'grade' => '74.00000', 'muid' => (string) $musers[3]->id, 'pmclassid' => (string) $pmclass1->id, 'id' => $grade5->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade5->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected1->completionid, $cmgrades); $this->assertEquals($expected1, $cmgrades[$expected1->completionid]); $this->assertArrayHasKey($expected2->completionid, $cmgrades); $this->assertEquals($expected2, $cmgrades[$expected2->completionid]); // 5. One user two classes one grade in each. $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[4]->id, $pmclass1->id); $expected = (object) array('userid' => (string) $eusers[4]->id, 'classid' => (string) $pmclass1->id, 'completionid' => '1', 'grade' => '75.00000', 'muid' => (string) $musers[4]->id, 'pmclassid' => (string) $pmclass1->id, 'id' => $grade6->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade6->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected->completionid, $cmgrades); $this->assertEquals($expected, $cmgrades[$expected->completionid]); $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[4]->id, $pmclass2->id); $expected = (object) array('userid' => (string) $eusers[4]->id, 'classid' => (string) $pmclass2->id, 'completionid' => '10', 'grade' => '76.00000', 'muid' => (string) $musers[4]->id, 'pmclassid' => (string) $pmclass2->id, 'id' => $grade7->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade7->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected->completionid, $cmgrades); $this->assertEquals($expected, $cmgrades[$expected->completionid]); // 6. One user two classes one grade in one two grades in the other. $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[5]->id, $pmclass1->id); $expected1 = (object) array('userid' => (string) $eusers[5]->id, 'classid' => (string) $pmclass1->id, 'completionid' => '1', 'grade' => '77.00000', 'muid' => (string) $musers[5]->id, 'pmclassid' => (string) $pmclass1->id, 'id' => $grade8->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade8->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected1->completionid, $cmgrades); $this->assertEquals($expected1, $cmgrades[$expected1->completionid]); $cmgrades = $sync->get_elis_coursecompletion_grades(0, $musers[5]->id, $pmclass2->id); $expected1 = (object) array('userid' => (string) $eusers[5]->id, 'classid' => (string) $pmclass2->id, 'completionid' => '10', 'grade' => '78.00000', 'muid' => (string) $musers[5]->id, 'pmclassid' => (string) $pmclass2->id, 'id' => $grade9->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade9->timemodified); $expected2 = (object) array('userid' => (string) $eusers[5]->id, 'classid' => (string) $pmclass2->id, 'completionid' => '11', 'grade' => '79.00000', 'muid' => (string) $musers[5]->id, 'pmclassid' => (string) $pmclass2->id, 'id' => $grade10->id, 'locked' => '0', 'timegraded' => '0', 'timemodified' => $grade10->timemodified); $this->assertNotEmpty($cmgrades); $this->assertArrayHasKey($expected1->completionid, $cmgrades); $this->assertEquals($expected1, $cmgrades[$expected1->completionid]); }
/** * Test get_instructors function. */ public function test_get_instructors() { global $DB; // Fixture. $datagenerator = new elis_program_datagenerator($DB); $user = $datagenerator->create_user(); $datagenerator->assign_instructor_to_class($user->id, 1); // Test. $instructor = new instructor(); $instructor->classid = 1; $instructors = $instructor->get_instructors(); // Verify. $count = 0; foreach ($instructors as $instructoruser) { $this->assertEquals($user->id, $instructoruser->id); $count++; } $this->assertEquals(1, $count); }