Skip to content

Commit

Permalink
MDL-65588 analytics: Unit tests for any_course_access
Browse files Browse the repository at this point in the history
  • Loading branch information
David Monllaó committed Sep 20, 2019
1 parent 7b8a5bf commit 7d8ed90
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions lib/tests/indicators_test.php
Expand Up @@ -48,6 +48,7 @@ class core_analytics_indicators_testcase extends advanced_testcase {
* @return void
*/
public function test_core_indicators() {
global $DB;

$this->preventResetByRollback();
$this->resetAfterTest(true);
Expand Down Expand Up @@ -122,6 +123,65 @@ public function test_core_indicators() {
$this->assertEquals($indicator::get_max_value(), $values[$user1->id][0]);
$this->assertEquals($indicator::get_min_value(), $values[$user2->id][0]);

// Test any course access.
$course = $this->getDataGenerator()->create_course($params);
$coursecontext = \context_course::instance($course->id);
$this->getDataGenerator()->enrol_user($user1->id, $course->id);

$indicator = new \core\analytics\indicator\any_course_access();

$sampleids = array($user1->id => $user1->id);
$data = array($user1->id => array(
'course' => $course,
'user' => $user1
));
$indicator->add_sample_data($data);
$analysable = new \core_analytics\course($course);

// Min value if no user_lastaccess records.
$indicator->fill_per_analysable_caches($analysable);
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere');
$this->assertEquals($indicator::get_min_value(), $values[$user1->id][0]);
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', time() - 10, time() + 10);
$this->assertEquals($indicator::get_min_value(), $values[$user1->id][0]);

// Any access is enough if no time restrictions.
$DB->insert_record('user_lastaccess', array('userid' => $user1->id,
'courseid' => $course->id, 'timeaccess' => time() - 1));
$indicator->fill_per_analysable_caches($analysable);
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere');
$this->assertEquals($indicator::get_max_value(), $values[$user1->id][0]);

// Min value if the existing records are old.
$indicator->fill_per_analysable_caches($analysable);
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', time(), time() + 10);
$this->assertEquals($indicator::get_min_value(), $values[$user1->id][0]);
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', time());
$this->assertEquals($indicator::get_min_value(), $values[$user1->id][0]);

// Max value if the existing records are prior to end.
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', time() - 10, time());
$this->assertEquals($indicator::get_max_value(), $values[$user1->id][0]);
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', false, time());
$this->assertEquals($indicator::get_max_value(), $values[$user1->id][0]);
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', false, time());
$this->assertEquals($indicator::get_max_value(), $values[$user1->id][0]);

// Max value if no end time and existing user_lastaccess record.
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', time() - 10);
$this->assertEquals($indicator::get_max_value(), $values[$user1->id][0]);

// Rely on logs if the last time access is after the end time.
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', false, time() - 10);
// Min value if no logs are found.
$this->assertEquals($indicator::get_min_value(), $values[$user1->id][0]);

\logstore_standard\event\unittest_executed::create(
array('context' => \context_course::instance($course->id), 'userid' => $user1->id))->trigger();
// Max value if logs are found before the end time.
list($values, $unused) = $indicator->calculate($sampleids, 'notrelevanthere', false, time() + 10);
$this->assertEquals($indicator::get_max_value(), $values[$user1->id][0]);

// Test any write action.
$course1 = $this->getDataGenerator()->create_course();
$coursecontext1 = \context_course::instance($course1->id);
Expand Down

0 comments on commit 7d8ed90

Please sign in to comment.