From: Simey Lameze Date: Fri, 31 Oct 2014 06:43:07 +0000 (+0800) Subject: MDL-47892 tool_monitor: add count_rule_subscriptions method and unit tests X-Git-Tag: v2.8.0-rc1~43^2 X-Git-Url: http://git.moodle.org/gw?p=moodle.git;a=commitdiff_plain;h=ed9084f70ba3f3d601793b0a7ba93d105e8bfe28 MDL-47892 tool_monitor: add count_rule_subscriptions method and unit tests --- diff --git a/admin/tool/monitor/classes/subscription_manager.php b/admin/tool/monitor/classes/subscription_manager.php index 99003d62371..1ecf5656177 100644 --- a/admin/tool/monitor/classes/subscription_manager.php +++ b/admin/tool/monitor/classes/subscription_manager.php @@ -365,4 +365,19 @@ class subscription_manager { } return $result; } + + /** + * Get count of subscriptions for a given rule. + * + * @param int $ruleid rule id of the subscription. + * + * @return int number of subscriptions + */ + public static function count_rule_subscriptions($ruleid) { + global $DB; + $sql = self::get_subscription_join_rule_sql(true); + $sql .= "WHERE s.ruleid = :ruleid"; + + return $DB->count_records_sql($sql, array('ruleid' => $ruleid)); + } } diff --git a/admin/tool/monitor/tests/subscription_manager_test.php b/admin/tool/monitor/tests/subscription_manager_test.php new file mode 100644 index 00000000000..3a905efe106 --- /dev/null +++ b/admin/tool/monitor/tests/subscription_manager_test.php @@ -0,0 +1,78 @@ +. + +/** + * Unit tests for subscription manager api. + * + * @package tool_monitor + * @category test + * @copyright 2014 onwards Simey Lameze + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +/** + * Tests for subscription manager. + * + * Class tool_monitor_subscription_manager_testcase. + */ +class tool_monitor_subscription_manager_testcase extends advanced_testcase { + + /** + * Test count_rule_subscriptions method. + */ + public function test_count_rule_subscriptions() { + + $this->setAdminUser(); + $this->resetAfterTest(true); + + // Create users. + $user1 = $this->getDataGenerator()->create_user(); + $user2 = $this->getDataGenerator()->create_user(); + + // Create few rules. + $monitorgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor'); + $rule1 = $monitorgenerator->create_rule(); + $rule2 = $monitorgenerator->create_rule(); + $subs = \tool_monitor\subscription_manager::count_rule_subscriptions($rule1->id); + + // No subscriptions at this point. + $this->assertEquals(0, $subs); + + // Subscribe user 1 to rule 1. + $record = new stdClass; + $record->ruleid = $rule1->id; + $record->userid = $user1->id; + $monitorgenerator->create_subscription($record); + + // Subscribe user 2 to rule 1. + $record->userid = $user2->id; + $monitorgenerator->create_subscription($record); + + // Subscribe user 2 to rule 2. + $record->ruleid = $rule2->id; + $monitorgenerator->create_subscription($record); + + // Should have 2 subscriptions for rule 1 and 1 subscription for rule 2 + $subs1 = \tool_monitor\subscription_manager::count_rule_subscriptions($rule1->id); + $subs2 = \tool_monitor\subscription_manager::count_rule_subscriptions($rule2->id); + $this->assertEquals(2, $subs1); + $this->assertEquals(1, $subs2); + } +} \ No newline at end of file