Skip to content

Commit 388e0e9

Browse files
committed
Refactor tests for removing sheet
1 parent a0ec04f commit 388e0e9

File tree

1 file changed

+41
-65
lines changed

1 file changed

+41
-65
lines changed

test/unit/cruds/removing-sheet.spec.ts

Lines changed: 41 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -286,14 +286,12 @@ describe('remove sheet - adjust formula dependencies', () => {
286286

287287
describe('removeSheet() recalculates formulas (issue #1116)', () => {
288288
it('returns REF error if other sheet depends on the removed one', () => {
289-
const engine = HyperFormula.buildEmpty()
290289
const table1Name = 'table1'
291290
const table2Name = 'table2'
292-
293-
engine.addSheet(table1Name)
294-
engine.addSheet(table2Name)
295-
engine.setCellContents(adr('A1', engine.getSheetId(table2Name)), 10)
296-
engine.setCellContents(adr('A1', engine.getSheetId(table1Name)), `='${table2Name}'!A1`)
291+
const engine = HyperFormula.buildFromSheets({
292+
[table1Name]: [[`='${table2Name}'!A1`]],
293+
[table2Name]: [[10]],
294+
})
297295

298296
expect(engine.getCellValue(adr('A1', engine.getSheetId(table1Name)))).toBe(10)
299297
expect(engine.getCellValue(adr('A1', engine.getSheetId(table2Name)))).toBe(10)
@@ -305,17 +303,14 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
305303
})
306304

307305
it('returns REF error for chained dependencies across multiple sheets', () => {
308-
const engine = HyperFormula.buildEmpty()
309306
const sheet1Name = 'Sheet1'
310307
const sheet2Name = 'Sheet2'
311308
const sheet3Name = 'Sheet3'
312-
313-
engine.addSheet(sheet1Name)
314-
engine.addSheet(sheet2Name)
315-
engine.addSheet(sheet3Name)
316-
engine.setCellContents(adr('A1', engine.getSheetId(sheet3Name)), 42)
317-
engine.setCellContents(adr('A1', engine.getSheetId(sheet2Name)), `='${sheet3Name}'!A1*2`)
318-
engine.setCellContents(adr('A1', engine.getSheetId(sheet1Name)), `='${sheet2Name}'!A1+2`)
309+
const engine = HyperFormula.buildFromSheets({
310+
[sheet1Name]: [[`='${sheet2Name}'!A1+2`]],
311+
[sheet2Name]: [[`='${sheet3Name}'!A1*2`]],
312+
[sheet3Name]: [[42]],
313+
})
319314

320315
expect(engine.getCellValue(adr('A1', engine.getSheetId(sheet2Name)))).toBe(84)
321316
expect(engine.getCellValue(adr('A1', engine.getSheetId(sheet1Name)))).toBe(86)
@@ -327,15 +322,12 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
327322
})
328323

329324
it('returns REF error for nested dependencies within same sheet referencing removed sheet', () => {
330-
const engine = HyperFormula.buildEmpty()
331325
const sheet1Name = 'Sheet1'
332326
const removedSheetName = 'RemovedSheet'
333-
334-
engine.addSheet(sheet1Name)
335-
engine.addSheet(removedSheetName)
336-
engine.setCellContents(adr('A1', engine.getSheetId(removedSheetName)), 15)
337-
engine.setCellContents(adr('B1', engine.getSheetId(sheet1Name)), `='${removedSheetName}'!A1`)
338-
engine.setCellContents(adr('A1', engine.getSheetId(sheet1Name)), '=B1*2')
327+
const engine = HyperFormula.buildFromSheets({
328+
[sheet1Name]: [['=B1*2', `='${removedSheetName}'!A1`]],
329+
[removedSheetName]: [[15]],
330+
})
339331

340332
expect(engine.getCellValue(adr('B1', engine.getSheetId(sheet1Name)))).toBe(15)
341333
expect(engine.getCellValue(adr('A1', engine.getSheetId(sheet1Name)))).toBe(30)
@@ -347,20 +339,14 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
347339
})
348340

349341
it('returns REF error for multiple cells from different sheets referencing removed sheet', () => {
350-
const engine = HyperFormula.buildEmpty()
351342
const sheet1Name = 'Sheet1'
352343
const sheet2Name = 'Sheet2'
353344
const targetSheetName = 'TargetSheet'
354-
355-
engine.addSheet(sheet1Name)
356-
engine.addSheet(sheet2Name)
357-
engine.addSheet(targetSheetName)
358-
engine.setCellContents(adr('A1', engine.getSheetId(targetSheetName)), 5)
359-
engine.setCellContents(adr('B1', engine.getSheetId(targetSheetName)), 7)
360-
engine.setCellContents(adr('A1', engine.getSheetId(sheet1Name)), `='${targetSheetName}'!A1`)
361-
engine.setCellContents(adr('B1', engine.getSheetId(sheet1Name)), `='${targetSheetName}'!B1`)
362-
engine.setCellContents(adr('A1', engine.getSheetId(sheet2Name)), `='${targetSheetName}'!A1+10`)
363-
engine.setCellContents(adr('B1', engine.getSheetId(sheet2Name)), `='${targetSheetName}'!B1+20`)
345+
const engine = HyperFormula.buildFromSheets({
346+
[sheet1Name]: [[`='${targetSheetName}'!A1`, `='${targetSheetName}'!B1`]],
347+
[sheet2Name]: [[`='${targetSheetName}'!A1+10`, `='${targetSheetName}'!B1+20`]],
348+
[targetSheetName]: [[5, 7]],
349+
})
364350

365351
expect(engine.getCellValue(adr('A1', engine.getSheetId(sheet1Name)))).toBe(5)
366352
expect(engine.getCellValue(adr('B1', engine.getSheetId(sheet1Name)))).toBe(7)
@@ -376,17 +362,12 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
376362
})
377363

378364
it('returns REF error for formulas with mixed operations combining removed sheet references', () => {
379-
const engine = HyperFormula.buildEmpty()
380365
const sheet1Name = 'Sheet1'
381366
const removedSheetName = 'RemovedSheet'
382-
383-
engine.addSheet(sheet1Name)
384-
engine.addSheet(removedSheetName)
385-
engine.setCellContents(adr('A1', engine.getSheetId(sheet1Name)), 100)
386-
engine.setCellContents(adr('A1', engine.getSheetId(removedSheetName)), 50)
387-
engine.setCellContents(adr('B1', engine.getSheetId(removedSheetName)), 25)
388-
engine.setCellContents(adr('B1', engine.getSheetId(sheet1Name)), `='${removedSheetName}'!A1 + A1`)
389-
engine.setCellContents(adr('C1', engine.getSheetId(sheet1Name)), `='${removedSheetName}'!B1 * 2`)
367+
const engine = HyperFormula.buildFromSheets({
368+
[sheet1Name]: [[100, `='${removedSheetName}'!A1 + A1`, `='${removedSheetName}'!B1 * 2`]],
369+
[removedSheetName]: [[50, 25]],
370+
})
390371

391372
expect(engine.getCellValue(adr('B1', engine.getSheetId(sheet1Name)))).toBe(150)
392373
expect(engine.getCellValue(adr('C1', engine.getSheetId(sheet1Name)))).toBe(50)
@@ -398,24 +379,21 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
398379
})
399380

400381
it('returns REF error for formulas with multi-cell ranges from removed sheet', () => {
401-
const engine = HyperFormula.buildEmpty()
402382
const sheet1Name = 'Sheet1'
403383
const dataSheetName = 'DataSheet'
404-
405-
engine.addSheet(sheet1Name)
406-
engine.addSheet(dataSheetName)
407-
engine.setCellContents(adr('A1', engine.getSheetId(dataSheetName)), 1)
408-
engine.setCellContents(adr('B1', engine.getSheetId(dataSheetName)), 2)
409-
engine.setCellContents(adr('A2', engine.getSheetId(dataSheetName)), 3)
410-
engine.setCellContents(adr('B2', engine.getSheetId(dataSheetName)), 4)
411-
engine.setCellContents(adr('A3', engine.getSheetId(dataSheetName)), 5)
412-
engine.setCellContents(adr('B3', engine.getSheetId(dataSheetName)), 6)
413-
engine.setCellContents(adr('A4', engine.getSheetId(dataSheetName)), 7)
414-
engine.setCellContents(adr('B4', engine.getSheetId(dataSheetName)), 8)
415-
engine.setCellContents(adr('A5', engine.getSheetId(dataSheetName)), 9)
416-
engine.setCellContents(adr('B5', engine.getSheetId(dataSheetName)), 10)
417-
engine.setCellContents(adr('A1', engine.getSheetId(sheet1Name)), `=SUM('${dataSheetName}'!A1:B5)`)
418-
engine.setCellContents(adr('A2', engine.getSheetId(sheet1Name)), `=MEDIAN('${dataSheetName}'!A1:B5)`)
384+
const engine = HyperFormula.buildFromSheets({
385+
[sheet1Name]: [
386+
[`=SUM('${dataSheetName}'!A1:B5)`],
387+
[`=MEDIAN('${dataSheetName}'!A1:B5)`],
388+
],
389+
[dataSheetName]: [
390+
[1, 2],
391+
[3, 4],
392+
[5, 6],
393+
[7, 8],
394+
[9, 10],
395+
],
396+
})
419397

420398
expect(engine.getCellValue(adr('A1', engine.getSheetId(sheet1Name)))).toBe(55)
421399
expect(engine.getCellValue(adr('A2', engine.getSheetId(sheet1Name)))).toBe(5.5)
@@ -427,16 +405,14 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
427405
})
428406

429407
it('returns REF error for named expressions referencing removed sheet', () => {
430-
const engine = HyperFormula.buildEmpty()
431408
const sheet1Name = 'Sheet1'
432409
const removedSheetName = 'RemovedSheet'
433-
434-
engine.addSheet(sheet1Name)
435-
engine.addSheet(removedSheetName)
436-
engine.addNamedExpression('MyValue', `='${removedSheetName}'!$A$1`)
437-
engine.setCellContents(adr('A1', engine.getSheetId(removedSheetName)), 99)
438-
engine.setCellContents(adr('A1', engine.getSheetId(sheet1Name)), '=MyValue')
439-
engine.setCellContents(adr('A2', engine.getSheetId(sheet1Name)), '=MyValue*2')
410+
const engine = HyperFormula.buildFromSheets({
411+
[sheet1Name]: [['=MyValue'], ['=MyValue*2']],
412+
[removedSheetName]: [[99]]
413+
}, {}, [
414+
{ name: 'MyValue', expression: `='${removedSheetName}'!$A$1` }
415+
])
440416

441417
expect(engine.getCellValue(adr('A1', engine.getSheetId(sheet1Name)))).toBe(99)
442418
expect(engine.getCellValue(adr('A2', engine.getSheetId(sheet1Name)))).toBe(198)

0 commit comments

Comments
 (0)