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

HtmlBorderTest::providerBorderStyle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 15
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 17
rs 9.7666
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Reader\Html;
4
5
use PhpOffice\PhpSpreadsheet\Reader\Html;
6
use PhpOffice\PhpSpreadsheet\Style\Border;
7
use PHPUnit\Framework\TestCase;
8
9
class HtmlBorderTest extends TestCase
10
{
11
    public function testCanApplyInlineBordersStyles(): void
12
    {
13
        $html = '<table>
14
                    <tr>
15
                        <td style="border: 1px solid #333333;">Thin border</td>
16
                        <td style="border-bottom: 1px dashed #333333;">Border bottom</td>
17
                        <td style="border-top: 1px solid #333333;">Border top</td>
18
                        <td style="border-left: 1px solid green;">Border left</td>
19
                        <td style="border-right: 1px solid #333333;">Border right</td>
20
                        <td style="border: none"></td>
21
                    </tr>
22
                </table>';
23
        $filename = HtmlHelper::createHtml($html);
24
        $spreadsheet = HtmlHelper::loadHtmlIntoSpreadsheet($filename, true);
25
        $firstSheet = $spreadsheet->getSheet(0);
26
        $style = $firstSheet->getCell('A1')->getStyle();
27
        $borders = $style->getBorders();
28
29
        /** @var Border $border */
30
        foreach ([$borders->getTop(), $borders->getBottom(), $borders->getLeft(), $borders->getRight()] as $border) {
31
            self::assertEquals('333333', $border->getColor()->getRGB());
32
            self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
33
        }
34
35
        $style = $firstSheet->getCell('B1')->getStyle();
36
        $border = $style->getBorders()->getBottom();
37
        self::assertEquals('333333', $border->getColor()->getRGB());
38
        self::assertEquals(Border::BORDER_DASHED, $border->getBorderStyle());
39
        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getTop()->getBorderStyle());
40
41
        $style = $firstSheet->getCell('C1')->getStyle();
42
        $border = $style->getBorders()->getTop();
43
        self::assertEquals('333333', $border->getColor()->getRGB());
44
        self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
45
        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getBottom()->getBorderStyle());
46
47
        $style = $firstSheet->getCell('D1')->getStyle();
48
        $border = $style->getBorders()->getLeft();
49
        self::assertEquals('00ff00', $border->getColor()->getRGB());
50
        self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
51
        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getBottom()->getBorderStyle());
52
53
        $style = $firstSheet->getCell('E1')->getStyle();
54
        $border = $style->getBorders()->getRight();
55
        self::assertEquals('333333', $border->getColor()->getRGB());
56
        self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
57
        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getBottom()->getBorderStyle());
58
59
        $style = $firstSheet->getCell('F1')->getStyle();
60
        $borders = $style->getBorders();
61
        foreach ([$borders->getTop(), $borders->getBottom(), $borders->getLeft(), $borders->getRight()] as $border) {
62
            self::assertEquals(Border::BORDER_NONE, $border->getBorderStyle());
63
        }
64
    }
65
66
    /**
67
     * @dataProvider providerBorderStyle
68
     */
69
    public function testBorderStyle(string $style, string $expectedResult): void
70
    {
71
        $borders = Html::getBorderMappings();
72
        self::assertEquals($expectedResult, $borders[$style]);
73
    }
74
75
    public function testBorderStyleCoverage(): void
76
    {
77
        $expected = Html::getBorderMappings();
78
        $covered = [];
79
        foreach ($expected as $key => $val) {
80
            $covered[$key] = 0;
81
        }
82
        $tests = $this->providerBorderStyle();
83
        foreach ($tests as $test) {
84
            $covered[$test[0]] = 1;
85
        }
86
        foreach ($covered as $key => $val) {
87
            self::assertEquals(1, $val, "Borderstyle $key not tested");
88
        }
89
    }
90
91
    public function providerBorderStyle(): array
92
    {
93
        return [
94
            ['dash-dot', Border::BORDER_DASHDOT],
95
            ['dash-dot-dot', Border::BORDER_DASHDOTDOT],
96
            ['dashed', Border::BORDER_DASHED],
97
            ['dotted', Border::BORDER_DOTTED],
98
            ['double', Border::BORDER_DOUBLE],
99
            ['hair', Border::BORDER_HAIR],
100
            ['medium', Border::BORDER_MEDIUM],
101
            ['medium-dashed', Border::BORDER_MEDIUMDASHED],
102
            ['medium-dash-dot', Border::BORDER_MEDIUMDASHDOT],
103
            ['medium-dash-dot-dot', Border::BORDER_MEDIUMDASHDOTDOT],
104
            ['none', Border::BORDER_NONE],
105
            ['slant-dash-dot', Border::BORDER_SLANTDASHDOT],
106
            ['solid', Border::BORDER_THIN],
107
            ['thick', Border::BORDER_THICK],
108
        ];
109
    }
110
}
111