/**
  * 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.
 }
Exemple #2
0
 /**
  * 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);
 }