Files
wehub-resource-sync c48612c494
CI / E2E Tests (push) Has been cancelled
CI / Lint, Typecheck & Unit Tests (push) Has been cancelled
Docs Build / Build docs site (push) Has been cancelled
Publish @openmaic packages / Build, validate & publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:23 +08:00

52 lines
2.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 的 <a:noFill/> 必须清掉填充。
*
* 现象:教师表每个 cell 显式 <a:noFill/>,但表格样式 firstRow/wholeTbl=accent1
* 不处理 noFill 会把整张表错误染成橙色。
* 修复:tcPr 的 noFill 显式清掉继承自表格样式的填充色。
*
* 断言粒度:noFill 的 cell 在 DSL 里没有 fillColorsolidFill 的 cell 取到该色。
*/
describe('tableSerializer · cell noFill 清掉填充', () => {
const tblXml = `<p:graphicFrame ${NS}>
<p:nvGraphicFramePr><p:cNvPr id="1" name="t"/><p:cNvGraphicFramePr/><p:nvPr/></p:nvGraphicFramePr>
<p:xfrm><a:off x="0" y="0"/><a:ext cx="3000000" cy="1000000"/></p:xfrm>
<a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table"><a:tbl>
<a:tblPr/>
<a:tblGrid><a:gridCol w="1500000"/><a:gridCol w="1500000"/></a:tblGrid>
<a:tr h="500000">
<a:tc><a:txBody><a:bodyPr/><a:p><a:r><a:t>A</a:t></a:r></a:p></a:txBody><a:tcPr><a:noFill/></a:tcPr></a:tc>
<a:tc><a:txBody><a:bodyPr/><a:p><a:r><a:t>B</a:t></a:r></a:p></a:txBody><a:tcPr><a:solidFill><a:srgbClr val="FF0000"/></a:solidFill></a:tcPr></a:tc>
</a:tr>
</a:tbl></a:graphicData></a:graphic>
</p:graphicFrame>`;
let cellNoFill: { fillColor?: string };
let cellSolid: { fillColor?: string };
beforeAll(() => {
const table = tableToElement(parseTableNode(parseXml(tblXml)), minimalCtx(), 0) as {
data: Array<Array<{ fillColor?: string }>>;
};
[cellNoFill, cellSolid] = table.data[0];
});
it('noFill 的 cell 没有 fillColor', () => {
expect(cellNoFill.fillColor).toBeUndefined();
});
it('solidFill 的 cell 取到对应颜色', () => {
expect(cellSolid.fillColor).toBe('#FF0000');
});
});