Code Duplication    Length = 19-29 lines in 4 locations

projects/plugins/jetpack/tests/php/_inc/lib/test-class.jetpack-tweetstorm-helper.php 4 locations

@@ 754-781 (lines=28) @@
751
	/**
752
	 * Test that a sentence which is too long for a single tweet is split into two tweets, at a word break.
753
	 */
754
	public function test_long_sentence() {
755
		$test_content = 'This is 22 characters ';
756
		$blocks       = array(
757
			$this->generateParagraphData( str_repeat( $test_content, 13 ) ),
758
		);
759
760
		$expected_text = array(
761
			str_repeat( $test_content, 12 ) . 'This is 22…',
762
			'…characters',
763
		);
764
765
		$expected_boundaries = array(
766
			$this->generateNormalBoundary( 274, 275, 'content' ),
767
			false,
768
		);
769
770
		$expected_blocks = array(
771
			$blocks,
772
			$blocks,
773
		);
774
775
		$this->assertTweetGenerated(
776
			$blocks,
777
			$expected_text,
778
			$expected_boundaries,
779
			$expected_blocks
780
		);
781
	}
782
783
	/**
784
	 * Test that other space characters will be used when splitting sentences up into words.
@@ 976-1004 (lines=29) @@
973
	/**
974
	 * Test that a list which is too long for a single tweet is split at the end of a list line.
975
	 */
976
	public function test_long_list() {
977
		$test_content = 'This is 22 characters.';
978
979
		$blocks = array(
980
			$this->generateListData( str_repeat( "<li>$test_content</li>", 12 ) ),
981
		);
982
983
		$expected_text = array(
984
			trim( str_repeat( "- $test_content\n", 11 ) ),
985
			"- $test_content",
986
		);
987
988
		$expected_boundaries = array(
989
			$this->generateLineBoundary( 10, 'values' ),
990
			false,
991
		);
992
993
		$expected_blocks = array(
994
			$blocks,
995
			$blocks,
996
		);
997
998
		$this->assertTweetGenerated(
999
			$blocks,
1000
			$expected_text,
1001
			$expected_boundaries,
1002
			$expected_blocks
1003
		);
1004
	}
1005
1006
	/**
1007
	 * Test that a long list will start a new tweet when it's too long to be appended to the previous
@@ 1047-1075 (lines=29) @@
1044
	/**
1045
	 * Test that a range of emoji (including a variety of compound emoji) count as two characters.
1046
	 */
1047
	public function test_emoji_count_as_two_characters() {
1048
		$test_content = 'πŸ™‚ πŸ³οΈβ€πŸŒˆ πŸ‘©β€πŸ‘©β€πŸ‘§β€πŸ‘§ πŸ‘¨πŸΎβ€πŸ¦° πŸ‘©πŸ»β€πŸ’» ';
1049
1050
		$blocks = array(
1051
			$this->generateParagraphData( str_repeat( $test_content, 19 ) ),
1052
		);
1053
1054
		$expected_text = array(
1055
			trim( str_repeat( $test_content, 18 ) ) . ' πŸ™‚ πŸ³οΈβ€πŸŒˆ πŸ‘©β€πŸ‘©β€πŸ‘§β€πŸ‘§β€¦',
1056
			'β€¦πŸ‘¨πŸΎβ€πŸ¦° πŸ‘©πŸ»β€πŸ’»',
1057
		);
1058
1059
		$expected_boundaries = array(
1060
			$this->generateNormalBoundary( 705, 706, 'content' ),
1061
			false,
1062
		);
1063
1064
		$expected_blocks = array(
1065
			$blocks,
1066
			$blocks,
1067
		);
1068
1069
		$this->assertTweetGenerated(
1070
			$blocks,
1071
			$expected_text,
1072
			$expected_boundaries,
1073
			$expected_blocks
1074
		);
1075
	}
1076
1077
	/**
1078
	 * Test that inline images don't show up in the tweet.
@@ 2106-2124 (lines=19) @@
2103
	/**
2104
	 * Test that long URLs don't cause text to break into multiple tweets.
2105
	 */
2106
	public function test_long_links_dont_break_a_paragraph_up() {
2107
		$test_url = 'https://jetpack.com/' . str_repeat( 'a', 280 );
2108
2109
		$test_content  = "It's <a href='$test_url'>a celebration</a>!";
2110
		$expected_text = "It's a celebration ($test_url)!";
2111
2112
		$blocks = array(
2113
			$this->generateParagraphData( $test_content ),
2114
		);
2115
2116
		$expected_content = array(
2117
			array(
2118
				'text' => $expected_text,
2119
				'urls' => array( $test_url ),
2120
			),
2121
		);
2122
2123
		$this->assertTweetGenerated( $blocks, $expected_content, array( false ), array( $blocks ) );
2124
	}
2125
2126
	/**
2127
	 * Test that URLs appearing before and after paragraph breaks are counted correctly.