diff --git tests/phpunit/testcases/groups/class-bp-groups-member.php tests/phpunit/testcases/groups/class-bp-groups-member.php
index 062694d..582aa9e 100644
--- tests/phpunit/testcases/groups/class-bp-groups-member.php
+++ tests/phpunit/testcases/groups/class-bp-groups-member.php
@@ -1196,4 +1196,36 @@ class BP_Tests_BP_Groups_Member_TestCases extends BP_UnitTestCase {
 		$members = new BP_Group_Member_Query( array( 'group_id' => $g1 ) );
 		$this->assertEqualSets( array( $u1, $u2, $u3 ), $members->user_ids );
 	}
+
+	/**
+	 * @group group_membership_requests
+	 * @group group_membership
+	 */
+	public function test_groups_accept_membership_request_no_duplicates() {
+		$u1 = $this->factory->user->create();
+		$g1 = $this->factory->group->create();
+
+		// Create membership request
+		groups_send_membership_request( $u1, $g1 );
+
+		/* Hook to the `groups_membership_accepted` action
+		 * to see how many times it's fired.
+		 */
+		add_action( 'groups_membership_accepted', array( $this, 'count_groups_membership_accepted_calls' ) );
+
+		$this->counter = 0;
+
+		groups_accept_membership_request( null, $u1, $g1 );
+		groups_accept_membership_request( null, $u1, $g1 );
+		groups_accept_membership_request( null, $u1, $g1 );
+
+		remove_action( 'groups_membership_accepted', array( $this, 'count_groups_membership_accepted_calls' ) );
+
+		$this->assertEquals( 1, $this->counter );
+		// Clean up.
+		$this->counter = 0;
+	}
+		public function count_groups_membership_accepted_calls() {
+			$this->counter++;
+		}
 }
