[ Index ]

PHP Cross Reference of BuddyPress

title

Body

[close]

/tests/phpunit/testcases/core/nav/ -> bpCoreMaybeHookNewSubnavScreenFunction.php (source)

   1  <?php
   2  /**
   3   * @group core
   4   * @group nav
   5   */
   6  class BP_Tests_Core_Nav_BpCoreMaybeHookNewSubnavScreenFunction extends BP_UnitTestCase {
   7  
   8      public function test_user_has_access_true_no_callable_function() {
   9          $subnav_item = array(
  10              'user_has_access' => true,
  11              'screen_function' => '123foo456',
  12          );
  13  
  14          $expected = array(
  15              'status' => 'failure',
  16          );
  17  
  18          $this->assertSame( $expected, bp_core_maybe_hook_new_subnav_screen_function( $subnav_item ) );
  19      }
  20  
  21  	public function test_user_has_access_true_callable_function() {
  22          $subnav_item = array(
  23              'user_has_access' => true,
  24              'screen_function' => 'wptexturize', // any old callable function
  25          );
  26  
  27          $expected = array(
  28              'status' => 'success',
  29          );
  30  
  31          $this->assertSame( $expected, bp_core_maybe_hook_new_subnav_screen_function( $subnav_item ) );
  32  
  33          // clean up
  34          remove_action( 'bp_screens', 'wptexturize', 3 );
  35      }
  36  
  37  	public function test_user_has_access_false_user_logged_out() {
  38          $old_current_user = get_current_user_id();
  39          $this->set_current_user( 0 );
  40  
  41          $subnav_item = array(
  42              'user_has_access' => false,
  43          );
  44  
  45          $expected = array(
  46              'status' => 'failure',
  47              'redirect_args' => array(),
  48          );
  49  
  50          $this->assertSame( $expected, bp_core_maybe_hook_new_subnav_screen_function( $subnav_item ) );
  51  
  52          $this->set_current_user( $old_current_user );
  53      }
  54  
  55      public function test_user_has_access_false_user_logged_in_my_profile() {
  56          $u = self::factory()->user->create();
  57          $old_current_user = get_current_user_id();
  58          $this->set_current_user( $u );
  59  
  60          $this->go_to( bp_core_get_user_domain( $u ) );
  61  
  62          $subnav_item = array(
  63              'user_has_access' => false,
  64          );
  65  
  66          // Just test relevant info
  67          $found = bp_core_maybe_hook_new_subnav_screen_function( $subnav_item );
  68          $this->assertSame( 'failure', $found['status'] );
  69          $this->assertSame( bp_core_get_user_domain( $u ), $found['redirect_args']['root'] );
  70  
  71          $this->set_current_user( $old_current_user );
  72      }
  73  
  74      public function test_user_has_access_false_user_logged_in_others_profile_default_component_accessible() {
  75          $u1 = self::factory()->user->create();
  76          $u2 = self::factory()->user->create();
  77          $old_current_user = get_current_user_id();
  78          $this->set_current_user( $u1 );
  79  
  80          $this->go_to( bp_core_get_user_domain( $u2 ) );
  81  
  82          $old_bp_nav = buddypress()->bp_nav;
  83          $old_default_component = buddypress()->default_component;
  84          buddypress()->default_component = 'foo';
  85  
  86          bp_core_new_nav_item( array(
  87              'slug' => 'foo',
  88              'name' => 'Foo',
  89              'screen_function' => 'foo',
  90              'default_subnav_item' => 'bar',
  91          ) );
  92  
  93          $subnav_item = array(
  94              'user_has_access' => false,
  95          );
  96  
  97          // Just test relevant info
  98          $found = bp_core_maybe_hook_new_subnav_screen_function( $subnav_item );
  99  
 100          // Clean up
 101          $this->set_current_user( $old_current_user );
 102          buddypress()->default_component = $old_default_component;
 103          buddypress()->bp_nav = $old_bp_nav;
 104  
 105          $this->assertSame( 'failure', $found['status'] );
 106          $this->assertSame( bp_core_get_user_domain( $u2 ), $found['redirect_args']['root'] );
 107      }
 108  
 109      public function test_user_has_access_false_user_logged_in_others_profile_default_component_not_accessible() {
 110          $u1 = self::factory()->user->create();
 111          $u2 = self::factory()->user->create();
 112          $old_current_user = get_current_user_id();
 113          $this->set_current_user( $u1 );
 114  
 115          $this->go_to( bp_core_get_user_domain( $u2 ) );
 116  
 117          $old_bp_nav = buddypress()->bp_nav;
 118          $old_default_component = buddypress()->default_component;
 119          buddypress()->default_component = 'foo';
 120  
 121          bp_core_new_nav_item( array(
 122              'slug' => 'foo',
 123              'name' => 'Foo',
 124              'screen_function' => 'foo',
 125              'default_subnav_item' => 'bar',
 126              'show_for_displayed_user' => false,
 127          ) );
 128  
 129          $subnav_item = array(
 130              'user_has_access' => false,
 131          );
 132  
 133          // Just test relevant info
 134          $found = bp_core_maybe_hook_new_subnav_screen_function( $subnav_item );
 135  
 136          // Clean up
 137          $this->set_current_user( $old_current_user );
 138          buddypress()->default_component = $old_default_component;
 139          buddypress()->bp_nav = $old_bp_nav;
 140  
 141          $this->assertSame( 'failure', $found['status'] );
 142          $this->assertSame( bp_core_get_user_domain( $u2 ) . bp_get_activity_slug() . '/', $found['redirect_args']['root'] );
 143      }
 144  
 145      public function test_user_has_access_false_user_logged_in_group() {
 146          $u = self::factory()->user->create();
 147          $g = self::factory()->group->create();
 148          $old_current_user = get_current_user_id();
 149          $this->set_current_user( $u );
 150  
 151          $group = groups_get_group( $g );
 152  
 153          $this->go_to( bp_get_group_permalink( $group ) );
 154  
 155          $subnav_item = array(
 156              'user_has_access' => false,
 157              'no_access_url' => bp_get_group_permalink( $group ),
 158          );
 159  
 160          // Just test relevant info
 161          $found = bp_core_maybe_hook_new_subnav_screen_function( $subnav_item );
 162          $this->assertSame( 'failure', $found['status'] );
 163          $this->assertSame( bp_get_group_permalink( $group ), $found['redirect_args']['root'] );
 164  
 165          // Clean up
 166          $this->set_current_user( $old_current_user );
 167      }
 168  
 169      public function test_user_has_access_false_user_logged_in_group_no_redirect_url_provided() {
 170          $u = self::factory()->user->create();
 171          $g = self::factory()->group->create();
 172          $old_current_user = get_current_user_id();
 173          $this->set_current_user( $u );
 174  
 175          $group = groups_get_group( $g );
 176  
 177          $this->go_to( bp_get_group_permalink( $group ) );
 178  
 179          $subnav_item = array(
 180              'user_has_access' => false,
 181          );
 182  
 183          // Just test relevant info
 184          $found = bp_core_maybe_hook_new_subnav_screen_function( $subnav_item );
 185          $this->assertSame( 'failure', $found['status'] );
 186          $this->assertSame( bp_get_root_domain(), $found['redirect_args']['root'] );
 187  
 188          // Clean up
 189          $this->set_current_user( $old_current_user );
 190      }
 191  }


Generated: Thu Nov 21 01:00:57 2024 Cross-referenced by PHPXref 0.7.1