import { describe, it, expect, beforeAll } from 'vitest'; import { parseXml } from '../src/parser/XmlParser'; import { parseTableNode } from '../src/model/nodes/TableNode'; import { tableToElement } from '../src/serializer/tableSerializer'; import { minimalCtx } from './helpers'; const NS = 'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" ' + 'xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"'; /** * 回归(auto-fix.md 坑表):表格 cell 的 必须清掉填充。 * * 现象:教师表每个 cell 显式 ,但表格样式 firstRow/wholeTbl=accent1, * 不处理 noFill 会把整张表错误染成橙色。 * 修复:tcPr 的 noFill 显式清掉继承自表格样式的填充色。 * * 断言粒度:noFill 的 cell 在 DSL 里没有 fillColor;solidFill 的 cell 取到该色。 */ describe('tableSerializer · cell noFill 清掉填充', () => { const tblXml = ` A B `; let cellNoFill: { fillColor?: string }; let cellSolid: { fillColor?: string }; beforeAll(() => { const table = tableToElement(parseTableNode(parseXml(tblXml)), minimalCtx(), 0) as { data: Array>; }; [cellNoFill, cellSolid] = table.data[0]; }); it('noFill 的 cell 没有 fillColor', () => { expect(cellNoFill.fillColor).toBeUndefined(); }); it('solidFill 的 cell 取到对应颜色', () => { expect(cellSolid.fillColor).toBe('#FF0000'); }); });