MDL-64745 block_online_users: Add unit tests
authorMihail Geshoski <mihail@moodle.com>
Fri, 27 Sep 2019 05:23:28 +0000 (13:23 +0800)
committerMihail Geshoski <mihail@moodle.com>
Mon, 7 Oct 2019 01:00:33 +0000 (09:00 +0800)
blocks/online_users/tests/online_users_test.php

index 946e456..da436ac 100644 (file)
@@ -155,6 +155,8 @@ class block_online_users_testcase extends advanced_testcase {
     public function test_user_visibility_course1_group1_members() {
         global $CFG;
 
+        // Enable users to set their visibility to others in the online users block.
+        $CFG->block_online_users_onlinestatushiding = true;
         $groupid = $this->data['group1']->id;
         $now = time();
         $timetoshowusers = $CFG->block_online_users_timetosee * 60;
@@ -190,6 +192,18 @@ class block_online_users_testcase extends advanced_testcase {
         // User1 should not be displayed in the online users block.
         $this->assertEquals(2, $usercount);
         $this->assertFalse(array_key_exists($user1->id, $users));
+
+        // Disable users to set their visibility to others in the online users block.
+        // All users should be displayed now and the visibility status of a users should be ignored,
+        // as the capability of setting the visibility to other user has been disabled.
+        $CFG->block_online_users_onlinestatushiding = false;
+        // Test if the fetcher gets all the users including user1.
+        $onlineusers = new fetcher($groupid, $now, $timetoshowusers, $context, false, $courseid);
+        $users = $onlineusers->get_users();
+        $usercount = $onlineusers->count_users();
+        // User1 should be displayed in the online users block.
+        $this->assertEquals(3, $usercount);
+        $this->assertTrue(array_key_exists($user1->id, $users));
     }
 
     /**
@@ -234,6 +248,18 @@ class block_online_users_testcase extends advanced_testcase {
         // User1 should not be displayed in the online users block.
         $this->assertEquals(8, $usercount);
         $this->assertFalse(array_key_exists($user1->id, $users));
+
+        // Disable users to set their visibility to others in the online users block.
+        // All users should be displayed now and the visibility status of a users should be ignored,
+        // as the capability of setting the visibility to other user has been disabled.
+        $CFG->block_online_users_onlinestatushiding = false;
+        // Test if the fetcher gets all the users including user1.
+        $onlineusers = new fetcher($currentgroup, $now, $timetoshowusers, $context, false, $courseid);
+        $users = $onlineusers->get_users();
+        $usercount = $onlineusers->count_users();
+        // User1 should be displayed in the online users block.
+        $this->assertEquals(9, $usercount);
+        $this->assertTrue(array_key_exists($user1->id, $users));
     }
 
     /**
@@ -277,5 +303,17 @@ class block_online_users_testcase extends advanced_testcase {
         // User1 should not be displayed in the online users block.
         $this->assertEquals(11, $usercount);
         $this->assertFalse(array_key_exists($user1->id, $users));
+
+        // Disable users to set their visibility to others in the online users block.
+        // All users should be displayed now and the visibility status of a users should be ignored,
+        // as the capability of setting the visibility to other user has been disabled.
+        $CFG->block_online_users_onlinestatushiding = false;
+        // Test if the fetcher gets all the users including user1.
+        $onlineusers = new fetcher($currentgroup, $now, $timetoshowusers, $context, true);
+        $users = $onlineusers->get_users();
+        $usercount = $onlineusers->count_users();
+        // User1 should be displayed in the online users block.
+        $this->assertEquals(12, $usercount);
+        $this->assertTrue(array_key_exists($user1->id, $users));
     }
 }