Mercurial > hg > cmmr2012-drupal-site
comparison core/modules/text/tests/src/Kernel/TextSummaryTest.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Tests\text\Kernel; | |
4 | |
5 use Drupal\KernelTests\KernelTestBase; | |
6 use Drupal\filter\Entity\FilterFormat; | |
7 | |
8 /** | |
9 * Tests text_summary() with different strings and lengths. | |
10 * | |
11 * @group text | |
12 */ | |
13 class TextSummaryTest extends KernelTestBase { | |
14 | |
15 public static $modules = ['system', 'user', 'filter', 'text']; | |
16 | |
17 protected function setUp() { | |
18 parent::setUp(); | |
19 | |
20 $this->installConfig(['text']); | |
21 } | |
22 | |
23 /** | |
24 * Tests an edge case where the first sentence is a question and | |
25 * subsequent sentences are not. This edge case is documented at | |
26 * https://www.drupal.org/node/180425. | |
27 */ | |
28 public function testFirstSentenceQuestion() { | |
29 $text = 'A question? A sentence. Another sentence.'; | |
30 $expected = 'A question? A sentence.'; | |
31 $this->assertTextSummary($text, $expected, NULL, 30); | |
32 } | |
33 | |
34 /** | |
35 * Test summary with long example. | |
36 */ | |
37 public function testLongSentence() { | |
38 // 125. | |
39 $text = | |
40 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' . | |
41 // 108. | |
42 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ' . | |
43 // 103. | |
44 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. ' . | |
45 // 110. | |
46 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'; | |
47 $expected = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' . | |
48 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ' . | |
49 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.'; | |
50 // First three sentences add up to: 336, so add one for space and then 3 to get half-way into next word. | |
51 $this->assertTextSummary($text, $expected, NULL, 340); | |
52 } | |
53 | |
54 /** | |
55 * Test various summary length edge cases. | |
56 */ | |
57 public function testLength() { | |
58 FilterFormat::create([ | |
59 'format' => 'autop', | |
60 'filters' => [ | |
61 'filter_autop' => [ | |
62 'status' => 1, | |
63 ], | |
64 ], | |
65 ])->save(); | |
66 FilterFormat::create([ | |
67 'format' => 'autop_correct', | |
68 'filters' => [ | |
69 'filter_autop' => [ | |
70 'status' => 1, | |
71 ], | |
72 'filter_htmlcorrector' => [ | |
73 'status' => 1, | |
74 ], | |
75 ], | |
76 ])->save(); | |
77 | |
78 // This string tests a number of edge cases. | |
79 $text = "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>"; | |
80 | |
81 // The summaries we expect text_summary() to return when $size is the index | |
82 // of each array item. | |
83 // Using no text format: | |
84 $format = NULL; | |
85 $i = 0; | |
86 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
87 $this->assertTextSummary($text, "<", $format, $i++); | |
88 $this->assertTextSummary($text, "<p", $format, $i++); | |
89 $this->assertTextSummary($text, "<p>", $format, $i++); | |
90 $this->assertTextSummary($text, "<p>\n", $format, $i++); | |
91 $this->assertTextSummary($text, "<p>\nH", $format, $i++); | |
92 $this->assertTextSummary($text, "<p>\nHi", $format, $i++); | |
93 $this->assertTextSummary($text, "<p>\nHi\n", $format, $i++); | |
94 $this->assertTextSummary($text, "<p>\nHi\n<", $format, $i++); | |
95 $this->assertTextSummary($text, "<p>\nHi\n</", $format, $i++); | |
96 $this->assertTextSummary($text, "<p>\nHi\n</p", $format, $i++); | |
97 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
98 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
99 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
100 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
101 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
102 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
103 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
104 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
105 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
106 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
107 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
108 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
109 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
110 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
111 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
112 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
113 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
114 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
115 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
116 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
117 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
118 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
119 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
120 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
121 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
122 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
123 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
124 | |
125 // Using a text format with filter_autop enabled. | |
126 $format = 'autop'; | |
127 $i = 0; | |
128 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
129 $this->assertTextSummary($text, "<", $format, $i++); | |
130 $this->assertTextSummary($text, "<p", $format, $i++); | |
131 $this->assertTextSummary($text, "<p>", $format, $i++); | |
132 $this->assertTextSummary($text, "<p>", $format, $i++); | |
133 $this->assertTextSummary($text, "<p>", $format, $i++); | |
134 $this->assertTextSummary($text, "<p>", $format, $i++); | |
135 $this->assertTextSummary($text, "<p>\nHi", $format, $i++); | |
136 $this->assertTextSummary($text, "<p>\nHi", $format, $i++); | |
137 $this->assertTextSummary($text, "<p>\nHi", $format, $i++); | |
138 $this->assertTextSummary($text, "<p>\nHi", $format, $i++); | |
139 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
140 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
141 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
142 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
143 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
144 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
145 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
146 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
147 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
148 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
149 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
150 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
151 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
152 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
153 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
154 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
155 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
156 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
157 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
158 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
159 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
160 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
161 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
162 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
163 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
164 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
165 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
166 | |
167 // Using a text format with filter_autop and filter_htmlcorrector enabled. | |
168 $format = 'autop_correct'; | |
169 $i = 0; | |
170 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
171 $this->assertTextSummary($text, "", $format, $i++); | |
172 $this->assertTextSummary($text, "<p></p>", $format, $i++); | |
173 $this->assertTextSummary($text, "<p></p>", $format, $i++); | |
174 $this->assertTextSummary($text, "<p></p>", $format, $i++); | |
175 $this->assertTextSummary($text, "<p></p>", $format, $i++); | |
176 $this->assertTextSummary($text, "<p></p>", $format, $i++); | |
177 $this->assertTextSummary($text, "<p>\nHi</p>", $format, $i++); | |
178 $this->assertTextSummary($text, "<p>\nHi</p>", $format, $i++); | |
179 $this->assertTextSummary($text, "<p>\nHi</p>", $format, $i++); | |
180 $this->assertTextSummary($text, "<p>\nHi</p>", $format, $i++); | |
181 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
182 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
183 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
184 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
185 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
186 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
187 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
188 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
189 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
190 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
191 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
192 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
193 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
194 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
195 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
196 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
197 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
198 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
199 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
200 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
201 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
202 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
203 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
204 $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++); | |
205 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
206 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
207 $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++); | |
208 } | |
209 | |
210 /** | |
211 * Test text_summary() returns an empty string without any error when called | |
212 * with an invalid format. | |
213 */ | |
214 public function testInvalidFilterFormat() { | |
215 | |
216 $this->assertTextSummary($this->randomString(100), '', 'non_existent_format'); | |
217 } | |
218 | |
219 /** | |
220 * Calls text_summary() and asserts that the expected teaser is returned. | |
221 */ | |
222 public function assertTextSummary($text, $expected, $format = NULL, $size = NULL) { | |
223 $summary = text_summary($text, $format, $size); | |
224 $this->assertIdentical($summary, $expected, format_string('<pre style="white-space: pre-wrap">@actual</pre> is identical to <pre style="white-space: pre-wrap">@expected</pre>', [ | |
225 '@actual' => $summary, | |
226 '@expected' => $expected, | |
227 ])); | |
228 } | |
229 | |
230 } |