Completed
Push — master ( 321dfc...a90bf8 )
by Adrien
16:05 queued 07:57
created

CallbackTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 30
c 1
b 0
f 0
dl 0
loc 42
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A yellowBody() 0 12 1
A testSetAndReset() 0 26 1
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
4
5
use PhpOffice\PhpSpreadsheet\Shared\File;
6
use PhpOffice\PhpSpreadsheet\Spreadsheet;
7
use PhpOffice\PhpSpreadsheet\Writer\Html;
8
use PhpOffice\PhpSpreadsheetTests\Functional;
9
10
class CallbackTest extends Functional\AbstractFunctional
11
{
12
    public function yellowBody(string $html): string
13
    {
14
        $newstyle = <<<EOF
15
<style type='text/css'>
16
body {
17
    background-color: yellow;
18
}
19
</style>
20
21
EOF;
22
23
        return preg_replace('~</head>~', "$newstyle</head>", $html);
24
    }
25
26
    public function testSetAndReset(): void
27
    {
28
        $spreadsheet = new Spreadsheet();
29
        $sheet = $spreadsheet->getActiveSheet();
30
        $sheet->setCellValue('A1', '1');
31
32
        $writer = new Html($spreadsheet);
33
        $html1 = $writer->generateHTMLall();
34
        $writer->setEditHtmlCallback([$this, 'yellowBody']);
35
        $html2 = $writer->generateHTMLall();
36
        $writer->setEditHtmlCallback(null);
37
        $html3 = $writer->generateHTMLall();
38
39
        self::assertFalse(strpos($html1, 'background-color: yellow'));
40
        self::assertNotFalse(strpos($html2, 'background-color: yellow'));
41
        self::assertFalse(strpos($html3, 'background-color: yellow'));
42
        self::assertEquals($html3, $html1);
43
44
        $writer->setEditHtmlCallback([$this, 'yellowBody']);
45
        $oufil = tempnam(File::sysGetTempDir(), 'phpspreadsheet-test');
46
        $writer->save($oufil);
47
        $html4 = file_get_contents($oufil);
48
        unlink($oufil);
49
        self::assertNotFalse(strpos($html4, 'background-color: yellow'));
50
51
        $this->writeAndReload($spreadsheet, 'Html');
52
    }
53
}
54