/** * 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); } // 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); $this->assertCount(10, $courserules); $totalsubs = $DB->get_records('tool_monitor_subscriptions'); $this->assertCount(20, $totalsubs); $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); // 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); $this->assertCount(0, $courserules); // Making sure all rules are deleted. $totalsubs = $DB->get_records('tool_monitor_subscriptions'); $this->assertCount(10, $totalsubs); $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. }
/** * Query the reader. Store results in the object for use by build_table. * * @param int $pagesize size of page for paginated displayed table. * @param bool $useinitialsbar do you want to use the initials bar. */ public function query_db($pagesize, $useinitialsbar = true) { $total = \tool_monitor\rule_manager::count_rules_by_courseid($this->courseid); $this->pagesize($pagesize, $total); $rules = \tool_monitor\rule_manager::get_rules_by_courseid($this->courseid, $this->get_page_start(), $this->get_page_size()); $this->rawdata = $rules; // Set initial bars. if ($useinitialsbar) { $this->initialbars($total > $pagesize); } }
/** * Test get_rules_by_courseid method. */ public function test_get_rules_by_courseid() { $this->setAdminUser(); $this->resetAfterTest(true); $monitorgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor'); $course1 = $this->getDataGenerator()->create_course(); $course2 = $this->getDataGenerator()->create_course(); $record = new stdClass(); $record->courseid = $course1->id; $record2 = new stdClass(); $record2->courseid = $course2->id; $ruleids = array(); for ($i = 0; $i < 10; $i++) { $rule = $monitorgenerator->create_rule($record); $ruleids[] = $rule->id; $rule = $monitorgenerator->create_rule(); // Create some site level rules. $ruleids[] = $rule->id; $rule = $monitorgenerator->create_rule($record2); // Create rules in a different course. } $ruledata = \tool_monitor\rule_manager::get_rules_by_courseid($course1->id); $this->assertEmpty(array_merge(array_diff(array_keys($ruledata), $ruleids), array_diff($ruleids, array_keys($ruledata)))); $this->assertCount(20, $ruledata); }