Unit Tests for changing the value of a column header in a Table

This commit is contained in:
MarkBaker
2022-12-10 15:04:54 +01:00
parent 873ea0b503
commit 6e4a875aea
@@ -59,4 +59,55 @@ class FormulaTest extends TestCase
$spreadsheet->disconnectWorksheets();
}
public function testCellFormulaUpdateOnHeadingColumnChange(): void
{
$reader = new Xlsx();
$filename = 'tests/data/Worksheet/Table/TableFormulae.xlsx';
$spreadsheet = $reader->load($filename);
$worksheet = $spreadsheet->getActiveSheet();
// Verify original formulae
// Row Formula
self::assertSame("=DeptSales[[#This Row],[Sales\u{a0}Amount]]*DeptSales[[#This Row],[% Commission]]", $worksheet->getCell('E2')->getValue());
// Totals Formula
self::assertSame('=SUBTOTAL(109,DeptSales[Commission Amount])', $worksheet->getCell('E8')->getValue());
$worksheet->getCell('D1')->setValue('Commission %age');
$worksheet->getCell('E1')->setValue('Commission');
// Verify modified formulae
// Row Formula
self::assertSame("=DeptSales[[#This Row],[Sales\u{a0}Amount]]*DeptSales[[#This Row],[Commission %age]]", $worksheet->getCell('E2')->getValue());
// Totals Formula
self::assertSame('=SUBTOTAL(109,DeptSales[Commission])', $worksheet->getCell('E8')->getValue());
$spreadsheet->disconnectWorksheets();
}
public function testNamedFormulaUpdateOnHeadingColumnChange(): void
{
$reader = new Xlsx();
$filename = 'tests/data/Worksheet/Table/TableFormulae.xlsx';
$spreadsheet = $reader->load($filename);
$worksheet = $spreadsheet->getActiveSheet();
$table = $spreadsheet->getActiveSheet()->getTableCollection()[0];
if ($table === null) {
self::markTestSkipped('Unable to read table for testing.');
}
$namedFormula = $spreadsheet->getNamedFormula('CommissionTotal');
if ($namedFormula === null) {
self::markTestSkipped('Unable to read named formula for testing.');
}
// Verify original formula
self::assertSame('SUBTOTAL(109,DeptSales[Commission Amount])', $namedFormula->getFormula());
$worksheet->getCell('E1')->setValue('Commission');
// Verify modified formula
self::assertSame('SUBTOTAL(109,DeptSales[Commission])', $namedFormula->getFormula());
$spreadsheet->disconnectWorksheets();
}
}