11<?php
2-
2+ /**
3+ * Tests for Twitter Embeds.
4+ *
5+ * @package AMP
6+ */
7+
8+ /**
9+ * Class AMP_Twitter_Embed_Handler_Test
10+ *
11+ * @covers AMP_Twitter_Embed_Handler
12+ */
313class AMP_Twitter_Embed_Test extends WP_UnitTestCase {
14+
15+ /**
16+ * Get conversion data.
17+ *
18+ * @return array
19+ */
420 public function get_conversion_data () {
521 return [
622 'no_embed ' => [
@@ -9,28 +25,34 @@ public function get_conversion_data() {
925 ],
1026 'url_simple ' => [
1127 'https://twitter.com/wordpress/status/987437752164737025 ' . PHP_EOL ,
12- '<p><amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"></amp-twitter></p> ' . PHP_EOL ,
28+ '<p><amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"> ' ,
29+ "</amp-twitter></p> \n" ,
1330 ],
1431 'url_with_big_tweet_id ' => [
1532 'https://twitter.com/wordpress/status/705219971425574912 ' . PHP_EOL ,
16- '<p><amp-twitter data-tweetid="705219971425574912" layout="responsive" width="600" height="480"></amp-twitter></p> ' . PHP_EOL ,
33+ '<p><amp-twitter data-tweetid="705219971425574912" layout="responsive" width="600" height="480"> ' ,
34+ "</amp-twitter></p> \n" ,
1735 ],
1836
1937 'timeline_url_with_profile ' => [
2038 'https://twitter.com/wordpress ' . PHP_EOL ,
21- '<p><amp-twitter data-timeline-source-type="profile" data-timeline-screen-name="wordpress" layout="responsive" width="600" height="480"></amp-twitter></p> ' . PHP_EOL ,
39+ '<p><amp-twitter data-timeline-source-type="profile" data-timeline-screen-name="wordpress" layout="responsive" width="600" height="480"> ' ,
40+ "</amp-twitter></p> \n" ,
2241 ],
2342 'timeline_url_with_likes ' => [
2443 'https://twitter.com/wordpress/likes ' . PHP_EOL ,
25- '<p><amp-twitter data-timeline-source-type="likes" data-timeline-screen-name="wordpress" layout="responsive" width="600" height="480"></amp-twitter></p> ' . PHP_EOL ,
44+ '<p><amp-twitter data-timeline-source-type="likes" data-timeline-screen-name="wordpress" layout="responsive" width="600" height="480"> ' ,
45+ "</amp-twitter></p> \n" ,
2646 ],
2747 'timeline_url_with_list ' => [
2848 'https://twitter.com/wordpress/lists/random_list ' . PHP_EOL ,
29- '<p><amp-twitter data-timeline-source-type="list" data-timeline-slug="random_list" data-timeline-owner-screen-name="wordpress" layout="responsive" width="600" height="480"></amp-twitter></p> ' . PHP_EOL ,
49+ '<p><amp-twitter data-timeline-source-type="list" data-timeline-slug="random_list" data-timeline-owner-screen-name="wordpress" layout="responsive" width="600" height="480"> ' ,
50+ "</amp-twitter></p> \n" ,
3051 ],
3152 'timeline_url_with_list2 ' => [
3253 'https://twitter.com/robertnyman/lists/web-gdes ' . PHP_EOL ,
33- '<p><amp-twitter data-timeline-source-type="list" data-timeline-slug="web-gdes" data-timeline-owner-screen-name="robertnyman" layout="responsive" width="600" height="480"></amp-twitter></p> ' . PHP_EOL ,
54+ '<p><amp-twitter data-timeline-source-type="list" data-timeline-slug="web-gdes" data-timeline-owner-screen-name="robertnyman" layout="responsive" width="600" height="480"> ' ,
55+ "</amp-twitter></p> \n" ,
3456 ],
3557
3658 'shortcode_without_id ' => [
@@ -39,23 +61,28 @@ public function get_conversion_data() {
3961 ],
4062 'shortcode_simple ' => [
4163 '[tweet 987437752164737025] ' . PHP_EOL ,
42- '<amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"></amp-twitter> ' . PHP_EOL ,
64+ '<amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"> ' ,
65+ "</amp-twitter> \n" ,
4366 ],
4467 'shortcode_with_tweet_attribute ' => [
4568 '[tweet tweet=987437752164737025] ' . PHP_EOL ,
46- '<amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"></amp-twitter> ' . PHP_EOL ,
69+ '<amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"> ' ,
70+ "</amp-twitter> \n" ,
4771 ],
4872 'shortcode_with_big_tweet_id ' => [
4973 '[tweet 705219971425574912] ' . PHP_EOL ,
50- '<amp-twitter data-tweetid="705219971425574912" layout="responsive" width="600" height="480"></amp-twitter> ' . PHP_EOL ,
74+ '<amp-twitter data-tweetid="705219971425574912" layout="responsive" width="600" height="480"> ' ,
75+ "</amp-twitter> \n" ,
5176 ],
5277 'shortcode_with_url ' => [
5378 '[tweet https://twitter.com/wordpress/status/987437752164737025] ' . PHP_EOL ,
54- '<amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"></amp-twitter> ' . PHP_EOL ,
79+ '<amp-twitter data-tweetid="987437752164737025" layout="responsive" width="600" height="480"> ' ,
80+ "</amp-twitter> \n" ,
5581 ],
5682 'shortcode_with_url_with_big_tweet_id ' => [
5783 '[tweet https://twitter.com/wordpress/status/705219971425574912] ' . PHP_EOL ,
58- '<amp-twitter data-tweetid="705219971425574912" layout="responsive" width="600" height="480"></amp-twitter> ' . PHP_EOL ,
84+ '<amp-twitter data-tweetid="705219971425574912" layout="responsive" width="600" height="480"> ' ,
85+ "</amp-twitter> \n" ,
5986 ],
6087 'shortcode_with_non_numeric_tweet_id ' => [
6188 '[tweet abcd] ' . PHP_EOL ,
@@ -65,14 +92,22 @@ public function get_conversion_data() {
6592 }
6693
6794 /**
95+ * Test conversion.
96+ *
6897 * @dataProvider get_conversion_data
98+ * @param string $source Source.
99+ * @param string $expected_start Expected start.
100+ * @param string $expected_end Expected end.
69101 */
70- public function test__conversion ( $ source , $ expected ) {
102+ public function test__conversion ( $ source , $ expected_start , $ expected_end = null ) {
71103 $ embed = new AMP_Twitter_Embed_Handler ();
72104 $ embed ->register_embed ();
73105 $ filtered_content = apply_filters ( 'the_content ' , $ source );
74106
75- $ this ->assertEquals ( $ expected , $ filtered_content );
107+ $ this ->assertStringStartsWith ( $ expected_start , $ filtered_content );
108+ if ( $ expected_end ) {
109+ $ this ->assertStringEndsWith ( $ expected_end , $ filtered_content );
110+ }
76111 }
77112
78113 public function get_scripts_data () {
@@ -95,6 +130,7 @@ public function test__get_scripts( $source, $expected ) {
95130 $ embed = new AMP_Twitter_Embed_Handler ();
96131 $ embed ->register_embed ();
97132 $ source = apply_filters ( 'the_content ' , $ source );
133+ $ source = preg_replace ( '#(<amp-twitter.+?>).*?(</amp-twitter>)#s ' , '$1$2 ' , $ source );
98134
99135 $ whitelist_sanitizer = new AMP_Tag_And_Attribute_Sanitizer ( AMP_DOM_Utils::get_dom_from_content ( $ source ) );
100136 $ whitelist_sanitizer ->sanitize ();
@@ -124,8 +160,8 @@ public function get_raw_embed_dataset() {
124160 ],
125161
126162 'blockquote_embed ' => [
127- wpautop ( '<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Celebrate the WordPress 15th Anniversary on May 27 <a href="https://t.co/jv62WkI9lr">https://t.co/jv62WkI9lr</a> <a href="https://t.co/4ZECodSK78">pic.twitter.com/4ZECodSK78</a></p>— WordPress (@WordPress) <a href="https://twitter.com/WordPress/status/987437752164737025?ref_src=twsrc%5Etfw">April 20, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> ' ), // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript, WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine
128- '<amp-twitter width="600" height="480" layout="responsive" data-tweetid="987437752164737025" class="twitter-tweet" data-lang="en"></amp-twitter> ' . "\n\n" ,
163+ wpautop ( '<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Celebrate the WordPress 15th Anniversary on May 27 <a href="https://t.co/jv62WkI9lr">https://t.co/jv62WkI9lr</a> <a href="https://t.co/4ZECodSK78">pic.twitter.com/4ZECodSK78</a></p>-- WordPress (@WordPress) <a href="https://twitter.com/WordPress/status/987437752164737025?ref_src=twsrc%5Etfw">April 20, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> ' ), // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript, WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine
164+ '<amp-twitter width="600" height="480" layout="responsive" data-tweetid="987437752164737025"><blockquote class="twitter-tweet" data-lang="en" placeholder=""><p lang="en" dir="ltr">Celebrate the WordPress 15th Anniversary on May 27 <a href="https://t.co/jv62WkI9lr">https://t.co/jv62WkI9lr</a> <a href="https://t.co/4ZECodSK78">pic.twitter.com/4ZECodSK78</a></p>-- WordPress (@WordPress) <a href="https://twitter.com/WordPress/status/987437752164737025?ref_src=twsrc%5Etfw">April 20, 2018</a></blockquote ></amp-twitter> ' . "\n\n" ,
129165 ],
130166
131167 'blockquote_embed_with_data_conversation ' => [
@@ -139,8 +175,8 @@ public function get_raw_embed_dataset() {
139175 ],
140176
141177 'blockquote_embed_not_autop ' => [
142- '<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Celebrate the WordPress 15th Anniversary on May 27 <a href="https://t.co/jv62WkI9lr">https://t.co/jv62WkI9lr</a> <a href="https://t.co/4ZECodSK78">pic.twitter.com/4ZECodSK78</a></p>— WordPress (@WordPress) <a href="https://twitter.com/WordPress/status/987437752164737025?ref_src=twsrc%5Etfw">April 20, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> ' , // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript, WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine
143- '<amp-twitter width="600" height="480" layout="responsive" data-tweetid="987437752164737025" class="twitter-tweet" data-lang="en"></amp-twitter> ' ,
178+ '<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Celebrate the WordPress 15th Anniversary on May 27 <a href="https://t.co/jv62WkI9lr">https://t.co/jv62WkI9lr</a> <a href="https://t.co/4ZECodSK78">pic.twitter.com/4ZECodSK78</a></p>-- WordPress (@WordPress) <a href="https://twitter.com/WordPress/status/987437752164737025?ref_src=twsrc%5Etfw">April 20, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> ' , // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript, WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine
179+ '<amp-twitter width="600" height="480" layout="responsive" data-tweetid="987437752164737025"><blockquote class="twitter-tweet" data-lang="en" placeholder=""><p lang="en" dir="ltr">Celebrate the WordPress 15th Anniversary on May 27 <a href="https://t.co/jv62WkI9lr">https://t.co/jv62WkI9lr</a> <a href="https://t.co/4ZECodSK78">pic.twitter.com/4ZECodSK78</a></p>-- WordPress (@WordPress) <a href="https://twitter.com/WordPress/status/987437752164737025?ref_src=twsrc%5Etfw">April 20, 2018</a></blockquote ></amp-twitter> ' ,
144180 ],
145181 ];
146182 }
@@ -151,7 +187,7 @@ public function get_raw_embed_dataset() {
151187 * @param string $source Content.
152188 * @param string $expected Expected content.
153189 * @dataProvider get_raw_embed_dataset
154- * @covers AMP_Instagram_Embed_Handler ::sanitize_raw_embeds()
190+ * @covers AMP_Twitter_Embed_Handler ::sanitize_raw_embeds()
155191 */
156192 public function test__raw_embed_sanitizer ( $ source , $ expected ) {
157193 $ dom = AMP_DOM_Utils::get_dom_from_content ( $ source );
0 commit comments