From e1a6022802efe546b983397ea89ad1b606c521d1 Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Sat, 13 Sep 2014 10:24:23 +0530 Subject: [PATCH] MDL-45758 tool_monitor: Add unit tests for the course deleted observer Original issue - MDL-46510 --- .../monitor/tests/eventobservers_test.php | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 admin/tool/monitor/tests/eventobservers_test.php diff --git a/admin/tool/monitor/tests/eventobservers_test.php b/admin/tool/monitor/tests/eventobservers_test.php new file mode 100644 index 00000000000..c097e5566f0 --- /dev/null +++ b/admin/tool/monitor/tests/eventobservers_test.php @@ -0,0 +1,91 @@ +. + +/** + * Unit tests for event observers. + * + * @package tool_monitor + * @category phpunit + * @copyright 2014 onwards Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +class tool_monitor_eventobservers_testcase extends advanced_testcase { + + /** + * Test observer for course delete event. + */ + public function test_course_deleted() { + global $DB; + + $this->setAdminUser(); + $this->resetAfterTest(true); + + $user = $this->getDataGenerator()->create_user(); + $course = $this->getDataGenerator()->create_course(); + $monitorgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor'); + + $rule = new stdClass(); + $rule->userid = $user->id; + $rule->courseid = $course->id; + $rule->plugin = 'test'; + + $sub = new stdClass(); + $sub->courseid = $course->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 random courses. + for ($i = 0; $i < 10; $i++) { + $rule->courseid = rand(10000000, 50000000); + $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($course->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($course->id, 0, 0, $user->id); + $this->assertCount(10, $coursesubs); + + // Let us delete the course now. + delete_course($course->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($course->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($course->id, 0, 0, $user->id); + $this->assertCount(0, $coursesubs); // Making sure all subscriptions are deleted. + } +}