Files
openmaic/OpenMAIC/packages/@openmaic/importer/test/tableSerializer.test.ts
2026-08-16 14:58:47 +08:00

52 lines
2.2 KiB
TypeScript
Raw 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');
});
});