Files
MorphDoc/packages/markdown-echarts/tests/parse-yaml.test.ts
T
SkyJourney f5a46f79f1 feat: 增加 ECharts 渲染与预览交互增强
- 新增可复用的 markdown-echarts 工作区,支持安全的 YAML 围栏、默认值、语义校验、错误占位和 SVG 渲染
- 将 ECharts 接入统一 Markdown、快速预览、精确预览与 PDF 链路,并复用 Mermaid 的不可跨页和超高图单页适配策略
- 默认示例加入 ECharts,增加源文本折叠、顶部文档状态、页码输入跳转与滚动同步
- 快速预览改用外层容器滚动,使滚动条与精确预览统一贴在预览区域右侧,并兼容显示缩放
- 完善 Docker 工作区复制、可配置 Compose 镜像、测试覆盖和进度文档
2026-07-27 16:05:14 +08:00

113 lines
1.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
EChartsFenceError,
parseEChartsFence
} from "../src/index.js";
const validSource = `
version: 1
height: 90mm
theme: document
caption: 年度趋势
option:
dataset:
source:
- [year, sales]
- [2023, 120]
- [2024, 180]
xAxis:
type: category
yAxis:
type: value
series:
- type: line
encode:
x: year
y: sales
`;
describe("parseEChartsFence", () => {
it("解析并规范化有效协议", () => {
expect(parseEChartsFence(validSource)).toEqual({
version: 1,
height: "90mm",
theme: "document",
caption: "年度趋势",
option: {
dataset: {
source: [
["year", "sales"],
[2023, 120],
[2024, 180]
]
},
xAxis: {
type: "category"
},
yAxis: {
type: "value"
},
series: [
{
type: "line",
encode: {
x: "year",
y: "sales"
}
}
]
}
});
});
it("补充协议版本、尺寸和直角坐标轴默认值", () => {
expect(
parseEChartsFence(`
option:
series:
- type: line
data: [12, 18, 26]
`)
).toEqual({
version: 1,
height: "80mm",
theme: "document",
option: {
xAxis: {},
yAxis: {},
series: [
{
type: "line",
data: [12, 18, 26]
}
]
}
});
});
it("拒绝 YAML 锚点和别名", () => {
expect(() =>
parseEChartsFence(`
version: 1
height: 80mm
option:
series: &series
- type: line
color: *series
`)
).toThrow(EChartsFenceError);
});
it("拒绝显式 YAML 标签", () => {
expect(() =>
parseEChartsFence(`
version: 1
height: 80mm
option:
series:
- type: !!str line
`)
).toThrow(/不允许使用显式标签/u);
});
});