Passed
Pull Request — master (#4366)
by Owen
14:42
created

HiddenWorksheetTest::testListWorksheetInfo()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 39
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 28
dl 0
loc 39
rs 9.472
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls;
6
7
use PhpOffice\PhpSpreadsheet\Reader\Xls;
8
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
9
use PHPUnit\Framework\TestCase;
10
11
class HiddenWorksheetTest extends TestCase
12
{
13
    public function testPageSetup(): void
14
    {
15
        $filename = 'tests/data/Reader/XLS/HiddenSheet.xls';
16
        $reader = new Xls();
17
        $spreadsheet = $reader->load($filename);
18
        $assertions = $this->worksheetAssertions();
19
20
        $sheetCount = 0;
21
        foreach ($spreadsheet->getAllSheets() as $worksheet) {
22
            ++$sheetCount;
23
            if (!array_key_exists($worksheet->getTitle(), $assertions)) {
24
                self::fail('Unexpected worksheet' . $worksheet->getTitle());
25
            }
26
27
            $sheetAssertions = $assertions[$worksheet->getTitle()];
28
            foreach ($sheetAssertions as $test => $expectedResult) {
29
                $actualResult = $worksheet->getSheetState();
30
                self::assertSame(
31
                    $expectedResult,
32
                    $actualResult,
33
                    "Failed asserting sheet state {$expectedResult} for Worksheet '{$worksheet->getTitle()}' {$test}"
34
                );
35
            }
36
        }
37
        self::assertCount($sheetCount, $assertions);
38
        $spreadsheet->disconnectWorksheets();
39
    }
40
41
    private function worksheetAssertions(): array
42
    {
43
        return [
44
            'Sheet1' => [
45
                'sheetState' => Worksheet::SHEETSTATE_VISIBLE,
46
            ],
47
            'Sheet2' => [
48
                'sheetState' => Worksheet::SHEETSTATE_HIDDEN,
49
            ],
50
        ];
51
    }
52
53
    public function testListWorksheetInfo(): void
54
    {
55
        $filename = 'tests/data/Reader/XLS/visibility.xls';
56
        $reader = new Xls();
57
        $expected = [
58
            [
59
                'worksheetName' => 'Sheet1',
60
                'lastColumnLetter' => 'A',
61
                'lastColumnIndex' => 0,
62
                'totalRows' => 1,
63
                'totalColumns' => 1,
64
                'sheetState' => 'visible',
65
            ],
66
            [
67
                'worksheetName' => 'Sheet2',
68
                'lastColumnLetter' => 'A',
69
                'lastColumnIndex' => 0,
70
                'totalRows' => 1,
71
                'totalColumns' => 1,
72
                'sheetState' => 'hidden',
73
            ],
74
            [
75
                'worksheetName' => 'Sheet3',
76
                'lastColumnLetter' => 'A',
77
                'lastColumnIndex' => 0,
78
                'totalRows' => 1,
79
                'totalColumns' => 1,
80
                'sheetState' => 'visible',
81
            ],
82
            [
83
                'worksheetName' => 'Sheet4',
84
                'lastColumnLetter' => 'A',
85
                'lastColumnIndex' => 0,
86
                'totalRows' => 2,
87
                'totalColumns' => 1,
88
                'sheetState' => 'veryHidden',
89
            ],
90
        ];
91
        self::assertSame($expected, $reader->listWorksheetInfo($filename));
92
    }
93
}
94