import { describe, it, expect } from 'vitest' import { addStack } from './transforms' describe('addStack', () => { it('passes through non-objects unchanged', () => { expect(addStack(undefined)).toBe(undefined) expect(addStack(null)).toBe(null) expect(addStack(42)).toBe(42) }) it('marks every existing series with stack:"total"', () => { const out = addStack({ title: { text: 'x' }, series: [{ type: 'bar' }, { type: 'bar' }], }) as { series: { type: string; stack: string }[]; title: { text: string } } expect(out.series).toHaveLength(2) expect(out.series[0]).toMatchObject({ type: 'bar', stack: 'total' }) expect(out.series[1]).toMatchObject({ type: 'bar', stack: 'total' }) expect(out.title).toEqual({ text: 'x' }) }) it('emits a broadcast template when there are no existing series (data-fusion widgets)', () => { const out = addStack({}) as { series: { stack: string }[] } expect(out.series).toEqual([{ stack: 'total' }]) }) it('emits a broadcast template when series is missing entirely', () => { const out = addStack({ tooltip: {} }) as { series: { stack: string }[] tooltip: object } expect(out.series).toEqual([{ stack: 'total' }]) expect(out.tooltip).toBeDefined() }) it('preserves non-object series entries (defensive)', () => { const out = addStack({ series: ['weird', { type: 'bar' }] }) as { series: unknown[] } expect(out.series[0]).toBe('weird') expect(out.series[1]).toMatchObject({ type: 'bar', stack: 'total' }) }) })