Failed Conditions
Push — master ( 735103...6a4138 )
by Adrien
12:48
created

HtmlLoadStringTest::testCanLoadFromString()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 28
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 13
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 28
rs 9.8333
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Reader\Html;
4
5
use PhpOffice\PhpSpreadsheet\Reader\Exception as ReaderException;
6
use PhpOffice\PhpSpreadsheet\Reader\Html;
7
use PHPUnit\Framework\TestCase;
8
9
class HtmlLoadStringTest extends TestCase
10
{
11
    public function testCanLoadFromString(): void
12
    {
13
        $html = '<table>
14
                    <tr>
15
                        <td>Hello World</td>
16
                    </tr>
17
                    <tr>
18
                        <td>Hello<br />World</td>
19
                    </tr>
20
                    <tr>
21
                        <td>Hello<br>World</td>
22
                    </tr>
23
                </table>';
24
        $spreadsheet = (new Html())->loadFromString($html);
25
        $firstSheet = $spreadsheet->getSheet(0);
26
27
        $cellStyle = $firstSheet->getStyle('A1');
28
        self::assertFalse($cellStyle->getAlignment()->getWrapText());
29
30
        $cellStyle = $firstSheet->getStyle('A2');
31
        self::assertTrue($cellStyle->getAlignment()->getWrapText());
32
        $cellValue = $firstSheet->getCell('A2')->getValue();
33
        self::assertStringContainsString("\n", $cellValue);
34
35
        $cellStyle = $firstSheet->getStyle('A3');
36
        self::assertTrue($cellStyle->getAlignment()->getWrapText());
37
        $cellValue = $firstSheet->getCell('A3')->getValue();
38
        self::assertStringContainsString("\n", $cellValue);
39
    }
40
41
    public function testLoadInvalidString(): void
42
    {
43
        $this->expectException(ReaderException::class);
44
        $html = '<table<>';
45
        $spreadsheet = (new Html())->loadFromString($html);
46
        $firstSheet = $spreadsheet->getSheet(0);
47
        $cellStyle = $firstSheet->getStyle('A1');
48
        self::assertFalse($cellStyle->getAlignment()->getWrapText());
49
    }
50
51
    public function testCanLoadFromStringIntoExistingSpreadsheet(): void
52
    {
53
        $html = '<table>
54
                    <tr>
55
                        <td>Hello World</td>
56
                    </tr>
57
                    <tr>
58
                        <td>Hello<br />World</td>
59
                    </tr>
60
                    <tr>
61
                        <td>Hello<br>World</td>
62
                    </tr>
63
                </table>';
64
        $reader = new Html();
65
        $spreadsheet = $reader->loadFromString($html);
66
        $firstSheet = $spreadsheet->getSheet(0);
67
68
        $cellStyle = $firstSheet->getStyle('A1');
69
        self::assertFalse($cellStyle->getAlignment()->getWrapText());
70
71
        $cellStyle = $firstSheet->getStyle('A2');
72
        self::assertTrue($cellStyle->getAlignment()->getWrapText());
73
        $cellValue = $firstSheet->getCell('A2')->getValue();
74
        self::assertStringContainsString("\n", $cellValue);
75
76
        $cellStyle = $firstSheet->getStyle('A3');
77
        self::assertTrue($cellStyle->getAlignment()->getWrapText());
78
        $cellValue = $firstSheet->getCell('A3')->getValue();
79
        self::assertStringContainsString("\n", $cellValue);
80
81
        $reader->setSheetIndex(1);
82
        $html = '<table>
83
                    <tr>
84
                        <td>Goodbye World</td>
85
                    </tr>
86
                </table>';
87
88
        self::assertEquals(1, $spreadsheet->getSheetCount());
89
        $spreadsheet = $reader->loadFromString($html, $spreadsheet);
90
        self::assertEquals(2, $spreadsheet->getSheetCount());
91
    }
92
}
93