/tests/phpunit/tests/oembed/getResponseData.php

https://gitlab.com/morganestes/wordpress-develop · PHP · 194 lines · 159 code · 29 blank · 6 comment · 0 complexity · 9d4f30822e303d26b44678ace17043e8 MD5 · raw file

  1. <?php
  2. /**
  3. * @group oembed
  4. */
  5. class Tests_oEmbed_Response_Data extends WP_UnitTestCase {
  6. function test_get_oembed_response_data_non_existent_post() {
  7. $this->assertFalse( get_oembed_response_data( 0, 100 ) );
  8. }
  9. function test_get_oembed_response_data() {
  10. $post = self::factory()->post->create_and_get(
  11. array(
  12. 'post_title' => 'Some Post',
  13. )
  14. );
  15. $data = get_oembed_response_data( $post, 400 );
  16. $this->assertEqualSets(
  17. array(
  18. 'version' => '1.0',
  19. 'provider_name' => get_bloginfo( 'name' ),
  20. 'provider_url' => get_home_url( '/' ),
  21. 'author_name' => get_bloginfo( 'name' ),
  22. 'author_url' => get_home_url( '/' ),
  23. 'title' => 'Some Post',
  24. 'type' => 'rich',
  25. 'width' => 400,
  26. 'height' => 225,
  27. 'html' => get_post_embed_html( 400, 225, $post ),
  28. ), $data
  29. );
  30. }
  31. /**
  32. * Test get_oembed_response_data with an author.
  33. */
  34. function test_get_oembed_response_data_author() {
  35. $user_id = self::factory()->user->create(
  36. array(
  37. 'display_name' => 'John Doe',
  38. )
  39. );
  40. $post = self::factory()->post->create_and_get(
  41. array(
  42. 'post_title' => 'Some Post',
  43. 'post_author' => $user_id,
  44. )
  45. );
  46. $data = get_oembed_response_data( $post, 400 );
  47. $this->assertEqualSets(
  48. array(
  49. 'version' => '1.0',
  50. 'provider_name' => get_bloginfo( 'name' ),
  51. 'provider_url' => get_home_url( '/' ),
  52. 'author_name' => 'John Doe',
  53. 'author_url' => get_author_posts_url( $user_id ),
  54. 'title' => 'Some Post',
  55. 'type' => 'rich',
  56. 'width' => 400,
  57. 'height' => 225,
  58. 'html' => get_post_embed_html( 400, 225, $post ),
  59. ), $data
  60. );
  61. }
  62. function test_get_oembed_response_link() {
  63. remove_filter( 'oembed_response_data', 'get_oembed_response_data_rich' );
  64. $post = self::factory()->post->create_and_get(
  65. array(
  66. 'post_title' => 'Some Post',
  67. )
  68. );
  69. $data = get_oembed_response_data( $post, 600 );
  70. $this->assertEqualSets(
  71. array(
  72. 'version' => '1.0',
  73. 'provider_name' => get_bloginfo( 'name' ),
  74. 'provider_url' => get_home_url( '/' ),
  75. 'author_name' => get_bloginfo( 'name' ),
  76. 'author_url' => get_home_url( '/' ),
  77. 'title' => 'Some Post',
  78. 'type' => 'link',
  79. ), $data
  80. );
  81. add_filter( 'oembed_response_data', 'get_oembed_response_data_rich', 10, 4 );
  82. }
  83. function test_get_oembed_response_data_with_draft_post() {
  84. $post = self::factory()->post->create_and_get(
  85. array(
  86. 'post_status' => 'draft',
  87. )
  88. );
  89. $this->assertFalse( get_oembed_response_data( $post, 100 ) );
  90. }
  91. function test_get_oembed_response_data_with_scheduled_post() {
  92. $post = self::factory()->post->create_and_get(
  93. array(
  94. 'post_status' => 'future',
  95. 'post_date' => strftime( '%Y-%m-%d %H:%M:%S', strtotime( '+1 day' ) ),
  96. )
  97. );
  98. $this->assertFalse( get_oembed_response_data( $post, 100 ) );
  99. }
  100. function test_get_oembed_response_data_with_private_post() {
  101. $post = self::factory()->post->create_and_get(
  102. array(
  103. 'post_status' => 'private',
  104. )
  105. );
  106. $this->assertFalse( get_oembed_response_data( $post, 100 ) );
  107. }
  108. function test_get_oembed_response_data_maxwidth_too_high() {
  109. $post = self::factory()->post->create_and_get();
  110. $data = get_oembed_response_data( $post, 1000 );
  111. $this->assertEquals( 600, $data['width'] );
  112. $this->assertEquals( 338, $data['height'] );
  113. }
  114. function test_get_oembed_response_data_maxwidth_too_low() {
  115. $post = self::factory()->post->create_and_get();
  116. $data = get_oembed_response_data( $post, 100 );
  117. $this->assertEquals( 200, $data['width'] );
  118. $this->assertEquals( 200, $data['height'] );
  119. }
  120. function test_get_oembed_response_data_maxwidth_invalid() {
  121. $post = self::factory()->post->create_and_get();
  122. $data = get_oembed_response_data( $post, '400;" DROP TABLES' );
  123. $this->assertEquals( 400, $data['width'] );
  124. $this->assertEquals( 225, $data['height'] );
  125. $data = get_oembed_response_data( $post, "lol this isn't even a number?!?!?" );
  126. $this->assertEquals( 200, $data['width'] );
  127. $this->assertEquals( 200, $data['height'] );
  128. }
  129. function test_get_oembed_response_data_with_thumbnail() {
  130. $post = self::factory()->post->create_and_get();
  131. $file = DIR_TESTDATA . '/images/canola.jpg';
  132. $attachment_id = self::factory()->attachment->create_object(
  133. $file, $post->ID, array(
  134. 'post_mime_type' => 'image/jpeg',
  135. )
  136. );
  137. set_post_thumbnail( $post, $attachment_id );
  138. $data = get_oembed_response_data( $post, 400 );
  139. $this->assertArrayHasKey( 'thumbnail_url', $data );
  140. $this->assertArrayHasKey( 'thumbnail_width', $data );
  141. $this->assertArrayHasKey( 'thumbnail_height', $data );
  142. $this->assertTrue( 400 >= $data['thumbnail_width'] );
  143. }
  144. function test_get_oembed_response_data_for_attachment() {
  145. $parent = self::factory()->post->create();
  146. $file = DIR_TESTDATA . '/images/canola.jpg';
  147. $post = self::factory()->attachment->create_object(
  148. $file, $parent, array(
  149. 'post_mime_type' => 'image/jpeg',
  150. )
  151. );
  152. $data = get_oembed_response_data( $post, 400 );
  153. $this->assertArrayHasKey( 'thumbnail_url', $data );
  154. $this->assertArrayHasKey( 'thumbnail_width', $data );
  155. $this->assertArrayHasKey( 'thumbnail_height', $data );
  156. $this->assertTrue( 400 >= $data['thumbnail_width'] );
  157. }
  158. }