Passed
Pull Request — master (#4503)
by Owen
12:07
created

AutoColorTest::tearDown()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 2
nc 2
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
6
7
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
8
use PhpOffice\PhpSpreadsheet\Shared\File;
9
use PhpOffice\PhpSpreadsheet\Spreadsheet;
10
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter;
11
use PHPUnit\Framework\TestCase;
12
13
class AutoColorTest extends TestCase
14
{
15
    private string $outputFile = '';
16
17
    protected function tearDown(): void
18
    {
19
        if ($this->outputFile !== '') {
20
            unlink($this->outputFile);
21
            $this->outputFile = '';
22
        }
23
    }
24
25
    public function testAutoColor(): void
26
    {
27
        // It's not clear to me what AutoColor does in Excel.
28
        // However, LibreOffice Dark Mode
29
        // can make use of a spreadsheet which uses it.
30
        $spreadsheet = new Spreadsheet();
31
        $spreadsheet->getDefaultStyle()->getFont()
32
            ->setAutoColor(true);
33
        $sheet = $spreadsheet->getActiveSheet();
34
        $sheet->setCellValue('A1', 'Hello World!');
35
        $sheet->setCellValue('A2', 'Hello World!');
36
        $sheet->getStyle('A2')->getFont()
37
            ->setBold(true);
38
        $sheet->setCellValue('A3', 'Hello World!');
39
        $sheet->getStyle('A3')->getFont()
40
            ->setItalic(true);
41
        $sheet->setCellValue('B1', 'Hello World!');
42
43
        $writer = new XlsxWriter($spreadsheet);
44
        $outputFile = $this->outputFile = File::temporaryFilename();
45
        $writer->save($outputFile);
46
        $spreadsheet->disconnectWorksheets();
47
        $zipfile = "zip://$outputFile#xl/styles.xml";
48
        $contents = file_get_contents($zipfile);
49
        if ($contents === false) {
50
            self::fail('Unable to open file');
51
        } else {
52
            self::assertStringContainsString('<fonts count="3">', $contents);
53
            self::assertStringContainsString('<font><b val="0"/><i val="0"/><strike val="0"/><u val="none"/><sz val="11"/><auto val="1"/><name val="Calibri"/></font>', $contents);
54
            self::assertStringContainsString('<font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="11"/><auto val="1"/><name val="Calibri"/></font>', $contents);
55
            self::assertStringContainsString('<font><b val="0"/><i val="1"/><strike val="0"/><u val="none"/><sz val="11"/><auto val="1"/><name val="Calibri"/></font>', $contents);
56
        }
57
58
        $reader = new XlsxReader();
59
        $spreadsheet2 = $reader->load($outputFile);
60
        $sheet2 = $spreadsheet2->getActiveSheet();
61
        self::assertTrue(
62
            $sheet2->getStyle('A1')
63
                ->getFont()
64
                ->getAutoColor()
65
        );
66
        $spreadsheet2->disconnectWorksheets();
67
    }
68
}
69