| | 714 | /** |
| | 715 | * @group bp_blogs_record_comment |
| | 716 | * @group unique |
| | 717 | */ |
| | 718 | public function test_bp_blogs_record_comment_no_duplicate_activity_comments() { |
| | 719 | // save the current user and override logged-in user |
| | 720 | $old_user = get_current_user_id(); |
| | 721 | $u = $this->factory->user->create(); |
| | 722 | $this->set_current_user( $u ); |
| | 723 | $userdata = get_userdata( $u ); |
| | 724 | $this->activity_saved_comment_count = 0; |
| | 725 | $this->comment_saved_count = 0; |
| | 726 | |
| | 727 | // let's use activity comments instead of single "new_blog_comment" activity items |
| | 728 | add_filter( 'bp_disable_blogforum_comments', '__return_false' ); |
| | 729 | add_action( 'bp_activity_add', array( $this, 'count_activity_comment_saved' ) ); |
| | 730 | add_action( 'wp_insert_comment', array( $this, 'count_post_comment_saved' ) ); |
| | 731 | add_action( 'edit_comment', array( $this, 'count_post_comment_saved' ) ); |
| | 732 | |
| | 733 | // create the blog post |
| | 734 | $post_id = $this->factory->post->create( array( |
| | 735 | 'post_status' => 'publish', |
| | 736 | 'post_type' => 'post', |
| | 737 | 'post_title' => 'Test Duplicate activity comments', |
| | 738 | ) ); |
| | 739 | |
| | 740 | // grab the activity ID for the activity comment |
| | 741 | $a1 = bp_activity_get_activity_id( array( |
| | 742 | 'type' => 'new_blog_post', |
| | 743 | 'component' => buddypress()->blogs->id, |
| | 744 | 'filter' => array( |
| | 745 | 'item_id' => get_current_blog_id(), |
| | 746 | 'secondary_item_id' => $post_id |
| | 747 | ), |
| | 748 | ) ); |
| | 749 | |
| | 750 | $a2 = bp_activity_new_comment( array( |
| | 751 | 'content' => 'activity comment should be unique', |
| | 752 | 'user_id' => $u, |
| | 753 | 'activity_id' => $a1, |
| | 754 | ) ); |
| | 755 | |
| | 756 | $activities = bp_activity_get( array( |
| | 757 | 'type' => 'activity_comment', |
| | 758 | 'display_comments' => 'stream', |
| | 759 | 'search_terms' => 'activity comment should be unique', |
| | 760 | ) ); |
| | 761 | |
| | 762 | $this->assertTrue( count( $activities['activities'] ) === 1, 'An activity comment should be unique' ); |
| | 763 | |
| | 764 | $this->assertTrue( 2 === $this->activity_saved_comment_count, 'An activity comment should be saved only twice' ); |
| | 765 | $this->assertTrue( 1 === $this->comment_saved_count, 'A comment should be saved only once' ); |
| | 766 | |
| | 767 | // reset |
| | 768 | remove_filter( 'bp_disable_blogforum_comments', '__return_false' ); |
| | 769 | remove_action( 'bp_activity_add', array( $this, 'count_activity_comment_saved' ) ); |
| | 770 | remove_action( 'wp_insert_comment', array( $this, 'count_post_comment_saved' ) ); |
| | 771 | remove_action( 'edit_comment', array( $this, 'count_post_comment_saved' ) ); |
| | 772 | |
| | 773 | $this->activity_saved_comment_count = 0; |
| | 774 | $this->comment_saved_count = 0; |
| | 775 | $this->set_current_user( $old_user ); |
| | 776 | } |
| | 777 | |
| | 778 | public function count_activity_comment_saved() { |
| | 779 | $this->activity_saved_comment_count += 1; |
| | 780 | } |
| | 781 | |
| | 782 | public function count_post_comment_saved() { |
| | 783 | $this->comment_saved_count += 1; |
| | 784 | } |
| | 785 | |