Skip to:
Content

BuddyPress.org

Changeset 9258


Ignore:
Timestamp:
12/22/2014 09:50:47 PM (12 years ago)
Author:
r-a-y
Message:

Add unit tests for 'scope' and 'filter_query' arguments for bp_has_activities().

See #4988.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/testcases/activity/template.php

    r9139 r9258  
    9090         *
    9191         * @ticket BP4872
     92         * @group scope
    9293         */
    9394        public function test_bp_has_activities_favorites_action_filter() {
    … …  
    140141                $this->assertEquals( array( $a1 ), $ids );
    141142
     143                $activities_template = null;
     144        }
     145
     146        /**
     147         * @group scope
     148         * @group filter_query
     149         * @group BP_Activity_Query
     150         */
     151        function test_bp_has_activities_mentions_scope() {
     152                $u1 = $this->factory->user->create();
     153                $u2 = $this->factory->user->create();
     154
     155                $now = time();
     156
     157                // mentioned activity item
     158                $mention_username = '@' . bp_activity_get_user_mentionname( $u1 );
     159                $a1 = $this->factory->activity->create( array(
     160                        'user_id' => $u2,
     161                        'type'    => 'activity_update',
     162                        'content' => "{$mention_username} - You rule, dude!",
     163                        'recorded_time' => date( 'Y-m-d H:i:s', $now ),
     164                ) );
     165
     166                // misc activity items
     167                $this->factory->activity->create( array(
     168                        'user_id'   => $u1,
     169                        'component' => 'blogs',
     170                        'item_id'   => 1,
     171                        'type'      => 'new_blog_post',
     172                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     173                ) );
     174                $this->factory->activity->create( array(
     175                        'user_id'   => $u2,
     176                        'component' => 'activity',
     177                        'type'      => 'activity_update',
     178                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     179                ) );
     180                $this->factory->activity->create( array(
     181                        'user_id'   => $u2,
     182                        'component' => 'groups',
     183                        'item_id'   => 324,
     184                        'type'      => 'activity_update',
     185                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     186                ) );
     187
     188                global $activities_template;
     189
     190                // grab activities from multiple scopes
     191                bp_has_activities( array(
     192                        'user_id' => $u1,
     193                        'scope' => 'mentions',
     194                ) );
     195
     196                // assert!
     197                $this->assertEqualSets( array( $a1 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     198
     199                // clean up!
     200                $activities_template = null;
     201        }
     202
     203        /**
     204         * @group scope
     205         * @group filter_query
     206         * @group BP_Activity_Query
     207         */
     208        function test_bp_has_activities_friends_and_mentions_scope() {
     209                $u1 = $this->factory->user->create();
     210                $u2 = $this->factory->user->create();
     211                $u3 = $this->factory->user->create();
     212
     213                // user 1 becomes friends with user 2
     214                friends_add_friend( $u1, $u2, true );
     215
     216                $now = time();
     217
     218                // friend status update
     219                $a1 = $this->factory->activity->create( array(
     220                        'user_id' => $u2,
     221                        'type' => 'activity_update',
     222                        'recorded_time' => date( 'Y-m-d H:i:s', $now ),
     223                ) );
     224
     225                // mentioned item by non-friend
     226                $mention_username = '@' . bp_activity_get_user_mentionname( $u1 );
     227                $a2 = $this->factory->activity->create( array(
     228                        'user_id'   => $u3,
     229                        'component' => 'activity',
     230                        'type'      => 'activity_update',
     231                        'content'   => "{$mention_username} - Oy!",
     232                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     233                ) );
     234
     235                // misc activity items
     236                $this->factory->activity->create( array(
     237                        'user_id'   => $u1,
     238                        'component' => 'blogs',
     239                        'item_id'   => 1,
     240                        'type'      => 'new_blog_post',
     241                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     242                ) );
     243                $this->factory->activity->create( array(
     244                        'user_id'   => $u3,
     245                        'component' => 'activity',
     246                        'type'      => 'activity_update',
     247                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     248                ) );
     249                $this->factory->activity->create( array(
     250                        'user_id'   => $u3,
     251                        'component' => 'groups',
     252                        'item_id'   => 324,
     253                        'type'      => 'activity_update',
     254                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     255                ) );
     256
     257                global $activities_template;
     258
     259                // grab activities from multiple scopes
     260                bp_has_activities( array(
     261                        'user_id' => $u1,
     262                        'scope' => 'mentions,friends',
     263                ) );
     264
     265                // assert!
     266                $this->assertEqualSets( array( $a1, $a2 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     267
     268                // clean up!
     269                $activities_template = null;
     270        }
     271
     272        /**
     273         * @group scope
     274         * @group filter_query
     275         * @group BP_Activity_Query
     276         */
     277        function test_bp_has_activities_groups_and_friends_scope() {
     278                $u1 = $this->factory->user->create();
     279                $u2 = $this->factory->user->create();
     280                $u3 = $this->factory->user->create();
     281
     282                // user 1 becomes friends with user 2
     283                friends_add_friend( $u1, $u2, true );
     284
     285                // user 1 joins a group
     286                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     287                $g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     288
     289                $now = time();
     290
     291                // friend status update
     292                $a1 = $this->factory->activity->create( array(
     293                        'user_id' => $u2,
     294                        'type' => 'activity_update',
     295                        'recorded_time' => date( 'Y-m-d H:i:s', $now ),
     296                ) );
     297
     298                // group activity
     299                $a2 = $this->factory->activity->create( array(
     300                        'user_id'   => $u3,
     301                        'component' => 'groups',
     302                        'item_id'   => $g1,
     303                        'type'      => 'joined_group',
     304                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     305                ) );
     306
     307                // misc activity items
     308                $this->factory->activity->create( array(
     309                        'user_id'   => $u3,
     310                        'component' => 'blogs',
     311                        'item_id'   => 1,
     312                        'type'      => 'new_blog_post',
     313                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     314                ) );
     315                $this->factory->activity->create( array(
     316                        'user_id'   => $u3,
     317                        'component' => 'activity',
     318                        'type'      => 'activity_update',
     319                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     320                ) );
     321                $this->factory->activity->create( array(
     322                        'user_id'   => $u3,
     323                        'component' => 'groups',
     324                        'item_id'   => 324,
     325                        'type'      => 'activity_update',
     326                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     327                ) );
     328
     329                global $activities_template;
     330
     331                // grab activities from multiple scopes
     332                bp_has_activities( array(
     333                        'user_id' => $u1,
     334                        'scope' => 'groups,friends',
     335                ) );
     336
     337                // assert!
     338                $this->assertEqualSets( array( $a1, $a2 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     339
     340                // clean up!
     341                $activities_template = null;
     342        }
     343
     344        /**
     345         * @group filter_query
     346         * @group BP_Activity_Query
     347         */
     348        function test_bp_has_activities_with_filter_query_nested_conditions() {
     349                $u1 = $this->factory->user->create();
     350                $u2 = $this->factory->user->create();
     351                $u3 = $this->factory->user->create();
     352
     353                $now = time();
     354
     355                $a1 = $this->factory->activity->create( array(
     356                        'user_id'   => $u3,
     357                        'component' => 'blogs',
     358                        'item_id'   => 1,
     359                        'type'      => 'new_blog_post',
     360                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     361                ) );
     362                $a2 = $this->factory->activity->create( array(
     363                        'user_id'   => $u2,
     364                        'component' => 'activity',
     365                        'type'      => 'activity_update',
     366                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     367                ) );
     368
     369                // misc activity items
     370                $this->factory->activity->create( array(
     371                        'user_id'   => $u3,
     372                        'component' => 'activity',
     373                        'type'      => 'activity_update',
     374                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     375                ) );
     376                $this->factory->activity->create( array(
     377                        'user_id'   => $u3,
     378                        'component' => 'groups',
     379                        'item_id'   => 324,
     380                        'type'      => 'activity_update',
     381                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     382                ) );
     383
     384                global $activities_template;
     385
     386                bp_has_activities( array(
     387                        'filter_query' => array(
     388                                'relation' => 'OR',
     389                                array(
     390                                        'column' => 'component',
     391                                        'value'  => 'blogs',
     392                                ),
     393                                array(
     394                                        'relation' => 'AND',
     395                                        array(
     396                                                'column' => 'type',
     397                                                'value'  => 'activity_update',
     398                                        ),
     399                                        array(
     400                                                'column' => 'user_id',
     401                                                'value'  => $u2,
     402                                        ),
     403                                ),
     404                        )
     405                ) );
     406
     407                // assert!
     408                $this->assertEqualSets( array( $a1, $a2 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     409
     410                // clean up!
     411                $activities_template = null;
     412        }
     413
     414        /**
     415         * @group filter_query
     416         * @group BP_Activity_Query
     417         */
     418        function test_bp_has_activities_with_filter_query_compare_not_in_operator() {
     419                $u1 = $this->factory->user->create();
     420                $u2 = $this->factory->user->create();
     421                $u3 = $this->factory->user->create();
     422
     423                $now = time();
     424
     425                // misc activity items
     426                $a1 = $this->factory->activity->create( array(
     427                        'user_id'   => $u3,
     428                        'component' => 'blogs',
     429                        'item_id'   => 1,
     430                        'type'      => 'new_blog_post',
     431                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     432                ) );
     433                $a2 = $this->factory->activity->create( array(
     434                        'user_id'   => $u2,
     435                        'component' => 'activity',
     436                        'type'      => 'activity_update',
     437                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     438                ) );
     439                $a3 = $this->factory->activity->create( array(
     440                        'user_id'   => $u3,
     441                        'component' => 'activity',
     442                        'type'      => 'activity_update',
     443                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     444                ) );
     445                $a4 = $this->factory->activity->create( array(
     446                        'user_id'   => $u3,
     447                        'component' => 'groups',
     448                        'item_id'   => 324,
     449                        'type'      => 'activity_update',
     450                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     451                ) );
     452
     453                global $activities_template;
     454
     455                bp_has_activities( array(
     456                        'filter_query' => array(
     457                                array(
     458                                        'column'  => 'id',
     459                                        'compare' => 'NOT IN',
     460                                        'value'   => array( $a1, $a4 ),
     461                                ),
     462                        )
     463                ) );
     464
     465                // assert!
     466                $this->assertEqualSets( array( $a2, $a3 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     467
     468                // clean up!
     469                $activities_template = null;
     470        }
     471
     472        /**
     473         * @group filter_query
     474         * @group BP_Activity_Query
     475         */
     476        function test_bp_has_activities_with_filter_query_compare_between_operator() {
     477                $u1 = $this->factory->user->create();
     478
     479                $now = time();
     480
     481                // misc activity items
     482                $a1 = $this->factory->activity->create( array(
     483                        'user_id'   => $u1,
     484                        'component' => 'blogs',
     485                        'item_id'   => 1,
     486                        'type'      => 'new_blog_post',
     487                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     488                ) );
     489                $a2 = $this->factory->activity->create( array(
     490                        'user_id'   => $u1,
     491                        'component' => 'activity',
     492                        'type'      => 'activity_update',
     493                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     494                ) );
     495                $a3 = $this->factory->activity->create( array(
     496                        'user_id'   => $u1,
     497                        'component' => 'activity',
     498                        'type'      => 'activity_update',
     499                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     500                ) );
     501                $a4 = $this->factory->activity->create( array(
     502                        'user_id'   => $u1,
     503                        'component' => 'groups',
     504                        'item_id'   => 324,
     505                        'type'      => 'activity_update',
     506                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     507                ) );
     508
     509                global $activities_template;
     510
     511                bp_has_activities( array(
     512                        'filter_query' => array(
     513                                array(
     514                                        'column'  => 'id',
     515                                        'compare' => 'BETWEEN',
     516                                        'value'   => array( $a3, $a4 ),
     517                                ),
     518                        )
     519                ) );
     520
     521                // assert!
     522                $this->assertEqualSets( array( $a3, $a4 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     523
     524                // clean up!
     525                $activities_template = null;
     526        }
     527
     528        /**
     529         * @group filter_query
     530         * @group BP_Activity_Query
     531         */
     532        function test_bp_has_activities_with_filter_query_compare_arithmetic_comparisons() {
     533                $u1 = $this->factory->user->create();
     534
     535                $now = time();
     536
     537                // misc activity items
     538                $a1 = $this->factory->activity->create( array(
     539                        'user_id'   => $u1,
     540                        'component' => 'activity',
     541                        'item_id'   => 1,
     542                        'type'      => 'activity_update',
     543                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     544                ) );
     545                $a2 = $this->factory->activity->create( array(
     546                        'user_id'   => $u1,
     547                        'component' => 'activity',
     548                        'item_id'   => 10,
     549                        'type'      => 'activity_update',
     550                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     551                ) );
     552                $a3 = $this->factory->activity->create( array(
     553                        'user_id'   => $u1,
     554                        'component' => 'activity',
     555                        'item_id'   => 25,
     556                        'type'      => 'activity_update',
     557                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     558                ) );
     559                $a4 = $this->factory->activity->create( array(
     560                        'user_id'   => $u1,
     561                        'component' => 'activity',
     562                        'item_id'   => 100,
     563                        'type'      => 'activity_update',
     564                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     565                ) );
     566
     567                global $activities_template;
     568
     569                // greater than
     570                bp_has_activities( array(
     571                        'filter_query' => array(
     572                                array(
     573                                        'column'  => 'item_id',
     574                                        'compare' => '>',
     575                                        'value'   => 10,
     576                                ),
     577                        )
     578                ) );
     579
     580                // assert!
     581                $this->assertEqualSets( array( $a3, $a4 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     582
     583                // greater or equal than
     584                bp_has_activities( array(
     585                        'filter_query' => array(
     586                                array(
     587                                        'column'  => 'item_id',
     588                                        'compare' => '>=',
     589                                        'value'   => 10,
     590                                ),
     591                        )
     592                ) );
     593
     594                // assert!
     595                $this->assertEqualSets( array( $a2, $a3, $a4 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     596
     597                // less than
     598                bp_has_activities( array(
     599                        'filter_query' => array(
     600                                array(
     601                                        'column'  => 'item_id',
     602                                        'compare' => '<',
     603                                        'value'   => 10,
     604                                ),
     605                        )
     606                ) );
     607
     608                // assert!
     609                $this->assertEqualSets( array( $a1 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     610
     611                // less or equal than
     612                bp_has_activities( array(
     613                        'filter_query' => array(
     614                                array(
     615                                        'column'  => 'item_id',
     616                                        'compare' => '<=',
     617                                        'value'   => 10,
     618                                ),
     619                        )
     620                ) );
     621
     622                // assert!
     623                $this->assertEqualSets( array( $a1, $a2 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     624
     625                // not equal to
     626                bp_has_activities( array(
     627                        'filter_query' => array(
     628                                array(
     629                                        'column'  => 'item_id',
     630                                        'compare' => '!=',
     631                                        'value'   => 10,
     632                                ),
     633                        )
     634                ) );
     635
     636                // assert!
     637                $this->assertEqualSets( array( $a1, $a3, $a4 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     638
     639                // clean up!
     640                $activities_template = null;
     641        }
     642
     643        /**
     644         * @group filter_query
     645         * @group BP_Activity_Query
     646         */
     647        function test_bp_has_activities_with_filter_query_compare_regex() {
     648                $u1 = $this->factory->user->create();
     649
     650                $now = time();
     651
     652                // misc activity items
     653                $a1 = $this->factory->activity->create( array(
     654                        'user_id'   => $u1,
     655                        'component' => 'blogs',
     656                        'item_id'   => 1,
     657                        'type'      => 'new_blog_post',
     658                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     659                ) );
     660                $a2 = $this->factory->activity->create( array(
     661                        'user_id'   => $u1,
     662                        'component' => 'blogs',
     663                        'type'      => 'new_blog_comment',
     664                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     665                ) );
     666                $a3 = $this->factory->activity->create( array(
     667                        'user_id'   => $u1,
     668                        'component' => 'activity',
     669                        'type'      => 'activity_update',
     670                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     671                ) );
     672                $a4 = $this->factory->activity->create( array(
     673                        'user_id'   => $u1,
     674                        'component' => 'groups',
     675                        'item_id'   => 324,
     676                        'type'      => 'activity_update',
     677                        'recorded_time' => date( 'Y-m-d H:i:s', $now - 100 ),
     678                ) );
     679
     680                global $activities_template;
     681
     682                // REGEXP
     683                bp_has_activities( array(
     684                        'filter_query' => array(
     685                                array(
     686                                        'column'  => 'type',
     687                                        'compare' => 'REGEXP',
     688                                        'value'   => '^new_blog_',
     689                                ),
     690                        )
     691                ) );
     692
     693                // assert!
     694                $this->assertEqualSets( array( $a1, $a2 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     695
     696                // RLIKE is a synonym for REGEXP
     697                bp_has_activities( array(
     698                        'filter_query' => array(
     699                                array(
     700                                        'column'  => 'type',
     701                                        'compare' => 'RLIKE',
     702                                        'value'   => '^new_blog_',
     703                                ),
     704                        )
     705                ) );
     706
     707                // assert!
     708                $this->assertEqualSets( array( $a1, $a2 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     709
     710                // NOT REGEXP
     711                bp_has_activities( array(
     712                        'filter_query' => array(
     713                                array(
     714                                        'column'  => 'type',
     715                                        'compare' => 'NOT REGEXP',
     716                                        'value'   => '^new_blog_',
     717                                ),
     718                        )
     719                ) );
     720
     721                // assert!
     722                $this->assertEqualSets( array( $a3, $a4 ), wp_list_pluck( $activities_template->activities, 'id' ) );
     723
     724                // clean up!
    142725                $activities_template = null;
    143726        }
Note: See TracChangeset for help on using the changeset viewer.