File: test/Workbook.test.ts

Recommend this page to a friend!
  Packages of ikhsan   jQuery Calx   test/Workbook.test.ts   Download  
File: test/Workbook.test.ts
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: jQuery Calx
Calculate form input values based on formulas
Author: By
Last change:
Date: 3 months ago
Size: 4,399 bytes
 

Contents

Class file image Download
import { Calx } from '../src/Calx'; import { DataType } from '../src/Calx/Cell/DataType'; describe('Workbook', () => { describe('Workbook Creation', () => { test('should create empty workbook', () => { const workbook = Calx.createWorkbook(); expect(workbook).toBeDefined(); expect(workbook.getSheets()).toEqual({}); }); test('should create workbook from data', () => { const workbook = Calx.createWorkbookFromData({ sheets: { 'Sheet1': { cells: { 'A1': { value: 100, type: DataType.NUMBER } }, variables: {} } } }); expect(workbook).toBeDefined(); const sheet = workbook.getSheet('Sheet1'); expect(sheet).toBeDefined(); }); }); describe('Sheet Management', () => { test('should create sheet', () => { const workbook = Calx.createWorkbook(); const sheet = workbook.createSheet('TestSheet'); expect(sheet).toBeDefined(); expect(sheet.name).toBe('TestSheet'); }); test('should get sheet by name', () => { const workbook = Calx.createWorkbook(); workbook.createSheet('Sheet1'); const sheet = workbook.getSheet('Sheet1'); expect(sheet).toBeDefined(); if (sheet) { expect(sheet.name).toBe('Sheet1'); } }); test('should get all sheets', () => { const workbook = Calx.createWorkbook(); workbook.createSheet('Sheet1'); workbook.createSheet('Sheet2'); const sheets = workbook.getSheets(); expect(Object.keys(sheets).length).toBe(2); expect(sheets['Sheet1']).toBeDefined(); expect(sheets['Sheet2']).toBeDefined(); }); test('should throw error for duplicate sheet name', () => { const workbook = Calx.createWorkbook(); workbook.createSheet('Sheet1'); expect(() => { workbook.createSheet('Sheet1'); }).toThrow(); }); }); describe('Calculation', () => { test('should calculate entire workbook', () => { const workbook = Calx.createWorkbook(); const sheet = workbook.createSheet('Sheet1'); sheet.createCell('A1', { value: 10 }); sheet.createCell('A2', { formula: '=A1*2' }); workbook.build(); workbook.calculate(); expect(sheet.getCellDirect('A2').value).toBe(20); }); test('should build dependency tree', () => { const workbook = Calx.createWorkbook(); const sheet = workbook.createSheet('Sheet1'); sheet.createCell('A1', { value: 10 }); sheet.createCell('A2', { formula: '=A1*2' }); sheet.createCell('A3', { formula: '=A2+5' }); expect(() => { workbook.build(); }).not.toThrow(); }); }); describe('Active Sheet', () => { test('should set and get active sheet', () => { const workbook = Calx.createWorkbook(); const sheet1 = workbook.createSheet('Sheet1'); const sheet2 = workbook.createSheet('Sheet2'); workbook.setActiveSheet(sheet1); expect(workbook.getActiveSheet()).toBe(sheet1); workbook.setActiveSheet(sheet2); expect(workbook.getActiveSheet()).toBe(sheet2); }); }); describe('Object Hydration', () => { test('should hydrate object with cell values', () => { const workbook = Calx.createWorkbook(); const sheet = workbook.createSheet('Sheet1'); sheet.createCell('A1', { value: 100 }); sheet.createCell('B1', { value: 200 }); const obj = { value1: '#Sheet1!A1', value2: '#Sheet1!B1' }; workbook.build(); workbook.calculate(); workbook.hydrateObj(obj); // Note: This feature needs to be fully implemented // For now, just test it doesn't throw expect(obj).toBeDefined(); }); }); });