From 7a08156eef4453e571b4e929f3da2a64711e5a07 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Mon, 26 Mar 2018 15:57:30 +0800 Subject: [PATCH] MDL-60416 mod_lti: add unit test for gradebook cleanup task --- .../tests/task_cleanup_test.php | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 mod/lti/service/gradebookservices/tests/task_cleanup_test.php diff --git a/mod/lti/service/gradebookservices/tests/task_cleanup_test.php b/mod/lti/service/gradebookservices/tests/task_cleanup_test.php new file mode 100644 index 00000000000..20881e0ef5a --- /dev/null +++ b/mod/lti/service/gradebookservices/tests/task_cleanup_test.php @@ -0,0 +1,103 @@ +. + +/** + * Tests cleaning up the gradebook services task. + * + * @package ltiservice_gradebookservices + * @category test + * @copyright 2018 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Tests cleaning up the gradebook services task. + * + * @package ltiservice_gradebookservices + * @category test + * @copyright 2018 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class ltiservice_gradebookservices_cleanup_task_testcase extends advanced_testcase { + + /** + * Test set up. + * + * This is executed before running any test in this file. + */ + public function setUp() { + $this->resetAfterTest(); + } + + /** + * Test the cleanup task. + */ + public function test_cleanup_task() { + global $DB; + + // Create a course. + $course = $this->getDataGenerator()->create_course(); + + // Create a few LTI items. + $lti = $this->getDataGenerator()->create_module('lti', ['course' => $course->id]); + $lti2 = $this->getDataGenerator()->create_module('lti', ['course' => $course->id]); + + $conditions = [ + 'courseid' => $course->id, + 'itemtype' => 'mod', + 'itemmodule' => 'lti', + 'iteminstance' => $lti->id + ]; + + // Get the grade items. + $gradeitem = $DB->get_record('grade_items', $conditions); + + $conditions['iteminstance'] = $lti2->id; + $gradeitem2 = $DB->get_record('grade_items', $conditions); + + // Insert these into the 'ltiservice_gradebookservices' table. + $data = new stdClass(); + $data->gradeitemid = $gradeitem->id; + $data->courseid = $course->id; + $DB->insert_record('ltiservice_gradebookservices', $data); + + $data->gradeitemid = $gradeitem2->id; + $DB->insert_record('ltiservice_gradebookservices', $data); + + $task = new \ltiservice_gradebookservices\task\cleanup_task(); + $task->execute(); + + // Check they both still exist. + $this->assertEquals(2, $DB->count_records('ltiservice_gradebookservices')); + + // Delete the first LTI activity. + course_delete_module($lti->cmid); + + // Run the task again. + $task = new \ltiservice_gradebookservices\task\cleanup_task(); + $task->execute(); + + // Check only the second grade item exists. + $gradebookserviceitems = $DB->get_records('ltiservice_gradebookservices'); + $this->assertCount(1, $gradebookserviceitems); + + $gradebookserviceitem = reset($gradebookserviceitems); + + $this->assertEquals($gradeitem2->id, $gradebookserviceitem->gradeitemid); + } +}