Passed
Pull Request — master (#4224)
by Owen
15:32
created

HtmlTest::testSTag()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 14
c 2
b 0
f 0
dl 0
loc 20
rs 9.7998
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Helper;
6
7
use DOMElement;
8
use PhpOffice\PhpSpreadsheet\Helper\Html;
9
use PHPUnit\Framework\TestCase;
10
11
class HtmlTest extends TestCase
12
{
13
    /**
14
     * @dataProvider providerUtf8EncodingSupport
15
     */
16
    public function testUtf8EncodingSupport(string $expected, string $input): void
17
    {
18
        $html = new Html();
19
        $actual = $html->toRichTextObject($input);
20
21
        self::assertSame($expected, $actual->getPlainText());
22
    }
23
24
    public static function providerUtf8EncodingSupport(): array
25
    {
26
        return [
27
            ['foo', 'foo'],
28
            ['können', 'können'],
29
            ['русский', 'русский'],
30
            ["foo\nbar", '<p>foo</p><p>bar</p>'],
31
            'issue2810' => ['0', '0'],
32
            ["Hello\nItem 1Item 2Goodbye", 'Hello<ul><li>Item 1</li><li>Item 2</li></ul>Goodbye'],
33
        ];
34
    }
35
36
    public function testLiTag(): void
37
    {
38
        $html = new Html();
39
        /** @var callable */
40
        $htmlBreakTag = [Html::class, 'breakTag'];
41
        $html->addStartTagCallback('li', function (DOMElement $tag, Html $object): void {
42
            $object->stringData .= "\u{00A0}\u{2022} \u{00A0}";
43
        });
44
        $html->addEndTagCallback('li', $htmlBreakTag);
45
        $input = 'Hello<ul><li>Item 1</li><li>Item 2</li></ul>Goodbye';
46
        $expected = "Hello\n\u{00A0}\u{2022} \u{00A0}Item 1\n\u{00A0}\u{2022} \u{00A0}Item 2\nGoodbye";
47
        $actual = $html->toRichTextObject($input);
48
49
        self::assertSame($expected, $actual->getPlainText());
50
    }
51
52
    public function testSTag(): void
53
    {
54
        $html = new Html();
55
        $input = 'Hello <s>test</s>world';
56
        $richText = $html->toRichTextObject($input);
57
        $elements = $richText->getRichTextElements();
58
59
        self::assertSame(count($elements), 3);
60
61
        self::assertSame($elements[0]->getText(), 'Hello ');
62
        self::assertNotNull($elements[0]->getFont());
63
        self::assertFalse($elements[0]->getFont()->getStrikethrough());
64
65
        self::assertSame($elements[1]->getText(), 'test');
66
        self::assertNotNull($elements[1]->getFont());
67
        self::assertTrue($elements[1]->getFont()->getStrikethrough());
68
69
        self::assertSame($elements[2]->getText(), 'world');
70
        self::assertNotNull($elements[2]->getFont());
71
        self::assertFalse($elements[2]->getFont()->getStrikethrough());
72
    }
73
}
74