/** * Test observer for course module delete event. */ public function test_course_module_deleted() { global $DB; $this->setAdminUser(); $this->resetAfterTest(true); $user = $this->getDataGenerator()->create_user(); $course1 = $this->getDataGenerator()->create_course(); $course2 = $this->getDataGenerator()->create_course(); $monitorgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor'); // Now let us create a rule specific to a module instance. $cm = new stdClass(); $cm->course = $course1->id; $book = $this->getDataGenerator()->create_module('book', $cm); $rule = new stdClass(); $rule->userid = $user->id; $rule->courseid = $course1->id; $rule->plugin = 'test'; $sub = new stdClass(); $sub->courseid = $course1->id; $sub->userid = $user->id; $sub->cmid = $book->cmid; // Add 10 rules for this course with subscriptions for this module. for ($i = 0; $i < 10; $i++) { $createdrule = $monitorgenerator->create_rule($rule); $sub->ruleid = $createdrule->id; $monitorgenerator->create_subscription($sub); } // Add 10 random rules for course 2. $rule->courseid = $course2->id; for ($i = 0; $i < 10; $i++) { $createdrule = $monitorgenerator->create_rule($rule); $sub->courseid = $rule->courseid; $sub->ruleid = $createdrule->id; $sub->cmid = 0; $monitorgenerator->create_subscription($sub); } // Verify data before module delete. $totalrules = \tool_monitor\rule_manager::get_rules_by_plugin('test'); $this->assertCount(20, $totalrules); $totalsubs = $DB->get_records('tool_monitor_subscriptions'); $this->assertCount(20, $totalsubs); // Let us delete the user now. course_delete_module($book->cmid); // Verify data after course delete. $totalrules = \tool_monitor\rule_manager::get_rules_by_plugin('test'); $this->assertCount(20, $totalrules); $totalsubs = $DB->get_records('tool_monitor_subscriptions'); $this->assertCount(10, $totalsubs); // Make sure only relevant subscriptions are deleted. }
/** * Test get_rules_by_plugin method. */ public function test_get_rules_by_plugin() { $this->setAdminUser(); $this->resetAfterTest(true); $monitorgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor'); $record = new stdClass(); $record->plugin = 'core'; $record2 = new stdClass(); $record2->plugin = 'mod_assign'; $ruleids = array(); for ($i = 0; $i < 10; $i++) { $rule = $monitorgenerator->create_rule($record); $ruleids[] = $rule->id; $rule = $monitorgenerator->create_rule($record2); // Create rules in a different plugin. } $ruledata = \tool_monitor\rule_manager::get_rules_by_plugin('core'); $this->assertEmpty(array_merge(array_diff(array_keys($ruledata), $ruleids), array_diff($ruleids, array_keys($ruledata)))); $this->assertCount(10, $ruledata); }