PageRenderTime 27ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/phpunit/testcases/members/template.php

https://github.com/dxw/buddypress
PHP | 378 lines | 265 code | 65 blank | 48 comment | 0 complexity | e7547d7fc7b8fa67bc30b969c4ccf528 MD5 | raw file
  1. <?php
  2. /**
  3. * @group members
  4. */
  5. class BP_Tests_Members_Template extends BP_UnitTestCase {
  6. protected $old_current_user = 0;
  7. public function setUp() {
  8. parent::setUp();
  9. $this->old_current_user = get_current_user_id();
  10. $new_user = $this->factory->user->create( array( 'role' => 'administrator' ) );
  11. $this->set_current_user( $new_user );
  12. }
  13. public function tearDown() {
  14. parent::tearDown();
  15. $this->set_current_user( $this->old_current_user );
  16. }
  17. public function test_bp_has_members_include_on_user_page() {
  18. $u1 = $this->factory->user->create();
  19. $u2 = $this->factory->user->create();
  20. $this->go_to( bp_core_get_user_domain( $u1 ) );
  21. global $members_template;
  22. bp_has_members( array(
  23. 'include' => array( $u1, $u2 ),
  24. ) );
  25. $users = is_array( $members_template->members ) ? array_values( $members_template->members ) : array();
  26. $user_ids = wp_list_pluck( $users, 'ID' );
  27. sort( $user_ids );
  28. $shouldbe = array( $u1, $u2 );
  29. sort( $shouldbe );
  30. $this->assertEquals( $user_ids, $shouldbe );
  31. }
  32. /**
  33. * @ticket BP5898
  34. * @group bp_has_members
  35. */
  36. public function test_bp_has_members_search_pagination_with_spaces() {
  37. $u1 = $this->factory->user->create( array( 'display_name' => '~ tilde u1' ) );
  38. $u2 = $this->factory->user->create( array( 'display_name' => '~ tilde u2' ) );
  39. $template_args = array(
  40. 'search_terms' => '~ tilde',
  41. 'per_page' => 1,
  42. );
  43. global $members_template;
  44. $reset_members_template = $members_template;
  45. bp_has_members( $template_args );
  46. preg_match( '/&#038;s=(.*)\'/', $members_template->pag_links, $matches );
  47. $this->assertEquals( urldecode( $matches[1] ), urldecode( $template_args['search_terms'] ) );
  48. // reset the members template global
  49. $members_template = $reset_members_template;
  50. }
  51. public function test_bp_has_members_friendship_requests() {
  52. $u1 = $this->factory->user->create();
  53. $u2 = $this->factory->user->create();
  54. friends_add_friend( $u1, $u2 );
  55. $old_user = get_current_user_id();
  56. $this->set_current_user( $u2 );
  57. $this->go_to( bp_core_get_user_domain( $u2 ) . bp_get_friends_slug() . '/requests/' );
  58. $this->restore_admins();
  59. global $members_template;
  60. bp_has_members( array(
  61. 'include' => bp_get_friendship_requests( $u2 ),
  62. ) );
  63. $requests = is_array( $members_template->members ) ? array_values( $members_template->members ) : array();
  64. $request_ids = wp_list_pluck( $requests, 'ID' );
  65. $this->assertEquals( $request_ids, array( $u1 ) );
  66. $this->set_current_user( $old_user );
  67. }
  68. /**
  69. * @group bp_has_members
  70. * @group friends
  71. * @ticket BP5071
  72. */
  73. public function test_bp_has_members_friendship_requests_with_no_requests() {
  74. $u1 = $this->factory->user->create();
  75. $u2 = $this->factory->user->create();
  76. $old_user = get_current_user_id();
  77. $this->set_current_user( $u2 );
  78. // For some reason, in all the user switching, the cache gets
  79. // confused. Never comes up when BP runs normally, because the
  80. // loggedin_user doesn't change on a pageload. @todo Fix for
  81. // real in BP
  82. wp_cache_delete( 'bp_user_domain_' . $u2, 'bp' );
  83. $this->go_to( bp_core_get_user_domain( $u2 ) . bp_get_friends_slug() . '/requests/' );
  84. $this->restore_admins();
  85. global $members_template;
  86. bp_has_members( array(
  87. 'include' => bp_get_friendship_requests( $u2 ),
  88. ) );
  89. $requests = is_array( $members_template->members ) ? array_values( $members_template->members ) : array();
  90. $request_ids = wp_list_pluck( $requests, 'ID' );
  91. $this->assertEquals( array(), $request_ids );
  92. $this->set_current_user( $old_user );
  93. }
  94. /**
  95. * @group bp_has_members
  96. */
  97. public function test_bp_has_members_should_pass_member_type_param_to_query() {
  98. bp_register_member_type( 'foo' );
  99. bp_register_member_type( 'bar' );
  100. $users = $this->factory->user->create_many( 3 );
  101. bp_set_member_type( $users[0], 'foo' );
  102. bp_set_member_type( $users[1], 'bar' );
  103. global $members_template;
  104. $old_members_template = $members_template;
  105. bp_has_members( array(
  106. 'member_type' => 'bar',
  107. ) );
  108. $members = is_array( $members_template->members ) ? array_values( $members_template->members ) : array();
  109. $member_ids = wp_list_pluck( $members, 'ID' );
  110. $this->assertEquals( array( $users[1]), $member_ids );
  111. $GLOBALS['members_template'] = $old_members_template;
  112. }
  113. /**
  114. * @group bp_get_member_last_active
  115. */
  116. public function test_bp_get_member_last_active_default_params() {
  117. // Fake the global
  118. global $members_template;
  119. $time = date( 'Y-m-d H:i:s', time() - 24*60*60 );
  120. $members_template = new stdClass;
  121. $members_template->member = new stdClass;
  122. $members_template->member->last_activity = $time;
  123. $this->assertEquals( bp_core_get_last_activity( $time, __( 'active %s', 'buddypress' ) ), bp_get_member_last_active() );
  124. }
  125. /**
  126. * @group bp_get_member_last_active
  127. */
  128. public function test_bp_get_member_last_active_active_format_true() {
  129. // Fake the global
  130. global $members_template;
  131. $time = date( 'Y-m-d H:i:s', time() - 24*60*60 );
  132. $members_template = new stdClass;
  133. $members_template->member = new stdClass;
  134. $members_template->member->last_activity = $time;
  135. $this->assertEquals( bp_core_get_last_activity( $time, __( 'active %s', 'buddypress' ) ), bp_get_member_last_active( array( 'active_format' => true, ) ) );
  136. }
  137. /**
  138. * @group bp_get_member_last_active
  139. */
  140. public function test_bp_get_member_last_active_active_format_false() {
  141. // Fake the global
  142. global $members_template;
  143. $time = date( 'Y-m-d H:i:s', time() - 24*60*60 );
  144. $members_template = new stdClass;
  145. $members_template->member = new stdClass;
  146. $members_template->member->last_activity = $time;
  147. $this->assertEquals( bp_core_time_since( $time ), bp_get_member_last_active( array( 'active_format' => false, ) ) );
  148. }
  149. /**
  150. * @group pagination
  151. * @group BP_Core_Members_Template
  152. */
  153. public function test_bp_groups_template_should_give_precedence_to_upage_URL_param() {
  154. $request = $_REQUEST;
  155. $_REQUEST['upage'] = '5';
  156. $r = array(
  157. 'type' => 'active',
  158. 'page' => 8,
  159. 'per_page' => 20,
  160. 'max' => false,
  161. 'page_arg' => 'upage',
  162. 'include' => false,
  163. 'exclude' => false,
  164. 'user_id' => 0,
  165. 'member_type' => '',
  166. 'search_terms' => null,
  167. 'meta_key' => false,
  168. 'meta_value' => false,
  169. 'populate_extras' => true,
  170. 'search_terms' => ''
  171. );
  172. $at = new BP_Core_Members_Template(
  173. $r['type'],
  174. $r['page'],
  175. $r['per_page'],
  176. $r['max'],
  177. $r['user_id'],
  178. $r['search_terms'],
  179. $r['include'],
  180. $r['populate_extras'],
  181. $r['exclude'],
  182. $r['meta_key'],
  183. $r['meta_value'],
  184. $r['page_arg'],
  185. $r['member_type']
  186. );
  187. $this->assertEquals( 5, $at->pag_page );
  188. $_REQUEST = $request;
  189. }
  190. /**
  191. * @group pagination
  192. * @group BP_Core_Members_Template
  193. */
  194. public function test_bp_members_template_should_reset_0_pag_page_URL_param_to_default_pag_page_value() {
  195. $request = $_REQUEST;
  196. $_REQUEST['upage'] = '0';
  197. $r = array(
  198. 'type' => 'active',
  199. 'page' => 8,
  200. 'per_page' => 20,
  201. 'max' => false,
  202. 'page_arg' => 'upage',
  203. 'include' => false,
  204. 'exclude' => false,
  205. 'user_id' => 0,
  206. 'member_type' => '',
  207. 'search_terms' => null,
  208. 'meta_key' => false,
  209. 'meta_value' => false,
  210. 'populate_extras' => true,
  211. 'search_terms' => ''
  212. );
  213. $at = new BP_Core_Members_Template(
  214. $r['type'],
  215. $r['page'],
  216. $r['per_page'],
  217. $r['max'],
  218. $r['user_id'],
  219. $r['search_terms'],
  220. $r['include'],
  221. $r['populate_extras'],
  222. $r['exclude'],
  223. $r['meta_key'],
  224. $r['meta_value'],
  225. $r['page_arg'],
  226. $r['member_type']
  227. );
  228. $this->assertEquals( 8, $at->pag_page );
  229. $_REQUEST = $request;
  230. }
  231. /**
  232. * @group pagination
  233. * @group BP_Core_Members_Template
  234. */
  235. public function test_bp_members_template_should_give_precedence_to_num_URL_param() {
  236. $request = $_REQUEST;
  237. $_REQUEST['num'] = '14';
  238. $r = array(
  239. 'type' => 'active',
  240. 'page' => 1,
  241. 'per_page' => 13,
  242. 'max' => false,
  243. 'page_arg' => 'upage',
  244. 'include' => false,
  245. 'exclude' => false,
  246. 'user_id' => 0,
  247. 'member_type' => '',
  248. 'search_terms' => null,
  249. 'meta_key' => false,
  250. 'meta_value' => false,
  251. 'populate_extras' => true,
  252. 'search_terms' => ''
  253. );
  254. $at = new BP_Core_Members_Template(
  255. $r['type'],
  256. $r['page'],
  257. $r['per_page'],
  258. $r['max'],
  259. $r['user_id'],
  260. $r['search_terms'],
  261. $r['include'],
  262. $r['populate_extras'],
  263. $r['exclude'],
  264. $r['meta_key'],
  265. $r['meta_value'],
  266. $r['page_arg'],
  267. $r['member_type']
  268. );
  269. $this->assertEquals( 14, $at->pag_num );
  270. $_REQUEST = $request;
  271. }
  272. /**
  273. * @group pagination
  274. * @group BP_Core_Members_Template
  275. */
  276. public function test_bp_members_template_should_reset_0_pag_num_URL_param_to_default_pag_num_value() {
  277. $request = $_REQUEST;
  278. $_REQUEST['num'] = '0';
  279. $r = array(
  280. 'type' => 'active',
  281. 'page' => 1,
  282. 'per_page' => 13,
  283. 'max' => false,
  284. 'page_arg' => 'upage',
  285. 'include' => false,
  286. 'exclude' => false,
  287. 'user_id' => 0,
  288. 'member_type' => '',
  289. 'search_terms' => null,
  290. 'meta_key' => false,
  291. 'meta_value' => false,
  292. 'populate_extras' => true,
  293. 'search_terms' => ''
  294. );
  295. $at = new BP_Core_Members_Template(
  296. $r['type'],
  297. $r['page'],
  298. $r['per_page'],
  299. $r['max'],
  300. $r['user_id'],
  301. $r['search_terms'],
  302. $r['include'],
  303. $r['populate_extras'],
  304. $r['exclude'],
  305. $r['meta_key'],
  306. $r['meta_value'],
  307. $r['page_arg'],
  308. $r['member_type']
  309. );
  310. $this->assertEquals( 13, $at->pag_num );
  311. $_REQUEST = $request;
  312. }
  313. }