getBookmarks.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. /**
  3. * @group bookmark
  4. */
  5. class Tests_Bookmark_GetBookmarks extends WP_UnitTestCase {
  6. public function test_should_hit_cache() {
  7. global $wpdb;
  8. $bookmarks = self::factory()->bookmark->create_many( 2 );
  9. $found1 = get_bookmarks(
  10. array(
  11. 'orderby' => 'link_id',
  12. )
  13. );
  14. $num_queries = $wpdb->num_queries;
  15. $found2 = get_bookmarks(
  16. array(
  17. 'orderby' => 'link_id',
  18. )
  19. );
  20. $this->assertSameSets( $found1, $found2 );
  21. $this->assertSame( $num_queries, $wpdb->num_queries );
  22. }
  23. public function test_adding_bookmark_should_bust_get_bookmarks_cache() {
  24. global $wpdb;
  25. $bookmarks = self::factory()->bookmark->create_many( 2 );
  26. // Prime cache.
  27. $found1 = get_bookmarks(
  28. array(
  29. 'orderby' => 'link_id',
  30. )
  31. );
  32. $num_queries = $wpdb->num_queries;
  33. $bookmarks[] = wp_insert_link(
  34. array(
  35. 'link_name' => 'foo',
  36. 'link_url' => 'http://example.com',
  37. )
  38. );
  39. $found2 = get_bookmarks(
  40. array(
  41. 'orderby' => 'link_id',
  42. )
  43. );
  44. $this->assertEqualSets( $bookmarks, wp_list_pluck( $found2, 'link_id' ) );
  45. $this->assertTrue( $num_queries < $wpdb->num_queries );
  46. }
  47. /**
  48. * @ticket 18356
  49. */
  50. public function test_orderby_rand_should_not_be_cached() {
  51. global $wpdb;
  52. $bookmarks = self::factory()->bookmark->create_many( 2 );
  53. $found1 = get_bookmarks(
  54. array(
  55. 'orderby' => 'rand',
  56. )
  57. );
  58. $num_queries = $wpdb->num_queries;
  59. $found2 = get_bookmarks(
  60. array(
  61. 'orderby' => 'rand',
  62. )
  63. );
  64. // Equal sets != same order.
  65. $this->assertEqualSets( $found1, $found2 );
  66. $this->assertTrue( $num_queries < $wpdb->num_queries );
  67. }
  68. public function test_exclude_param_gets_properly_parsed_as_list() {
  69. $bookmarks = self::factory()->bookmark->create_many( 3 );
  70. $found = get_bookmarks(
  71. array(
  72. 'exclude' => ',,',
  73. )
  74. );
  75. $found_ids = array();
  76. foreach ( $found as $bookmark ) {
  77. $found_ids[] = $bookmark->link_id;
  78. }
  79. // Equal sets != same order.
  80. $this->assertEqualSets( $bookmarks, $found_ids );
  81. }
  82. public function test_include_param_gets_properly_parsed_as_list() {
  83. $bookmarks = self::factory()->bookmark->create_many( 3 );
  84. $found = get_bookmarks(
  85. array(
  86. 'include' => ',,',
  87. )
  88. );
  89. $found_ids = array();
  90. foreach ( $found as $bookmark ) {
  91. $found_ids[] = $bookmark->link_id;
  92. }
  93. // Equal sets != same order.
  94. $this->assertEqualSets( $bookmarks, $found_ids );
  95. }
  96. public function test_category_param_propelry_gets_parsed_as_list() {
  97. $bookmarks = self::factory()->bookmark->create_many( 3 );
  98. $categories = self::factory()->term->create_many(
  99. 3,
  100. array(
  101. 'taxonomy' => 'link_category',
  102. )
  103. );
  104. $add = wp_add_object_terms( $bookmarks[0], $categories[0], 'link_category' );
  105. $add = wp_add_object_terms( $bookmarks[1], $categories[1], 'link_category' );
  106. $add = wp_add_object_terms( $bookmarks[2], $categories[2], 'link_category' );
  107. $found = get_bookmarks(
  108. array(
  109. 'category' => ',,',
  110. )
  111. );
  112. $found_ids = array();
  113. foreach ( $found as $bookmark ) {
  114. $found_ids[] = $bookmark->link_id;
  115. }
  116. // Equal sets != same order.
  117. $this->assertEqualSets( $bookmarks, $found_ids );
  118. }
  119. }