|
20 | 20 |
|
21 | 21 | use DateTime; |
22 | 22 | use DOMDocument; |
| 23 | +use DOMNode; |
| 24 | +use DOMNodeList; |
23 | 25 | use DOMXPath; |
24 | 26 | use PhpOffice\PhpWord\Element\Text as TextElement; |
25 | 27 | use PhpOffice\PhpWord\Element\TextRun; |
@@ -200,24 +202,68 @@ public function testWriteTitleTextRun(): void |
200 | 202 | */ |
201 | 203 | public function testListItemRun(): void |
202 | 204 | { |
203 | | - $expected1 = 'List item run 1'; |
204 | | - $expected2 = 'List item run 1 in bold'; |
| 205 | + $expected11 = 'List item run 1.1'; |
| 206 | + $expected11InBold = 'List item run 1.1 in bold'; |
| 207 | + $expected12 = 'List item run 1.2'; |
| 208 | + $expected21 = 'List item run 2.1'; |
| 209 | + $expected22 = 'List item run 2.2'; |
| 210 | + $expected31 = 'List item run 3.1'; |
| 211 | + $expected13 = 'List item run 1.3'; |
205 | 212 |
|
206 | 213 | $phpWord = new PhpWord(); |
207 | 214 | $section = $phpWord->addSection(); |
208 | 215 |
|
209 | | - $listItemRun = $section->addListItemRun(0, null, 'MyParagraphStyle'); |
210 | | - $listItemRun->addText($expected1); |
211 | | - $listItemRun->addText($expected2, ['bold' => true]); |
| 216 | + $listItemRun11 = $section->addListItemRun(0, null, 'MyParagraphStyle'); |
| 217 | + $listItemRun11->addText($expected11); |
| 218 | + $listItemRun11->addText($expected11InBold, ['bold' => true]); |
| 219 | + |
| 220 | + $listItemRun12 = $section->addListItemRun(0); |
| 221 | + $listItemRun12->addText($expected12); |
| 222 | + |
| 223 | + $listItemRun21 = $section->addListItemRun(1); |
| 224 | + $listItemRun21->addText($expected21); |
| 225 | + |
| 226 | + $listItemRun22 = $section->addListItemRun(1); |
| 227 | + $listItemRun22->addText($expected22); |
| 228 | + |
| 229 | + $listItemRun31 = $section->addListItemRun(2); |
| 230 | + $listItemRun31->addText($expected31); |
| 231 | + |
| 232 | + $listItemRun13 = $section->addListItemRun(0); |
| 233 | + $listItemRun13->addText($expected13); |
212 | 234 |
|
213 | 235 | $htmlWriter = new HTML($phpWord); |
214 | 236 | $content = $htmlWriter->getContent(); |
215 | 237 |
|
216 | 238 | $dom = new DOMDocument(); |
217 | 239 | $dom->loadHTML($content); |
218 | 240 |
|
219 | | - self::assertEquals($expected1, $dom->getElementsByTagName('p')->item(0)->textContent); |
220 | | - self::assertEquals($expected2, $dom->getElementsByTagName('p')->item(1)->textContent); |
| 241 | + $xpath = new DOMXPath($dom); |
| 242 | + |
| 243 | + /** @var DOMNodeList<DOMNode> $list */ |
| 244 | + $list = $xpath->query('//body/div/ul/li'); |
| 245 | + |
| 246 | + $item11 = $list->item(0); |
| 247 | + $item12 = $list->item(1); |
| 248 | + $item13 = $list->item(2); |
| 249 | + |
| 250 | + self::assertEquals($expected11, $item11->childNodes->item(0)->textContent); |
| 251 | + self::assertEquals('span', $item11->childNodes->item(1)->nodeName); |
| 252 | + self::assertEquals($expected11InBold, $item11->childNodes->item(1)->textContent); |
| 253 | + |
| 254 | + self::assertEquals($expected12, $item12->childNodes->item(0)->textContent); |
| 255 | + self::assertEquals('ul', $item12->childNodes->item(1)->nodeName); |
| 256 | + |
| 257 | + self::assertEquals($expected21, $item12->childNodes->item(1)->childNodes->item(0)->textContent); |
| 258 | + |
| 259 | + $item22 = $item12->childNodes->item(1)->childNodes->item(1); |
| 260 | + |
| 261 | + self::assertEquals($expected22, $item22->childNodes->item(0)->textContent); |
| 262 | + self::assertEquals('ul', $item22->childNodes->item(1)->nodeName); |
| 263 | + |
| 264 | + self::assertEquals($expected31, $item22->childNodes->item(1)->childNodes->item(0)->textContent); |
| 265 | + |
| 266 | + self::assertEquals($expected13, $item13->childNodes->item(0)->textContent); |
221 | 267 | } |
222 | 268 |
|
223 | 269 | /** |
|
0 commit comments