diff --git src/includes/users/functions.php src/includes/users/functions.php
index b8b40a2..d0c8f39 100644
--- src/includes/users/functions.php
+++ src/includes/users/functions.php
@@ -328,6 +328,8 @@ function bbp_add_user_favorite( $user_id = 0, $topic_id = 0 ) {
 		$favorites[] = $topic_id;
 		$favorites   = implode( ',', wp_parse_id_list( array_filter( $favorites ) ) );
 		update_user_option( $user_id, '_bbp_favorites', $favorites );
+
+		wp_cache_delete( 'bbp_get_topic_favoriters_' . $topic_id, 'bbpress_users' );
 	}

 	do_action( 'bbp_add_user_favorite', $user_id, $topic_id );
@@ -370,6 +372,8 @@ function bbp_remove_user_favorite( $user_id, $topic_id ) {
 		} else {
 			delete_user_option( $user_id, '_bbp_favorites' );
 		}
+
+		wp_cache_delete( 'bbp_get_topic_favoriters_' . $topic_id, 'bbpress_users' );
 	}

 	do_action( 'bbp_remove_user_favorite', $user_id, $topic_id );
diff --git tests/phpunit/testcases/users/functions/favorites.php tests/phpunit/testcases/users/functions/favorites.php
index 912cd9a..6edbc21 100644
--- tests/phpunit/testcases/users/functions/favorites.php
+++ tests/phpunit/testcases/users/functions/favorites.php
@@ -9,87 +9,166 @@
  */
 class BBP_Tests_Users_Functions_Favorites extends BBP_UnitTestCase {

-    /**
-     * @covers ::bbp_get_topic_favoriters
-     * @todo   Implement test_bbp_get_topic_favoriters().
-     */
-    public function test_bbp_get_topic_favoriters()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_user_favorites
-     * @todo   Implement test_bbp_get_user_favorites().
-     */
-    public function test_bbp_get_user_favorites()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_user_favorites_topic_ids
-     * @todo   Implement test_bbp_get_user_favorites_topic_ids().
-     */
-    public function test_bbp_get_user_favorites_topic_ids()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_is_user_favorite
-     * @todo   Implement test_bbp_is_user_favorite().
-     */
-    public function test_bbp_is_user_favorite()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_add_user_favorite
-     * @todo   Implement test_bbp_add_user_favorite().
-     */
-    public function test_bbp_add_user_favorite()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_remove_user_favorite
-     * @todo   Implement test_bbp_remove_user_favorite().
-     */
-    public function test_bbp_remove_user_favorite()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_favorites_handler
-     * @todo   Implement test_bbp_favorites_handler().
-     */
-    public function test_bbp_favorites_handler()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
+	/**
+	 * @covers ::bbp_get_topic_favoriters
+	 */
+	public function test_bbp_get_topic_favoriters() {
+		$u = $this->factory->user->create_many( 3 );
+		$t = $this->factory->topic->create();
+
+		// Add topic favorites.
+		bbp_add_user_favorite( $u[0], $t );
+		bbp_add_user_favorite( $u[1], $t );
+
+		$expected = array( $u[0], $u[1] );
+		$favoriters = bbp_get_topic_favoriters( $t );
+
+		$this->assertEquals( $expected, $favoriters );
+
+		// Add topic favorites.
+		bbp_add_user_favorite( $u[2], $t );
+
+		$expected = array( $u[0], $u[1], $u[2], );
+		$favoriters = bbp_get_topic_favoriters( $t );
+
+		$this->assertEquals( $expected, $favoriters );
+
+		// Remove user favorite.
+		bbp_remove_user_favorite( $u[1], $t );
+
+		$expected = array( $u[0], $u[2], );
+		$favoriters = bbp_get_topic_favoriters( $t );
+
+		$this->assertEquals( $expected, $favoriters );
+	}
+
+	/**
+	 * @covers ::bbp_get_user_favorites
+	 */
+	public function test_bbp_get_user_favorites() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 3 );
+
+		// Add topic favorites.
+		bbp_add_user_favorite( $u, $t[0] );
+		bbp_add_user_favorite( $u, $t[1] );
+		bbp_add_user_favorite( $u, $t[2] );
+
+		$expected = bbp_has_topics( array( 'post__in' => array( $t[0], $t[1], $t[2], ) ) );
+		$favorites = bbp_get_user_favorites( $u );
+
+		$this->assertEquals( $expected, $favorites );
+
+		// Remove user favorite.
+		bbp_remove_user_favorite( $u, $t[1] );
+
+		$expected = bbp_has_topics( array( 'post__in' => array( $t[0], $t[2], ) ) );
+		$favorites = bbp_get_user_favorites( $u );
+
+		$this->assertEquals( $expected, $favorites );
+	}
+
+	/**
+	 * @covers ::bbp_get_user_favorites_topic_ids
+	 */
+	public function test_bbp_get_user_favorites_topic_ids() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 3 );
+
+		// Add topic favorites.
+		bbp_add_user_favorite( $u, $t[0] );
+		bbp_add_user_favorite( $u, $t[1] );
+		bbp_add_user_favorite( $u, $t[2] );
+
+		$favorites = bbp_get_user_favorites_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], $t[1], $t[2], ), $favorites );
+
+		// Remove user favorite.
+		bbp_remove_user_favorite( $u, $t[1] );
+
+		$favorites = bbp_get_user_favorites_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], $t[2], ), $favorites );
+	}
+
+	/**
+	 * @covers ::bbp_is_user_favorite
+	 */
+	public function test_bbp_is_user_favorite() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create();
+
+		$favorite = bbp_is_user_favorite( $u, $t );
+
+		$this->assertFalse( $favorite );
+
+		// Add topic favorite.
+		bbp_add_user_favorite( $u, $t );
+
+		$favorite = bbp_is_user_favorite( $u, $t );
+
+		$this->assertTrue( $favorite );
+	}
+
+	/**
+	 * @covers ::bbp_add_user_favorite
+	 */
+	public function test_bbp_add_user_favorite() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 3 );
+
+		// Add topic favorites.
+		update_user_option( $u, '_bbp_favorites', $t[0] );
+
+		// Add user favorite.
+		bbp_add_user_favorite( $u, $t[1] );
+
+		$favorites = bbp_get_user_favorites_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], $t[1] ), $favorites );
+
+		// Add user favorite.
+		bbp_add_user_favorite( $u, $t[2] );
+
+		$favorites = bbp_get_user_favorites_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], $t[1], $t[2], ), $favorites );
+	}
+
+	/**
+	 * @covers ::bbp_remove_user_favorite
+	 */
+	public function test_bbp_remove_user_favorite() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 3 );
+
+		// Add topic favorites.
+		update_user_option( $u, '_bbp_favorites', implode( ',', $t ) );
+
+		// Remove user favorite.
+		bbp_remove_user_favorite( $u, $t[2] );
+
+		$favorites = bbp_get_user_favorites_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], $t[1], ), $favorites );
+
+		// Remove user favorite.
+		bbp_remove_user_favorite( $u, $t[1] );
+
+		$favorites = bbp_get_user_favorites_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], ), $favorites );
+	}
+
+	/**
+	 * @covers ::bbp_favorites_handler
+	 * @todo   Implement test_bbp_favorites_handler().
+	 */
+	public function test_bbp_favorites_handler() {
+		// Remove the following lines when you implement this test.
+		$this->markTestIncomplete(
+			'This test has not been implemented yet.'
+		);
+	}
 }
