Completed
Push — master ( 4f6d4a...97a80f )
by Adrien
11:15 queued 03:45
created

RepeatedRowsTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 71
c 1
b 0
f 0
dl 0
loc 94
rs 10
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testWriteRepeatsInline() 0 31 2
A testWriteRepeats() 0 29 2
A testWriteNoRepeats() 0 28 2
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
4
5
use PhpOffice\PhpSpreadsheet\Spreadsheet;
6
use PhpOffice\PhpSpreadsheet\Writer\Html;
7
use PhpOffice\PhpSpreadsheetTests\Functional;
8
9
class RepeatedRowsTest extends Functional\AbstractFunctional
10
{
11
    public function testWriteRepeats()
12
    {
13
        $spreadsheet = new Spreadsheet();
14
        $sheet = $spreadsheet->getActiveSheet();
15
        $sheet->getPageSetup()->setRowsToRepeatAtTop([1, 2]);
16
        $sheet->setCellValue('A1', 'Repeat1');
17
        $sheet->setCellValue('A2', 'Repeat2');
18
        for ($row = 3; $row <= 100; ++$row) {
19
            $sheet->setCellValue("A$row", $row);
20
        }
21
22
        $writer = new Html($spreadsheet);
23
        $html = $writer->generateHTMLall();
24
        $dom = new \DOMDocument();
25
        $dom->loadHTML($html);
26
        $body = $dom->getElementsByTagName('body')[0];
27
        $divs = $body->getElementsByTagName('div');
28
        $tbl = $divs->item(0)->getElementsByTagName('table');
29
        self::assertEquals('', $tbl->item(0)->getAttribute('style'));
30
        $thd = $divs->item(0)->getElementsByTagName('thead');
31
        self::assertCount(1, $thd);
32
        $trw = $thd->item(0)->getElementsByTagName('tr');
33
        self::assertCount(2, $trw);
34
        $tbd = $divs->item(0)->getElementsByTagName('tbody');
35
        self::assertCount(1, $tbd);
36
        $trw = $tbd->item(0)->getElementsByTagName('tr');
37
        self::assertCount(98, $trw);
38
39
        $this->writeAndReload($spreadsheet, 'Html');
40
    }
41
42
    public function testWriteNoRepeats()
43
    {
44
        $spreadsheet = new Spreadsheet();
45
        $sheet = $spreadsheet->getActiveSheet();
46
        //$sheet->getPageSetup()->setRowsToRepeatAtTop([1, 2]);
47
        $sheet->setCellValue('A1', 'Repeat1');
48
        $sheet->setCellValue('A2', 'Repeat2');
49
        for ($row = 3; $row <= 100; ++$row) {
50
            $sheet->setCellValue("A$row", $row);
51
        }
52
53
        $writer = new Html($spreadsheet);
54
        $html = $writer->generateHTMLall();
55
        $dom = new \DOMDocument();
56
        $dom->loadHTML($html);
57
        $body = $dom->getElementsByTagName('body')[0];
58
        $divs = $body->getElementsByTagName('div');
59
        $tbl = $divs->item(0)->getElementsByTagName('table');
60
        $thd = $tbl->item(0)->getElementsByTagName('thead');
61
        self::assertCount(0, $thd);
62
        //$trw = $thd->item(0)->getElementsByTagName('tr');
63
        //self::assertCount(2, $trw);
64
        $tbd = $divs->item(0)->getElementsByTagName('tbody');
65
        self::assertCount(1, $tbd);
66
        $trw = $tbd->item(0)->getElementsByTagName('tr');
67
        self::assertCount(100, $trw);
68
69
        $this->writeAndReload($spreadsheet, 'Html');
70
    }
71
72
    public function testWriteRepeatsInline()
73
    {
74
        $spreadsheet = new Spreadsheet();
75
        $sheet = $spreadsheet->getActiveSheet();
76
        $sheet->getPageSetup()->setRowsToRepeatAtTop([1, 2]);
77
        $sheet->setCellValue('A1', 'Repeat1');
78
        $sheet->setCellValue('A2', 'Repeat2');
79
        for ($row = 3; $row <= 100; ++$row) {
80
            $sheet->setCellValue("A$row", $row);
81
        }
82
83
        $writer = new Html($spreadsheet);
84
        self::assertFalse($writer->getUseInlineCss());
85
        $writer->setUseInlineCss(true);
86
        $html = $writer->generateHTMLall();
87
        $dom = new \DOMDocument();
88
        $dom->loadHTML($html);
89
        $body = $dom->getElementsByTagName('body')[0];
90
        $divs = $body->getElementsByTagName('div');
91
        $tbl = $divs->item(0)->getElementsByTagName('table');
92
        self::assertEquals('border-collapse:collapse', $tbl->item(0)->getAttribute('style'));
93
        $thd = $divs->item(0)->getElementsByTagName('thead');
94
        self::assertCount(1, $thd);
95
        $trw = $thd->item(0)->getElementsByTagName('tr');
96
        self::assertCount(2, $trw);
97
        $tbd = $divs->item(0)->getElementsByTagName('tbody');
98
        self::assertCount(1, $tbd);
99
        $trw = $tbd->item(0)->getElementsByTagName('tr');
100
        self::assertCount(98, $trw);
101
102
        $this->writeAndReload($spreadsheet, 'Html');
103
    }
104
}
105