From 9d6f9d1d47df914b92323ee7d478e23393907cfb Mon Sep 17 00:00:00 2001 From: Claude Vervoort Date: Mon, 10 Dec 2018 10:26:12 -0500 Subject: [PATCH 1/2] MDL-64357 ltiservice_gradebookservices: fix cleanup deleting lineitems --- .../classes/local/service/gradebookservices.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mod/lti/service/gradebookservices/classes/local/service/gradebookservices.php b/mod/lti/service/gradebookservices/classes/local/service/gradebookservices.php index 554f52549b8..9c7783e5451 100644 --- a/mod/lti/service/gradebookservices/classes/local/service/gradebookservices.php +++ b/mod/lti/service/gradebookservices/classes/local/service/gradebookservices.php @@ -546,9 +546,7 @@ class gradebookservices extends service_base { $sql = "DELETE FROM {ltiservice_gradebookservices} WHERE gradeitemid NOT IN (SELECT id - FROM {grade_items} gi - WHERE gi.itemtype = 'mod' - AND gi.itemmodule = 'lti')"; + FROM {grade_items} gi)"; $DB->execute($sql); } From e56eb26aec42a653f3bbc56484fbf77cadf79258 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Tue, 11 Dec 2018 14:22:40 +0800 Subject: [PATCH 2/2] MDL-64357 ltiservice_gradebookservices: updated unit tests --- .../tests/task_cleanup_test.php | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/mod/lti/service/gradebookservices/tests/task_cleanup_test.php b/mod/lti/service/gradebookservices/tests/task_cleanup_test.php index 20881e0ef5a..c9ed00414b6 100644 --- a/mod/lti/service/gradebookservices/tests/task_cleanup_test.php +++ b/mod/lti/service/gradebookservices/tests/task_cleanup_test.php @@ -100,4 +100,46 @@ class ltiservice_gradebookservices_cleanup_task_testcase extends advanced_testca $this->assertEquals($gradeitem2->id, $gradebookserviceitem->gradeitemid); } + + /** + * Test the cleanup task with a manual grade item. + */ + public function test_cleanup_task_with_manual_item() { + global $CFG, $DB; + + // This is required when running the unit test in isolation. + require_once($CFG->libdir . '/gradelib.php'); + + // Create a manual grade item for a course. + $course = $this->getDataGenerator()->create_course(); + $params = [ + 'courseid' => $course->id, + 'itemtype' => 'manual' + ]; + $gradeitem = new grade_item($params); + $gradeitem->insert(); + + // Insert it into the 'ltiservice_gradebookservices' table. + $data = new stdClass(); + $data->gradeitemid = $gradeitem->id; + $data->courseid = $course->id; + $DB->insert_record('ltiservice_gradebookservices', $data); + + // Run the task. + $task = new \ltiservice_gradebookservices\task\cleanup_task(); + $task->execute(); + + // Check it still exist. + $this->assertEquals(1, $DB->count_records('ltiservice_gradebookservices')); + + // Delete the manual item. + $gradeitem->delete(); + + // Run the task again. + $task = new \ltiservice_gradebookservices\task\cleanup_task(); + $task->execute(); + + // Check it has been removed. + $this->assertEquals(0, $DB->count_records('ltiservice_gradebookservices')); + } }