diff --git tests/phpunit/testcases/users/functions/subscriptions.php tests/phpunit/testcases/users/functions/subscriptions.php
index 4531bff..df2a830 100644
--- tests/phpunit/testcases/users/functions/subscriptions.php
+++ tests/phpunit/testcases/users/functions/subscriptions.php
@@ -9,219 +9,371 @@
  */
 class BBP_Tests_Users_Functions_Subscriptions extends BBP_UnitTestCase {

-    /**
-     * @covers ::bbp_get_forum_subscribers
-     * @todo   Implement test_bbp_get_forum_subscribers().
-     */
-    public function test_bbp_get_forum_subscribers()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_topic_subscribers
-     * @todo   Implement test_bbp_get_topic_subscribers().
-     */
-    public function test_bbp_get_topic_subscribers()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_user_subscriptions
-     * @todo   Implement test_bbp_get_user_subscriptions().
-     */
-    public function test_bbp_get_user_subscriptions()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_user_topic_subscriptions
-     * @todo   Implement test_bbp_get_user_topic_subscriptions().
-     */
-    public function test_bbp_get_user_topic_subscriptions()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_user_forum_subscriptions
-     * @todo   Implement test_bbp_get_user_forum_subscriptions().
-     */
-    public function test_bbp_get_user_forum_subscriptions()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_user_subscribed_forum_ids
-     * @todo   Implement test_bbp_get_user_subscribed_forum_ids().
-     */
-    public function test_bbp_get_user_subscribed_forum_ids()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_get_user_subscribed_topic_ids
-     * @todo   Implement test_bbp_get_user_subscribed_topic_ids().
-     */
-    public function test_bbp_get_user_subscribed_topic_ids()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_is_user_subscribed
-     * @todo   Implement test_bbp_is_user_subscribed().
-     */
-    public function test_bbp_is_user_subscribed()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_is_user_subscribed_to_forum
-     * @todo   Implement test_bbp_is_user_subscribed_to_forum().
-     */
-    public function test_bbp_is_user_subscribed_to_forum()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_is_user_subscribed_to_topic
-     * @todo   Implement test_bbp_is_user_subscribed_to_topic().
-     */
-    public function test_bbp_is_user_subscribed_to_topic()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_add_user_subscription
-     * @todo   Implement test_bbp_add_user_subscription().
-     */
-    public function test_bbp_add_user_subscription()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_add_user_forum_subscription
-     * @todo   Implement test_bbp_add_user_forum_subscription().
-     */
-    public function test_bbp_add_user_forum_subscription()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_add_user_topic_subscription
-     * @todo   Implement test_bbp_add_user_topic_subscription().
-     */
-    public function test_bbp_add_user_topic_subscription()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_remove_user_subscription
-     * @todo   Implement test_bbp_remove_user_subscription().
-     */
-    public function test_bbp_remove_user_subscription()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_remove_user_forum_subscription
-     * @todo   Implement test_bbp_remove_user_forum_subscription().
-     */
-    public function test_bbp_remove_user_forum_subscription()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_remove_user_topic_subscription
-     * @todo   Implement test_bbp_remove_user_topic_subscription().
-     */
-    public function test_bbp_remove_user_topic_subscription()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_forum_subscriptions_handler
-     * @todo   Implement test_bbp_forum_subscriptions_handler().
-     */
-    public function test_bbp_forum_subscriptions_handler()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
-
-    /**
-     * @covers ::bbp_subscriptions_handler
-     * @todo   Implement test_bbp_subscriptions_handler().
-     */
-    public function test_bbp_subscriptions_handler()
-    {
-        // Remove the following lines when you implement this test.
-        $this->markTestIncomplete(
-            'This test has not been implemented yet.'
-        );
-    }
+	/**
+	 * @covers ::bbp_get_forum_subscribers
+	 */
+	public function test_bbp_get_forum_subscribers() {
+		$u = $this->factory->user->create_many( 3 );
+		$f = $this->factory->forum->create_many( 2 );
+
+		// Add forum subscription
+		bbp_add_user_forum_subscription( $u[0], $f[0] );
+		bbp_add_user_forum_subscription( $u[1], $f[0] );
+		bbp_add_user_forum_subscription( $u[2], $f[0] );
+
+		$subscribers = bbp_get_forum_subscribers( $f[0] );
+
+		$this->assertEquals( array( $u[0], $u[1], $u[2], ), $subscribers );
+
+		// Add forum subscription
+		bbp_add_user_forum_subscription( $u[0], $f[1] );
+		bbp_add_user_forum_subscription( $u[2], $f[1] );
+
+		$subscribers = bbp_get_forum_subscribers( $f[1] );
+
+		$this->assertEquals( array( $u[0], $u[2], ), $subscribers );
+	}
+
+	/**
+	 * @covers ::bbp_get_topic_subscribers
+	 */
+	public function test_bbp_get_topic_subscribers() {
+		$u = $this->factory->user->create_many( 3 );
+		$t = $this->factory->topic->create_many( 2 );
+
+		// Add topic subscriptions
+		bbp_add_user_topic_subscription( $u[0], $t[0] );
+		bbp_add_user_topic_subscription( $u[1], $t[0] );
+		bbp_add_user_topic_subscription( $u[2], $t[0] );
+
+		$subscribers = bbp_get_topic_subscribers( $t[0] );
+
+		$this->assertEquals( array( $u[0], $u[1], $u[2], ), $subscribers );
+
+		// Add topic subscriptions
+		bbp_add_user_topic_subscription( $u[0], $t[1] );
+		bbp_add_user_topic_subscription( $u[2], $t[1] );
+
+		$subscribers = bbp_get_topic_subscribers( $t[1] );
+
+		$this->assertEquals( array( $u[0], $u[2], ), $subscribers );
+	}
+
+	/**
+	 * @covers ::bbp_get_user_subscriptions
+	 * @expectedDeprecated bbp_get_user_subscriptions
+	 */
+	public function test_bbp_get_user_subscriptions() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 3 );
+
+		// Add topic subscriptions
+		bbp_add_user_topic_subscription( $u, $t[0] );
+		bbp_add_user_topic_subscription( $u, $t[1] );
+		bbp_add_user_topic_subscription( $u, $t[2] );
+
+		$expected = bbp_has_topics( array( 'post__in' => array( $t[0], $t[1], $t[2], ) ) );
+		$subscriptions = bbp_get_user_subscriptions( $u );
+
+		$this->assertEquals( $expected, $subscriptions );
+
+		// Remove topic subscription
+		bbp_remove_user_topic_subscription( $u, $t[1] );
+
+		$expected = bbp_has_topics( array( 'post__in' => array( $t[0], $t[2], ) ) );
+		$subscriptions = bbp_get_user_subscriptions( $u );
+
+		$this->assertEquals( $expected, $subscriptions );
+	}
+
+	/**
+	 * @covers ::bbp_get_user_topic_subscriptions
+	 */
+	public function test_bbp_get_user_topic_subscriptions() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 3 );
+
+		// Add topic subscriptions
+		bbp_add_user_topic_subscription( $u, $t[0] );
+		bbp_add_user_topic_subscription( $u, $t[1] );
+		bbp_add_user_topic_subscription( $u, $t[2] );
+
+		$expected = bbp_has_topics( array( 'post__in' => array( $t[0], $t[1], $t[2], ) ) );
+		$subscriptions = bbp_get_user_topic_subscriptions( $u );
+
+		$this->assertEquals( $expected, $subscriptions );
+
+		// Remove topic subscription
+		bbp_remove_user_topic_subscription( $u, $t[1] );
+
+		$expected = bbp_has_topics( array( 'post__in' => array( $t[0], $t[2], ) ) );
+		$subscriptions = bbp_get_user_topic_subscriptions( $u );
+
+		$this->assertEquals( $expected, $subscriptions );
+	}
+
+	/**
+	 * @covers ::bbp_get_user_forum_subscriptions
+	 */
+	public function test_bbp_get_user_forum_subscriptions() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create_many( 3 );
+
+		// Add forum subscriptions
+		bbp_add_user_forum_subscription( $u, $f[0] );
+		bbp_add_user_forum_subscription( $u, $f[1] );
+		bbp_add_user_forum_subscription( $u, $f[2] );
+
+		$expected = bbp_has_forums( array( 'post__in' => array( $f[0], $f[1], $f[2], ) ) );
+		$subscriptions = bbp_get_user_forum_subscriptions( $u );
+
+		$this->assertEquals( $expected, $subscriptions );
+
+		// Remove forum subscription
+		bbp_remove_user_forum_subscription( $u, $f[1] );
+
+		$expected = bbp_has_forums( array( 'post__in' => array( $f[0], $f[2], ) ) );
+		$subscriptions = bbp_get_user_forum_subscriptions( $u );
+
+		$this->assertEquals( $expected, $subscriptions );
+	}
+
+	/**
+	 * @covers ::bbp_get_user_subscribed_forum_ids
+	 */
+	public function test_bbp_get_user_subscribed_forum_ids() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create_many( 3 );
+
+		// Add forum subscriptions
+		bbp_add_user_forum_subscription( $u, $f[0] );
+		bbp_add_user_forum_subscription( $u, $f[1] );
+		bbp_add_user_forum_subscription( $u, $f[2] );
+
+		$subscriptions = bbp_get_user_subscribed_forum_ids( $u );
+
+		$this->assertEquals( array( $f[0], $f[1], $f[2], ), $subscriptions );
+
+		// Remove forum subscription
+		bbp_remove_user_forum_subscription( $u, $f[1] );
+
+		$subscriptions = bbp_get_user_subscribed_forum_ids( $u );
+
+		$this->assertEquals( array( $f[0], $f[2], ), $subscriptions );
+	}
+
+	/**
+	 * @covers ::bbp_get_user_subscribed_topic_ids
+	 */
+	public function test_bbp_get_user_subscribed_topic_ids() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 3 );
+
+		// Add topic subscriptions
+		bbp_add_user_topic_subscription( $u, $t[0] );
+		bbp_add_user_topic_subscription( $u, $t[1] );
+		bbp_add_user_topic_subscription( $u, $t[2] );
+
+		$subscriptions = bbp_get_user_subscribed_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], $t[1], $t[2], ), $subscriptions );
+
+		// Remove topic subscription
+		bbp_remove_user_topic_subscription( $u, $t[1] );
+
+		$subscriptions = bbp_get_user_subscribed_topic_ids( $u );
+
+		$this->assertEquals( array( $t[0], $t[2], ), $subscriptions );
+	}
+
+	/**
+	 * @covers ::bbp_is_user_subscribed
+	 */
+	public function test_bbp_is_user_subscribed() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create_many( 2 );
+		$t = $this->factory->topic->create_many( 2 );
+
+		// Add forum subscription
+		bbp_add_user_forum_subscription( $u, $f[0] );
+
+		$this->assertTrue( bbp_is_user_subscribed( $u, $f[0] ) );
+		$this->assertFalse( bbp_is_user_subscribed( $u, $f[1] ) );
+
+		// Add topic subscription
+		bbp_add_user_topic_subscription( $u, $t[0] );
+
+		$this->assertTrue( bbp_is_user_subscribed( $u, $t[0] ) );
+		$this->assertFalse( bbp_is_user_subscribed( $u, $t[1] ) );
+	}
+
+	/**
+	 * @covers ::bbp_is_user_subscribed_to_forum
+	 */
+	public function test_bbp_is_user_subscribed_to_forum() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create_many( 2 );
+
+		// Add forum subscription
+		bbp_add_user_forum_subscription( $u, $f[0] );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_forum( $u, $f[0] ) );
+		$this->assertFalse( bbp_is_user_subscribed_to_forum( $u, $f[1] ) );
+	}
+
+	/**
+	 * @covers ::bbp_is_user_subscribed_to_topic
+	 */
+	public function test_bbp_is_user_subscribed_to_topic() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create_many( 2 );
+
+		// Add topic subscription
+		bbp_add_user_topic_subscription( $u, $t[0] );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_topic( $u, $t[0] ) );
+		$this->assertFalse( bbp_is_user_subscribed_to_topic( $u, $t[1] ) );
+	}
+
+	/**
+	 * @covers ::bbp_add_user_subscription
+	 */
+	public function test_bbp_add_user_subscription() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create();
+		$t = $this->factory->topic->create( array(
+			'post_parent' => $f,
+			'topic_meta' => array(
+				'forum_id' => $f,
+			),
+		) );
+
+		// Add forum subscription
+		bbp_add_user_subscription( $u, $f );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_forum( $u, $f ) );
+
+		// Add topic subscription
+		bbp_add_user_subscription( $u, $t );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_topic( $u, $t ) );
+	}
+
+	/**
+	 * @covers ::bbp_add_user_forum_subscription
+	 */
+	public function test_bbp_add_user_forum_subscription() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create();
+
+		// Add forum subscription
+		bbp_add_user_forum_subscription( $u, $f );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_forum( $u, $f ) );
+	}
+
+	/**
+	 * @covers ::bbp_add_user_topic_subscription
+	 */
+	public function test_bbp_add_user_topic_subscription() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create();
+
+		// Add forum subscription
+		bbp_add_user_topic_subscription( $u, $t );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_topic( $u, $t ) );
+	}
+
+	/**
+	 * @covers ::bbp_remove_user_subscription
+	 */
+	public function test_bbp_remove_user_subscription() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create();
+		$t = $this->factory->topic->create( array(
+			'post_parent' => $f,
+			'topic_meta' => array(
+				'forum_id' => $f,
+			),
+		) );
+
+		// Add forum subscription
+		bbp_add_user_subscription( $u, $f );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_forum( $u, $f ) );
+
+		// Remove forum subscription
+		bbp_remove_user_subscription( $u, $f );
+
+		$this->assertFalse( bbp_is_user_subscribed_to_forum( $u, $f ) );
+
+		// Add topic subscription
+		bbp_add_user_subscription( $u, $t );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_topic( $u, $t ) );
+
+		// Remove topic subscription
+		bbp_remove_user_subscription( $u, $t );
+
+		$this->assertFalse( bbp_is_user_subscribed_to_topic( $u, $t ) );
+	}
+
+	/**
+	 * @covers ::bbp_remove_user_forum_subscription
+	 */
+	public function test_bbp_remove_user_forum_subscription() {
+		$u = $this->factory->user->create();
+		$f = $this->factory->forum->create();
+
+		// Add forum subscription
+		bbp_add_user_forum_subscription( $u, $f );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_forum( $u, $f ) );
+
+		// Remove forum subscription
+		bbp_remove_user_forum_subscription( $u, $f );
+
+		$this->assertFalse( bbp_is_user_subscribed_to_forum( $u, $f ) );
+	}
+
+	/**
+	 * @covers ::bbp_remove_user_topic_subscription
+	 */
+	public function test_bbp_remove_user_topic_subscription() {
+		$u = $this->factory->user->create();
+		$t = $this->factory->topic->create();
+
+		// Add forum subscription
+		bbp_add_user_topic_subscription( $u, $t );
+
+		$this->assertTrue( bbp_is_user_subscribed_to_topic( $u, $t ) );
+
+		// Remove topic subscription
+		bbp_remove_user_topic_subscription( $u, $t );
+
+		$this->assertFalse( bbp_is_user_subscribed_to_topic( $u, $t ) );
+	}
+
+	/**
+	 * @covers ::bbp_forum_subscriptions_handler
+	 * @todo   Implement test_bbp_forum_subscriptions_handler().
+	 */
+	public function test_bbp_forum_subscriptions_handler() {
+		// Remove the following lines when you implement this test.
+		$this->markTestIncomplete(
+			'This test has not been implemented yet.'
+		);
+	}
+
+	/**
+	 * @covers ::bbp_subscriptions_handler
+	 * @todo   Implement test_bbp_subscriptions_handler().
+	 */
+	public function test_bbp_subscriptions_handler() {
+		// Remove the following lines when you implement this test.
+		$this->markTestIncomplete(
+			'This test has not been implemented yet.'
+		);
+	}
 }
