Completed
Push — master ( 1a094c...7b4ba9 )
by Mark
41s queued 33s
created

testNamedFormulaUpdateOnTableNameChange()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 23
rs 9.8333
cc 3
nc 4
nop 0
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Worksheet\Table;
4
5
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
6
use PHPUnit\Framework\TestCase;
7
8
class FormulaTest extends TestCase
9
{
10
    public function testCellFormulaUpdateOnTableNameChange(): void
11
    {
12
        $reader = new Xlsx();
13
        $filename = 'tests/data/Worksheet/Table/TableFormulae.xlsx';
14
        $spreadsheet = $reader->load($filename);
15
        $worksheet = $spreadsheet->getActiveSheet();
16
17
        // Verify original formulae
18
        // Row Formula
19
        self::assertSame("=DeptSales[[#This Row],[Sales\u{a0}Amount]]*DeptSales[[#This Row],[% Commission]]", $worksheet->getCell('E2')->getValue());
20
        // Totals Formula
21
        self::assertSame('=SUBTOTAL(109,DeptSales[Commission Amount])', $worksheet->getCell('E8')->getValue());
22
23
        $table = $worksheet->getTableCollection()[0];
24
        if ($table === null) {
25
            self::markTestSkipped('Unable to read table for testing.');
26
        }
27
        $table->setName('tblSalesByDepartment');
28
29
        // Verify modified formulae
30
        // Row Formula
31
        self::assertSame("=tblSalesByDepartment[[#This Row],[Sales\u{a0}Amount]]*tblSalesByDepartment[[#This Row],[% Commission]]", $worksheet->getCell('E2')->getValue());
32
        // Totals Formula
33
        self::assertSame('=SUBTOTAL(109,tblSalesByDepartment[Commission Amount])', $worksheet->getCell('E8')->getValue());
34
35
        $spreadsheet->disconnectWorksheets();
36
    }
37
38
    public function testNamedFormulaUpdateOnTableNameChange(): void
39
    {
40
        $reader = new Xlsx();
41
        $filename = 'tests/data/Worksheet/Table/TableFormulae.xlsx';
42
        $spreadsheet = $reader->load($filename);
43
44
        $table = $spreadsheet->getActiveSheet()->getTableCollection()[0];
45
        if ($table === null) {
46
            self::markTestSkipped('Unable to read table for testing.');
47
        }
48
        $namedFormula = $spreadsheet->getNamedFormula('CommissionTotal');
49
        if ($namedFormula === null) {
50
            self::markTestSkipped('Unable to read named formula for testing.');
51
        }
52
53
        // Verify original formula
54
        self::assertSame('SUBTOTAL(109,DeptSales[Commission Amount])', $namedFormula->getFormula());
55
56
        $table->setName('tblSalesByDepartment');
57
        // Verify modified formula
58
        self::assertSame('SUBTOTAL(109,tblSalesByDepartment[Commission Amount])', $namedFormula->getFormula());
59
60
        $spreadsheet->disconnectWorksheets();
61
    }
62
}
63