Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
12/22/2014 09:50:47 PM (11 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.