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

ThemeColorsTest::testGalleryTheme()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 9
rs 10
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\Writer\Xlsx;
6
7
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
8
use PhpOffice\PhpSpreadsheet\Spreadsheet;
9
use PhpOffice\PhpSpreadsheet\Style\Style;
10
use PhpOffice\PhpSpreadsheet\Theme as SpreadsheetTheme;
11
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
12
13
class ThemeColorsTest extends AbstractFunctional
14
{
15
    public function testOffice2013Theme(): void
16
    {
17
        $spreadsheet = new Spreadsheet();
18
        $spreadsheet->getTheme()
19
            ->setThemeColorName(
20
                SpreadsheetTheme::COLOR_SCHEME_2013_PLUS_NAME //* @phpstan-ignore-line
21
            );
22
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
23
        $spreadsheet->disconnectWorksheets();
24
        self::assertSame(
25
            SpreadsheetTheme::COLOR_SCHEME_2013_PLUS_NAME, //* @phpstan-ignore-line
26
            $reloadedSpreadsheet->getTheme()->getThemeColorName()
27
        );
28
        self::assertSame('FFC000', $reloadedSpreadsheet->getTheme()->getThemeColors()['accent4']);
29
        self::assertSame('Calibri Light', $reloadedSpreadsheet->getTheme()->getMajorFontLatin());
30
        self::assertSame('Calibri', $reloadedSpreadsheet->getTheme()->getMinorFontLatin());
31
        $defaultFont2 = $reloadedSpreadsheet->getDefaultStyle()->getFont()->getName();
32
        self::assertSame('Calibri', $defaultFont2);
33
        $font3 = $reloadedSpreadsheet->getActiveSheet()
34
            ->getStyle('Z10')->getFont()->getName();
35
        self::assertSame('Calibri', $font3);
36
        $reloadedSpreadsheet->disconnectWorksheets();
37
    }
38
39
    public function testOffice2013Theme2(): void
40
    {
41
        $spreadsheet = new Spreadsheet();
42
        $spreadsheet->getTheme()
43
            ->setThemeColorName(
44
                SpreadsheetTheme::COLOR_SCHEME_2013_2022_NAME
45
            );
46
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
47
        $spreadsheet->disconnectWorksheets();
48
        self::assertSame(
49
            SpreadsheetTheme::COLOR_SCHEME_2013_2022_NAME,
50
            $reloadedSpreadsheet->getTheme()->getThemeColorName()
51
        );
52
        self::assertSame('FFC000', $reloadedSpreadsheet->getTheme()->getThemeColors()['accent4']);
53
        self::assertSame('Calibri Light', $reloadedSpreadsheet->getTheme()->getMajorFontLatin());
54
        self::assertSame('Calibri', $reloadedSpreadsheet->getTheme()->getMinorFontLatin());
55
        $defaultFont2 = $reloadedSpreadsheet->getDefaultStyle()->getFont()->getName();
56
        self::assertSame('Calibri', $defaultFont2);
57
        $font3 = $reloadedSpreadsheet->getActiveSheet()
58
            ->getStyle('Z10')->getFont()->getName();
59
        self::assertSame('Calibri', $font3);
60
        $reloadedSpreadsheet->disconnectWorksheets();
61
    }
62
63
    public function testOffice2007Theme(): void
64
    {
65
        $spreadsheet = new Spreadsheet();
66
        $spreadsheet->getTheme()->setThemeColorName(SpreadsheetTheme::COLOR_SCHEME_2007_2010_NAME);
67
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
68
        $spreadsheet->disconnectWorksheets();
69
        self::assertSame('Office 2007-2010', $reloadedSpreadsheet->getTheme()->getThemeColorName());
70
        self::assertSame('8064A2', $reloadedSpreadsheet->getTheme()->getThemeColors()['accent4']);
71
        self::assertSame('Cambria', $reloadedSpreadsheet->getTheme()->getMajorFontLatin());
72
        self::assertSame('Calibri', $reloadedSpreadsheet->getTheme()->getMinorFontLatin());
73
        $defaultFont2 = $reloadedSpreadsheet->getDefaultStyle()->getFont()->getName();
74
        self::assertSame('Calibri', $defaultFont2);
75
        $font3 = $reloadedSpreadsheet->getActiveSheet()
76
            ->getStyle('Z10')->getFont()->getName();
77
        self::assertSame('Calibri', $font3);
78
        $reloadedSpreadsheet->disconnectWorksheets();
79
    }
80
81
    public function testDefaultTheme(): void
82
    {
83
        $spreadsheet = new Spreadsheet();
84
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
85
        $spreadsheet->disconnectWorksheets();
86
        self::assertSame('Office', $reloadedSpreadsheet->getTheme()->getThemeColorName());
87
        self::assertSame('8064A2', $reloadedSpreadsheet->getTheme()->getThemeColors()['accent4']);
88
        self::assertSame('Cambria', $reloadedSpreadsheet->getTheme()->getMajorFontLatin());
89
        self::assertSame('Calibri', $reloadedSpreadsheet->getTheme()->getMinorFontLatin());
90
        $defaultFont2 = $reloadedSpreadsheet->getDefaultStyle()->getFont()->getName();
91
        self::assertSame('Calibri', $defaultFont2);
92
        $font3 = $reloadedSpreadsheet->getActiveSheet()
93
            ->getStyle('Z10')->getFont()->getName();
94
        self::assertSame('Calibri', $font3);
95
        $reloadedSpreadsheet->disconnectWorksheets();
96
    }
97
98
    public function testGalleryTheme(): void
99
    {
100
        $reader = new XlsxReader();
101
        $spreadsheet = $reader->load('tests/data/Writer/XLSX/gallerytheme.xlsx');
102
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
103
        $spreadsheet->disconnectWorksheets();
104
        self::assertSame('Gallery', $reloadedSpreadsheet->getTheme()->getThemeColorName());
105
        self::assertSame('795FAF', $reloadedSpreadsheet->getTheme()->getThemeColors()['accent4']);
106
        $reloadedSpreadsheet->disconnectWorksheets();
107
    }
108
109
    public function testOffice2023Theme(): void
110
    {
111
        $spreadsheet = new Spreadsheet();
112
        $spreadsheet->getTheme()
113
            ->setThemeColorName(
114
                SpreadsheetTheme::COLOR_SCHEME_2023_PLUS_NAME,
115
                null,
116
                $spreadsheet
117
            );
118
        self::assertSame('Aptos Narrow', $spreadsheet->getDefaultStyle()->getFont()->getName(), 'default style is attached to spreadsheet');
119
        $style = new Style();
120
        self::assertSame('Calibri', $style->getFont()->getName(), 'style not attached to spreadsheet');
121
        $style2 = $spreadsheet->getActiveSheet()->getStyle('A7');
122
        self::assertSame('Aptos Narrow', $style2->getFont()->getName(), 'font is attached to spreadsheet');
123
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
124
        $spreadsheet->disconnectWorksheets();
125
        self::assertSame(
126
            SpreadsheetTheme::COLOR_SCHEME_2023_PLUS_NAME,
127
            $reloadedSpreadsheet->getTheme()->getThemeColorName()
128
        );
129
        self::assertSame('0F9ED5', $reloadedSpreadsheet->getTheme()->getThemeColors()['accent4']);
130
        self::assertSame('Aptos Display', $reloadedSpreadsheet->getTheme()->getMajorFontLatin());
131
        self::assertSame('Aptos Narrow', $reloadedSpreadsheet->getTheme()->getMinorFontLatin());
132
        $defaultFont = $reloadedSpreadsheet->getDefaultStyle()->getFont()->getName();
133
        self::assertSame('Aptos Narrow', $defaultFont);
134
        $defaultFont2 = $reloadedSpreadsheet->getDefaultStyle()->getFont()->getName();
135
        self::assertSame('Aptos Narrow', $defaultFont2);
136
        $font3 = $reloadedSpreadsheet->getActiveSheet()
137
            ->getStyle('Z10')->getFont()->getName();
138
        self::assertSame('Aptos Narrow', $font3);
139
        $reloadedSpreadsheet->disconnectWorksheets();
140
    }
141
}
142