[ Index ] |
PHP Cross Reference of BuddyPress |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * @group groups 5 * @group notifications 6 */ 7 class BP_Tests_Groups_Notifications extends BP_UnitTestCase { 8 protected $filter_fired; 9 protected $current_user; 10 protected $requesting_user_id; 11 protected $group; 12 13 public function setUp() { 14 parent::setUp(); 15 $this->current_user = get_current_user_id(); 16 $this->set_current_user( self::factory()->user->create() ); 17 18 $this->requesting_user_id = self::factory()->user->create(); 19 $this->group = self::factory()->group->create( array( 'status' => 'private' ) ); 20 $this->filter_fired = ''; 21 } 22 23 public function tearDown() { 24 parent::tearDown(); 25 $this->set_current_user( $this->current_user ); 26 } 27 28 /** 29 * @group groups_format_notifications 30 */ 31 public function test_groups_format_notifications_bp_groups_multiple_new_membership_requests_notification() { 32 add_filter( 'bp_groups_multiple_new_membership_requests_notification', array( $this, 'notification_filter_callback' ) ); 33 $n = groups_format_notifications( 'new_membership_request', $this->group, $this->requesting_user_id, 5 ); 34 remove_filter( 'bp_groups_multiple_new_membership_requests_notification', array( $this, 'notification_filter_callback' ) ); 35 36 $this->assertSame( 'bp_groups_multiple_new_membership_requests_notification', $this->filter_fired ); 37 } 38 39 /** 40 * @group groups_format_notifications 41 */ 42 public function test_groups_format_notifications_bp_groups_single_new_membership_request_notification() { 43 add_filter( 'bp_groups_single_new_membership_request_notification', array( $this, 'notification_filter_callback' ) ); 44 $n = groups_format_notifications( 'new_membership_request', $this->group, 0, 1 ); 45 remove_filter( 'bp_groups_single_new_membership_request_notification', array( $this, 'notification_filter_callback' ) ); 46 47 $this->assertSame( 'bp_groups_single_new_membership_request_notification', $this->filter_fired ); 48 } 49 50 /** 51 * @group groups_format_notifications 52 */ 53 public function test_groups_format_notifications_bp_groups_multiple_membership_request_accepted_notification() { 54 add_filter( 'bp_groups_multiple_membership_request_accepted_notification', array( $this, 'notification_filter_callback' ) ); 55 $n = groups_format_notifications( 'membership_request_accepted', $this->group, 0, 5 ); 56 remove_filter( 'bp_groups_multiple_membership_request_accepted_notification', array( $this, 'notification_filter_callback' ) ); 57 58 $this->assertSame( 'bp_groups_multiple_membership_request_accepted_notification', $this->filter_fired ); 59 } 60 61 /** 62 * @group groups_format_notifications 63 */ 64 public function test_groups_format_notifications_bp_groups_single_membership_request_accepted_notification() { 65 add_filter( 'bp_groups_single_membership_request_accepted_notification', array( $this, 'notification_filter_callback' ) ); 66 $n = groups_format_notifications( 'membership_request_accepted', $this->group, 0, 1 ); 67 remove_filter( 'bp_groups_single_membership_request_accepted_notification', array( $this, 'notification_filter_callback' ) ); 68 69 $this->assertSame( 'bp_groups_single_membership_request_accepted_notification', $this->filter_fired ); 70 } 71 72 /** 73 * @group groups_format_notifications 74 */ 75 public function test_groups_format_notifications_bp_groups_multiple_membership_request_rejected_notification() { 76 add_filter( 'bp_groups_multiple_membership_request_rejected_notification', array( $this, 'notification_filter_callback' ) ); 77 $n = groups_format_notifications( 'membership_request_rejected', $this->group, 0, 5 ); 78 remove_filter( 'bp_groups_multiple_membership_request_rejected_notification', array( $this, 'notification_filter_callback' ) ); 79 80 $this->assertSame( 'bp_groups_multiple_membership_request_rejected_notification', $this->filter_fired ); 81 } 82 83 /** 84 * @group groups_format_notifications 85 */ 86 public function test_groups_format_notifications_bp_groups_single_membership_request_rejected_notification() { 87 add_filter( 'bp_groups_single_membership_request_rejected_notification', array( $this, 'notification_filter_callback' ) ); 88 $n = groups_format_notifications( 'membership_request_rejected', $this->group, 0, 1 ); 89 remove_filter( 'bp_groups_single_membership_request_rejected_notification', array( $this, 'notification_filter_callback' ) ); 90 91 $this->assertSame( 'bp_groups_single_membership_request_rejected_notification', $this->filter_fired ); 92 } 93 94 /** 95 * @group groups_format_notifications 96 */ 97 public function test_groups_format_notifications_bp_groups_multiple_member_promoted_to_admin_notification() { 98 add_filter( 'bp_groups_multiple_member_promoted_to_admin_notification', array( $this, 'notification_filter_callback' ) ); 99 $n = groups_format_notifications( 'member_promoted_to_admin', $this->group, 0, 5 ); 100 remove_filter( 'bp_groups_multiple_member_promoted_to_admin_notification', array( $this, 'notification_filter_callback' ) ); 101 102 $this->assertSame( 'bp_groups_multiple_member_promoted_to_admin_notification', $this->filter_fired ); 103 } 104 105 /** 106 * @group groups_format_notifications 107 */ 108 public function test_groups_format_notifications_bp_groups_single_member_promoted_to_admin_notification() { 109 add_filter( 'bp_groups_single_member_promoted_to_admin_notification', array( $this, 'notification_filter_callback' ) ); 110 $n = groups_format_notifications( 'member_promoted_to_admin', $this->group, 0, 1 ); 111 remove_filter( 'bp_groups_single_member_promoted_to_admin_notification', array( $this, 'notification_filter_callback' ) ); 112 113 $this->assertSame( 'bp_groups_single_member_promoted_to_admin_notification', $this->filter_fired ); 114 } 115 116 /** 117 * @group groups_format_notifications 118 */ 119 public function test_groups_format_notifications_bp_groups_multiple_member_promoted_to_mod_notification() { 120 add_filter( 'bp_groups_multiple_member_promoted_to_mod_notification', array( $this, 'notification_filter_callback' ) ); 121 $n = groups_format_notifications( 'member_promoted_to_mod', $this->group, 0, 5 ); 122 remove_filter( 'bp_groups_multiple_member_promoted_to_mod_notification', array( $this, 'notification_filter_callback' ) ); 123 124 $this->assertSame( 'bp_groups_multiple_member_promoted_to_mod_notification', $this->filter_fired ); 125 } 126 127 /** 128 * @group groups_format_notifications 129 */ 130 public function test_groups_format_notifications_bp_groups_single_member_promoted_to_mod_notification() { 131 add_filter( 'bp_groups_single_member_promoted_to_mod_notification', array( $this, 'notification_filter_callback' ) ); 132 $n = groups_format_notifications( 'member_promoted_to_mod', $this->group, 0, 1 ); 133 remove_filter( 'bp_groups_single_member_promoted_to_mod_notification', array( $this, 'notification_filter_callback' ) ); 134 135 $this->assertSame( 'bp_groups_single_member_promoted_to_mod_notification', $this->filter_fired ); 136 } 137 138 /** 139 * @group groups_format_notifications 140 */ 141 public function test_groups_format_notifications_bp_groups_multiple_group_invite_notification() { 142 add_filter( 'bp_groups_multiple_group_invite_notification', array( $this, 'notification_filter_callback' ) ); 143 $n = groups_format_notifications( 'group_invite', $this->group, 0, 5 ); 144 remove_filter( 'bp_groups_multiple_group_invite_notification', array( $this, 'notification_filter_callback' ) ); 145 146 $this->assertSame( 'bp_groups_multiple_group_invite_notification', $this->filter_fired ); 147 } 148 149 /** 150 * @group groups_format_notifications 151 */ 152 public function test_groups_format_notifications_bp_groups_single_group_invite_notification() { 153 add_filter( 'bp_groups_single_group_invite_notification', array( $this, 'notification_filter_callback' ) ); 154 $n = groups_format_notifications( 'group_invite', $this->group, 0, 1 ); 155 remove_filter( 'bp_groups_single_group_invite_notification', array( $this, 'notification_filter_callback' ) ); 156 157 $this->assertSame( 'bp_groups_single_group_invite_notification', $this->filter_fired ); 158 } 159 160 /** 161 * @group bp_groups_delete_promotion_notifications 162 */ 163 public function test_bp_groups_delete_promotion_notifications() { 164 // Dummy group and user IDs 165 $u = 5; 166 $g = 12; 167 168 // Admin 169 $n = self::factory()->notification->create( array( 170 'component_name' => 'groups', 171 'user_id' => $u, 172 'item_id' => $g, 173 'component_action' => 'member_promoted_to_admin', 174 ) ); 175 176 $notifications = BP_Notifications_Notification::get( array( 177 'user_id' => $u, 178 ) ); 179 180 // Double check it's there 181 $this->assertEquals( array( $n ), wp_list_pluck( $notifications, 'id' ) ); 182 183 // fire the hook 184 do_action( 'groups_demoted_member', $u, $g ); 185 186 $notifications = BP_Notifications_Notification::get( array( 187 'user_id' => $u, 188 ) ); 189 190 $this->assertEmpty( $notifications ); 191 192 // Mod 193 $n = self::factory()->notification->create( array( 194 'component_name' => 'groups', 195 'user_id' => $u, 196 'item_id' => $g, 197 'component_action' => 'member_promoted_to_mod', 198 ) ); 199 200 $notifications = BP_Notifications_Notification::get( array( 201 'user_id' => $u, 202 ) ); 203 204 // Double check it's there 205 $this->assertEquals( array( $n ), wp_list_pluck( $notifications, 'id' ) ); 206 207 // fire the hook 208 do_action( 'groups_demoted_member', $u, $g ); 209 210 $notifications = BP_Notifications_Notification::get( array( 211 'user_id' => $u, 212 ) ); 213 214 $this->assertEmpty( $notifications ); 215 } 216 217 public function notification_filter_callback( $value ) { 218 $this->filter_fired = current_filter(); 219 return $value; 220 } 221 222 /** 223 * @group BP7375 224 */ 225 public function test_membership_request_notifications_should_be_cleared_when_request_is_accepted() { 226 $users = self::factory()->user->create_many( 3 ); 227 228 $this->add_user_to_group( $users[0], $this->group, array( 229 'is_admin' => 1, 230 ) ); 231 $this->add_user_to_group( $users[1], $this->group, array( 232 'is_admin' => 1, 233 ) ); 234 235 groups_send_membership_request( array( 236 'user_id' => $users[2], 237 'group_id' => $this->group 238 ) ); 239 240 // Both admins should get a notification. 241 $get_args = array( 242 'user_id' => $users[0], 243 'item_id' => $this->group, 244 'secondary_item_id' => $users[2], 245 'component_action' => 'new_membership_request', 246 'is_new' => true, 247 ); 248 $u0_notifications = BP_Notifications_Notification::get( $get_args ); 249 $u1_notifications = BP_Notifications_Notification::get( $get_args ); 250 $this->assertNotEmpty( $u0_notifications ); 251 $this->assertNotEmpty( $u1_notifications ); 252 253 groups_accept_membership_request( false, $users[2], $this->group ); 254 255 $u0_notifications = BP_Notifications_Notification::get( $get_args ); 256 $u1_notifications = BP_Notifications_Notification::get( $get_args ); 257 $this->assertEmpty( $u0_notifications ); 258 $this->assertEmpty( $u1_notifications ); 259 } 260 261 public function test_membership_request_notifications_should_be_cleared_when_request_is_accepted_via_invite() { 262 $users = self::factory()->user->create_many( 3 ); 263 264 $this->add_user_to_group( $users[0], $this->group, array( 265 'is_admin' => 1, 266 ) ); 267 $this->add_user_to_group( $users[1], $this->group, array( 268 'is_admin' => 1, 269 ) ); 270 271 groups_send_membership_request( array( 272 'user_id' => $users[2], 273 'group_id' => $this->group 274 ) ); 275 276 // Both admins should get a notification. 277 $get_args = array( 278 'user_id' => $users[0], 279 'item_id' => $this->group, 280 'secondary_item_id' => $users[2], 281 'component_action' => 'new_membership_request', 282 'is_new' => true, 283 ); 284 $u0_notifications = BP_Notifications_Notification::get( $get_args ); 285 $u1_notifications = BP_Notifications_Notification::get( $get_args ); 286 $this->assertNotEmpty( $u0_notifications ); 287 $this->assertNotEmpty( $u1_notifications ); 288 289 // 'Accept' the request by sending an invite. 290 groups_invite_user( array( 291 'user_id' => $users[2], 292 'group_id' => $this->group, 293 'send_invite' => true 294 ) ); 295 296 $u0_notifications = BP_Notifications_Notification::get( $get_args ); 297 $u1_notifications = BP_Notifications_Notification::get( $get_args ); 298 $this->assertEmpty( $u0_notifications ); 299 $this->assertEmpty( $u1_notifications ); 300 } 301 302 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Dec 26 01:01:04 2024 | Cross-referenced by PHPXref 0.7.1 |