mirror of
https://github.com/moodle/moodle.git
synced 2025-03-13 20:26:32 +01:00
MDL-47900 tool_monitor: expanded unit tests
Expanded the unit tests to ensure unnecessary events are not saved in the DB and altered existing tests so they pass with the introduction of this feature.
This commit is contained in:
parent
475635f52d
commit
c490ede369
@ -114,20 +114,88 @@ class tool_monitor_eventobservers_testcase extends advanced_testcase {
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
// Create events and verify data is fine.
|
||||
// Create the necessary items for testing.
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$course2 = $this->getDataGenerator()->create_course();
|
||||
$monitorgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor');
|
||||
|
||||
$initialevents = $DB->get_records('tool_monitor_events');
|
||||
$initalcount = count($initialevents);
|
||||
// Fire a bunch of events.
|
||||
// Trigger a bunch of other events.
|
||||
$eventparams = array(
|
||||
'context' => context_course::instance($course->id)
|
||||
);
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
\core\event\course_viewed::create($eventparams)->trigger();
|
||||
\mod_quiz\event\course_module_instance_list_viewed::create($eventparams)->trigger();
|
||||
\mod_scorm\event\course_module_instance_list_viewed::create($eventparams)->trigger();
|
||||
}
|
||||
|
||||
// Confirm that nothing was stored in the tool_monitor_events table
|
||||
// as we do not have any subscriptions associated for the above events.
|
||||
$this->assertEquals(0, $DB->count_records('tool_monitor_events'));
|
||||
|
||||
// Now, let's create a rule so an event can be stored.
|
||||
$rule = new stdClass();
|
||||
$rule->courseid = $course->id;
|
||||
$rule->plugin = 'mod_book';
|
||||
$rule->eventname = '\mod_book\event\course_module_instance_list_viewed';
|
||||
$rule = $monitorgenerator->create_rule($rule);
|
||||
|
||||
// Let's subscribe to this rule.
|
||||
$sub = new stdClass;
|
||||
$sub->courseid = $course->id;
|
||||
$sub->ruleid = $rule->id;
|
||||
$sub->userid = $user->id;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
// Again, let's just fire more events to make sure they still aren't stored.
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
\core\event\course_viewed::create($eventparams)->trigger();
|
||||
\mod_quiz\event\course_module_instance_list_viewed::create($eventparams)->trigger();
|
||||
\mod_scorm\event\course_module_instance_list_viewed::create($eventparams)->trigger();
|
||||
}
|
||||
|
||||
// Fire the event we want to capture.
|
||||
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course);
|
||||
$event->trigger();
|
||||
|
||||
// Check that the event data is valid.
|
||||
$events = $DB->get_records('tool_monitor_events');
|
||||
$count = count($events);
|
||||
$this->assertEquals($initalcount + 1, $count);
|
||||
$this->assertEquals(1, count($events));
|
||||
$monitorevent = array_pop($events);
|
||||
$this->assertEquals($event->eventname, $monitorevent->eventname);
|
||||
$this->assertEquals($event->contextid, $monitorevent->contextid);
|
||||
$this->assertEquals($event->contextlevel, $monitorevent->contextlevel);
|
||||
$this->assertEquals($event->get_url()->out(), $monitorevent->link);
|
||||
$this->assertEquals($event->courseid, $monitorevent->courseid);
|
||||
$this->assertEquals($event->timecreated, $monitorevent->timecreated);
|
||||
|
||||
// Match values.
|
||||
// Remove the stored events.
|
||||
$DB->delete_records('tool_monitor_events');
|
||||
|
||||
// Now, let's create a site wide rule.
|
||||
$rule = new stdClass();
|
||||
$rule->courseid = 0;
|
||||
$rule->plugin = 'mod_book';
|
||||
$rule->eventname = '\mod_book\event\course_module_instance_list_viewed';
|
||||
$rule = $monitorgenerator->create_rule($rule);
|
||||
|
||||
// Let's subscribe to this rule.
|
||||
$sub = new stdClass;
|
||||
$sub->courseid = 0;
|
||||
$sub->ruleid = $rule->id;
|
||||
$sub->userid = $user->id;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
// Fire the event we want to capture - but in a different course.
|
||||
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course2);
|
||||
$event->trigger();
|
||||
|
||||
// Check that the event data is valid.
|
||||
$events = $DB->get_records('tool_monitor_events');
|
||||
$this->assertEquals(1, count($events));
|
||||
$monitorevent = array_pop($events);
|
||||
$this->assertEquals($event->eventname, $monitorevent->eventname);
|
||||
$this->assertEquals($event->contextid, $monitorevent->contextid);
|
||||
$this->assertEquals($event->contextlevel, $monitorevent->contextlevel);
|
||||
|
@ -50,6 +50,8 @@ class tool_monitor_events_testcase extends advanced_testcase {
|
||||
$ruledata = new stdClass();
|
||||
$ruledata->userid = $user->id;
|
||||
$ruledata->courseid = $course->id;
|
||||
$ruledata->plugin = 'mod_assign';
|
||||
$ruledata->eventname = '\mod_assign\event\submission_viewed';
|
||||
$ruledata->description = 'Rule description';
|
||||
$ruledata->descriptionformat = FORMAT_HTML;
|
||||
$ruledata->template = 'A message template';
|
||||
|
@ -94,6 +94,31 @@ class tool_monitor_task_clean_events_testcase extends advanced_testcase {
|
||||
$rule->timewindow = 500;
|
||||
$rule6 = $monitorgenerator->create_rule($rule);
|
||||
|
||||
|
||||
// Let's subscribe to these rules.
|
||||
$sub = new stdClass;
|
||||
$sub->courseid = $course->id;
|
||||
$sub->ruleid = $rule1->id;
|
||||
$sub->userid = $user->id;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
$sub->ruleid = $rule2->id;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
$sub->ruleid = $rule3->id;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
$sub->ruleid = $rule4->id;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
$sub->ruleid = $rule5->id;
|
||||
$sub->courseid = $course2->id;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
$sub->ruleid = $rule6->id;
|
||||
$sub->courseid = 0;
|
||||
$monitorgenerator->create_subscription($sub);
|
||||
|
||||
// Now let's populate the tool_monitor table with the events associated with those rules.
|
||||
\mod_book\event\course_module_viewed::create_from_book($book, $bookcontext)->trigger();
|
||||
\mod_book\event\course_module_instance_list_viewed::create_from_course($course)->trigger();
|
||||
@ -115,8 +140,8 @@ class tool_monitor_task_clean_events_testcase extends advanced_testcase {
|
||||
\mod_scorm\event\course_module_instance_list_viewed::create($eventparams)->trigger();
|
||||
}
|
||||
|
||||
// Check that the events exist - there will be additional events for creating courses, modules and rules.
|
||||
$this->assertEquals(26, $DB->count_records('tool_monitor_events'));
|
||||
// We do not store events that have no subscriptions - so there will be only 4 events.
|
||||
$this->assertEquals(4, $DB->count_records('tool_monitor_events'));
|
||||
|
||||
// Run the task and check that all the quiz, scorm and rule events are removed as well as the course_module_*
|
||||
// viewed events in the second course.
|
||||
|
Loading…
x
Reference in New Issue
Block a user