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

AllOrOneSheetTest::testTcpdfPageBreak()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 21
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 25
rs 9.584
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
4
5
use PhpOffice\PhpSpreadsheet\Spreadsheet;
6
use PhpOffice\PhpSpreadsheet\Writer\Html;
7
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
8
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Tcpdf;
9
use PhpOffice\PhpSpreadsheetTests\Functional;
10
11
class AllOrOneSheetTest extends Functional\AbstractFunctional
12
{
13
    public function testWriteAllSheets()
14
    {
15
        $spreadsheet = new Spreadsheet();
16
        $sheet1 = $spreadsheet->getActiveSheet();
17
        $sheet1->setCellValue('A1', 'first');
18
        $sheet2 = $spreadsheet->createSheet();
19
        $sheet2->setCellValue('A1', 'second');
20
21
        $writer = new Html($spreadsheet);
22
        self::assertFalse($writer->getEmbedImages());
23
        $writer->writeAllSheets();
24
        self::assertTrue($writer->getGenerateSheetNavigationBlock());
25
        $html = $writer->generateHTMLAll();
26
        $dom = new \DOMDocument();
27
        $dom->loadHTML($html);
28
        $body = $dom->getElementsByTagName('body')[0];
29
        $divs = $body->getElementsByTagName('ul'); // sheet navigation
30
        self::assertCount(1, $divs);
31
        $divs = $body->getElementsByTagName('div');
32
        self::assertCount(2, $divs);
33
        self::assertEquals('page: page0', $divs->item(0)->getAttribute('style'));
34
        $tbl = $divs->item(0)->getElementsByTagName('table');
35
        self::assertEquals('sheet0', $tbl->item(0)->getAttribute('id'));
36
        self::assertEquals('sheet0 gridlines', $tbl->item(0)->getAttribute('class'));
37
        $tbl = $divs->item(1)->getElementsByTagName('table');
38
        self::assertEquals('page: page1', $divs->item(1)->getAttribute('style'));
39
        self::assertEquals('sheet1', $tbl->item(0)->getAttribute('id'));
40
        self::assertEquals('sheet1 gridlines', $tbl->item(0)->getAttribute('class'));
41
        $this->writeAndReload($spreadsheet, 'Html');
42
    }
43
44
    public function testWriteAllSheetsNoNav()
45
    {
46
        $spreadsheet = new Spreadsheet();
47
        $sheet1 = $spreadsheet->getActiveSheet();
48
        $sheet1->setCellValue('A1', 'first');
49
        $sheet2 = $spreadsheet->createSheet();
50
        $sheet2->setCellValue('A1', 'second');
51
52
        $writer = new Html($spreadsheet);
53
        $writer->writeAllSheets();
54
        $writer->setGenerateSheetNavigationBlock(false);
55
        $html = $writer->generateHTMLAll();
56
        $dom = new \DOMDocument();
57
        $dom->loadHTML($html);
58
        $body = $dom->getElementsByTagName('body')[0];
59
        $divs = $body->getElementsByTagName('ul'); // sheet navigation
60
        self::assertCount(0, $divs);
61
        $divs = $body->getElementsByTagName('div');
62
        self::assertCount(2, $divs);
63
        self::assertEquals('page: page0', $divs->item(0)->getAttribute('style'));
64
        $tbl = $divs->item(0)->getElementsByTagName('table');
65
        self::assertEquals('sheet0', $tbl->item(0)->getAttribute('id'));
66
        self::assertEquals('sheet0 gridlines', $tbl->item(0)->getAttribute('class'));
67
        $tbl = $divs->item(1)->getElementsByTagName('table');
68
        self::assertEquals('page: page1', $divs->item(1)->getAttribute('style'));
69
        self::assertEquals('sheet1', $tbl->item(0)->getAttribute('id'));
70
        self::assertEquals('sheet1 gridlines', $tbl->item(0)->getAttribute('class'));
71
        $this->writeAndReload($spreadsheet, 'Html');
72
    }
73
74
    public function testWriteAllSheetsPdf()
75
    {
76
        $spreadsheet = new Spreadsheet();
77
        $sheet1 = $spreadsheet->getActiveSheet();
78
        $sheet1->setCellValue('A1', 'first');
79
        $sheet2 = $spreadsheet->createSheet();
80
        $sheet2->setCellValue('A1', 'second');
81
82
        $writer = new Mpdf($spreadsheet);
83
        $writer->writeAllSheets();
84
        $html = $writer->generateHTMLAll();
85
        $dom = new \DOMDocument();
86
        $dom->loadHTML($html);
87
        $body = $dom->getElementsByTagName('body')[0];
88
        $divs = $body->getElementsByTagName('ul'); // sheet navigation
89
        self::assertCount(0, $divs);
90
        $divs = $body->getElementsByTagName('div');
91
        self::assertCount(2, $divs);
92
        self::assertEquals('page: page0', $divs->item(0)->getAttribute('style'));
93
        $tbl = $divs->item(0)->getElementsByTagName('table');
94
        self::assertEquals('sheet0', $tbl->item(0)->getAttribute('id'));
95
        self::assertEquals('sheet0 gridlines', $tbl->item(0)->getAttribute('class'));
96
        $tbl = $divs->item(1)->getElementsByTagName('table');
97
        self::assertEquals('page: page1', $divs->item(1)->getAttribute('style'));
98
        self::assertEquals('sheet1', $tbl->item(0)->getAttribute('id'));
99
        self::assertEquals('sheet1 gridlines', $tbl->item(0)->getAttribute('class'));
100
    }
101
102
    public function testWriteOneSheet()
103
    {
104
        $spreadsheet = new Spreadsheet();
105
        $sheet1 = $spreadsheet->getActiveSheet();
106
        $sheet1->setCellValue('A1', 'first');
107
        $sheet2 = $spreadsheet->createSheet();
108
        $sheet2->setCellValue('A1', 'second');
109
110
        $writer = new Html($spreadsheet);
111
        $writer->setSheetIndex(1);
112
        $html = $writer->generateHTMLAll();
113
        $dom = new \DOMDocument();
114
        $dom->loadHTML($html);
115
        $body = $dom->getElementsByTagName('body')[0];
116
        $divs = $body->getElementsByTagName('ul'); // sheet navigation
117
        self::assertCount(0, $divs);
118
        $divs = $body->getElementsByTagName('div');
119
        self::assertCount(1, $divs);
120
        self::assertEquals('page: page1', $divs->item(0)->getAttribute('style'));
121
        $tbl = $divs->item(0)->getElementsByTagName('table');
122
        self::assertEquals('sheet1', $tbl->item(0)->getAttribute('id'));
123
        self::assertEquals('sheet1 gridlines', $tbl->item(0)->getAttribute('class'));
124
        $this->writeAndReload($spreadsheet, 'Html');
125
    }
126
127
    public function testPageBreak()
128
    {
129
        $spreadsheet = new Spreadsheet();
130
        $sheet = $spreadsheet->getActiveSheet();
131
        $sheet->setShowGridlines(true)->setPrintGridlines(true);
132
        $sheet->setCellValue('A1', 1);
133
        $sheet->setCellValue('A2', 'before page break');
134
        $sheet->setBreak('A2', \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet::BREAK_ROW);
135
        $sheet->setCellValue('A3', 'after page break');
136
        $sheet->setCellValue('A4', 4);
137
        $sheet = $spreadsheet->createSheet();
138
        $sheet->setCellValue('A1', 'new sheet');
139
140
        $writer = new Html($spreadsheet);
141
        $writer->writeAllSheets();
142
143
        $html = $writer->generateHTMLAll();
144
        $dom = new \DOMDocument();
145
        $dom->loadHTML($html);
146
        $body = $dom->getElementsByTagName('body')[0];
147
        $divs = $body->getElementsByTagName('div');
148
        self::assertCount(3, $divs);
149
150
        $sty = $divs[0]->getAttribute('style');
151
        $cls = $divs[0]->getAttribute('class');
152
        self::assertEquals('page: page0', $sty);
153
        self::assertEquals('', $cls);
154
        $sty = $divs[1]->getAttribute('style');
155
        $cls = $divs[1]->getAttribute('class');
156
        self::assertEquals('page: page0', $sty);
157
        self::assertEquals('scrpgbrk', $cls);
158
        $sty = $divs[2]->getAttribute('style');
159
        $cls = $divs[2]->getAttribute('class');
160
        self::assertEquals('page: page1', $sty);
161
        self::assertEquals('', $cls);
162
163
        $this->writeAndReload($spreadsheet, 'Html');
164
    }
165
166
    public function testTcpdfPageBreak()
167
    {
168
        $spreadsheet = new Spreadsheet();
169
        $sheet1 = $spreadsheet->getActiveSheet();
170
        $sheet1->setCellValue('A1', 'First sheet');
171
        $sheet2 = $spreadsheet->createSheet();
172
        $sheet2->setCellValue('A2', 'Second sheet');
173
        $sheet2->setCellValue('A2', 'before page break');
174
        $sheet2->setBreak('A2', \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet::BREAK_ROW);
175
        $sheet2->setCellValue('A3', 'after page break');
176
177
        $writer = new Tcpdf($spreadsheet);
178
        $writer->writeAllSheets();
179
        $html = $writer->generateHtmlAll();
180
        $dom = new \DOMDocument();
181
        $dom->loadHTML($html);
182
        $body = $dom->getElementsByTagName('body')[0];
183
        $divs = $body->getElementsByTagName('div');
184
        self::assertCount(5, $divs);
185
186
        self::assertEquals('page: page0', $divs[0]->getAttribute('style'));
187
        self::assertEquals('page: page1', $divs[2]->getAttribute('style'));
188
        self::assertEquals('page: page1', $divs[4]->getAttribute('style'));
189
        self::assertEquals('page-break-before:always', $divs[1]->getAttribute('style'));
190
        self::assertEquals('page-break-before:always', $divs[3]->getAttribute('style'));
191
    }
192
}
193