/**
  * Test observer for course delete event.
  */
 public function test_course_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');
     $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;
     // Add 10 rules for this course with subscriptions.
     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;
         $monitorgenerator->create_subscription($sub);
     }
     // Add a site rule.
     $rule = new stdClass();
     $rule->userid = $user->id;
     $rule->courseid = 0;
     $rule->plugin = 'core';
     $monitorgenerator->create_rule($rule);
     // Verify that if we do not specify that we do not want the site rules, they are returned.
     $courserules = \tool_monitor\rule_manager::get_rules_by_courseid($course1->id);
     $this->assertCount(11, $courserules);
     // Verify data before course delete.
     $totalrules = \tool_monitor\rule_manager::get_rules_by_plugin('test');
     $this->assertCount(20, $totalrules);
     $courserules = \tool_monitor\rule_manager::get_rules_by_courseid($course1->id, 0, 0, false);
     $this->assertCount(10, $courserules);
     $this->assertEquals(20, $DB->count_records('tool_monitor_subscriptions'));
     $coursesubs = \tool_monitor\subscription_manager::get_user_subscriptions_for_course($course1->id, 0, 0, $user->id);
     $this->assertCount(10, $coursesubs);
     // Let us delete the course now.
     delete_course($course1->id, false);
     // Confirm the site rule still exists.
     $this->assertEquals(1, $DB->count_records('tool_monitor_rules', array('courseid' => 0)));
     // Verify data after course delete.
     $totalrules = \tool_monitor\rule_manager::get_rules_by_plugin('test');
     $this->assertCount(10, $totalrules);
     $courserules = \tool_monitor\rule_manager::get_rules_by_courseid($course1->id, 0, 0, false);
     $this->assertCount(0, $courserules);
     // Making sure all rules are deleted.
     $this->assertEquals(10, $DB->count_records('tool_monitor_subscriptions'));
     $coursesubs = \tool_monitor\subscription_manager::get_user_subscriptions_for_course($course1->id, 0, 0, $user->id);
     $this->assertCount(0, $coursesubs);
     // Making sure all subscriptions are deleted.
 }