Spaces:
Sleeping
Sleeping
| import { describe, expect, it } from 'vitest'; | |
| import { | |
| buildTableCellStyleRequest, | |
| buildTableBorder, | |
| buildTableColumnWidthRequest, | |
| buildTableRowStyleRequest, | |
| buildPinTableHeaderRowsRequest, | |
| } from './googleDocsApiHelpers.js'; | |
| import { hexToRgbColor } from './types.js'; | |
| describe('table formatting request builders', () => { | |
| it('builds updateTableCellStyle requests with range and fields', () => { | |
| const border = buildTableBorder(hexToRgbColor('#000000')!, 1, 'SOLID'); | |
| const result = buildTableCellStyleRequest( | |
| 25, | |
| 0, | |
| 0, | |
| { | |
| rowSpan: 2, | |
| columnSpan: 3, | |
| backgroundColor: hexToRgbColor('#D9E2F3')!, | |
| contentAlignment: 'MIDDLE', | |
| paddingTopPt: 8, | |
| borderTop: border, | |
| }, | |
| 'tab-1' | |
| ); | |
| expect(result).not.toBeNull(); | |
| expect(result!.fields).toEqual([ | |
| 'backgroundColor', | |
| 'contentAlignment', | |
| 'paddingTop', | |
| 'borderTop', | |
| ]); | |
| expect( | |
| result!.request.updateTableCellStyle!.tableRange!.tableCellLocation!.tableStartLocation | |
| ).toEqual({ | |
| index: 25, | |
| tabId: 'tab-1', | |
| }); | |
| expect(result!.request.updateTableCellStyle!.tableRange!.rowSpan).toBe(2); | |
| expect(result!.request.updateTableCellStyle!.tableRange!.columnSpan).toBe(3); | |
| expect(result!.request.updateTableCellStyle!.tableCellStyle!.contentAlignment).toBe('MIDDLE'); | |
| }); | |
| it('builds fixed-width column property requests', () => { | |
| const request = buildTableColumnWidthRequest(50, [0, 2], 120, 'tab-2'); | |
| const props: any = request.updateTableColumnProperties; | |
| expect(props.tableStartLocation).toEqual({ index: 50, tabId: 'tab-2' }); | |
| expect(props.columnIndices).toEqual([0, 2]); | |
| expect(props.tableColumnProperties.widthType).toBe('FIXED_WIDTH'); | |
| expect(props.tableColumnProperties.width).toEqual({ magnitude: 120, unit: 'PT' }); | |
| }); | |
| it('builds row style requests only when fields are provided', () => { | |
| const request = buildTableRowStyleRequest(75, [0, 1], 36, true, 'tab-3') as any; | |
| expect(request.updateTableRowStyle.tableStartLocation).toEqual({ index: 75, tabId: 'tab-3' }); | |
| expect(request.updateTableRowStyle.rowIndices).toEqual([0, 1]); | |
| expect(request.updateTableRowStyle.tableRowStyle.minRowHeight).toEqual({ | |
| magnitude: 36, | |
| unit: 'PT', | |
| }); | |
| expect(request.updateTableRowStyle.tableRowStyle.preventOverflow).toBe(true); | |
| expect(request.updateTableRowStyle.fields).toBe('minRowHeight,preventOverflow'); | |
| expect(buildTableRowStyleRequest(10, [0], undefined, undefined)).toBeNull(); | |
| }); | |
| it('builds pinTableHeaderRows requests', () => { | |
| const request: any = buildPinTableHeaderRowsRequest(99, 1, 'tab-4'); | |
| expect(request.pinTableHeaderRows.tableStartLocation).toEqual({ index: 99, tabId: 'tab-4' }); | |
| expect(request.pinTableHeaderRows.pinnedHeaderRowsCount).toBe(1); | |
| }); | |
| }); | |