/**
  * Test that the discussion subscription cache can filled course-at-a-time.
  */
 public function test_discussion_subscription_cache_fill_for_course()
 {
     global $DB;
     $this->resetAfterTest(true);
     // Create a course, with a quora.
     $course = $this->getDataGenerator()->create_course();
     // Create the quoras.
     $options = array('course' => $course->id, 'forcesubscribe' => FORUM_DISALLOWSUBSCRIBE);
     $disallowquora = $this->getDataGenerator()->create_module('quora', $options);
     $options = array('course' => $course->id, 'forcesubscribe' => FORUM_CHOOSESUBSCRIBE);
     $choosequora = $this->getDataGenerator()->create_module('quora', $options);
     $options = array('course' => $course->id, 'forcesubscribe' => FORUM_INITIALSUBSCRIBE);
     $initialquora = $this->getDataGenerator()->create_module('quora', $options);
     // Create some users and keep a reference to the first user.
     $users = $this->helper_create_users($course, 20);
     $user = reset($users);
     // Reset the subscription caches.
     \mod_quora\subscriptions::reset_quora_cache();
     $startcount = $DB->perf_get_reads();
     $result = \mod_quora\subscriptions::fill_subscription_cache_for_course($course->id, $user->id);
     $this->assertNull($result);
     $postfillcount = $DB->perf_get_reads();
     $this->assertEquals(1, $postfillcount - $startcount);
     $this->assertFalse(\mod_quora\subscriptions::fetch_subscription_cache($disallowquora->id, $user->id));
     $this->assertFalse(\mod_quora\subscriptions::fetch_subscription_cache($choosequora->id, $user->id));
     $this->assertTrue(\mod_quora\subscriptions::fetch_subscription_cache($initialquora->id, $user->id));
     $finalcount = $DB->perf_get_reads();
     $this->assertEquals(0, $finalcount - $postfillcount);
     // Test for all users.
     foreach ($users as $user) {
         $result = \mod_quora\subscriptions::fill_subscription_cache_for_course($course->id, $user->id);
         $this->assertFalse(\mod_quora\subscriptions::fetch_subscription_cache($disallowquora->id, $user->id));
         $this->assertFalse(\mod_quora\subscriptions::fetch_subscription_cache($choosequora->id, $user->id));
         $this->assertTrue(\mod_quora\subscriptions::fetch_subscription_cache($initialquora->id, $user->id));
     }
     $finalcount = $DB->perf_get_reads();
     $this->assertEquals(count($users), $finalcount - $postfillcount);
 }