mirror of
https://github.com/ecomfe/vue-echarts.git
synced 2026-03-13 08:41:05 +08:00
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { h } from "vue";
|
|
|
|
import { GRAPHIC_COMPONENT_MARKER } from "../src/graphic/marker";
|
|
import { collectOrder, getType } from "../src/graphic/order";
|
|
|
|
const RectGraphic = {
|
|
[GRAPHIC_COMPONENT_MARKER]: "rect",
|
|
render: () => null,
|
|
} as const;
|
|
|
|
const GroupGraphic = {
|
|
[GRAPHIC_COMPONENT_MARKER]: "group",
|
|
render: () => null,
|
|
} as const;
|
|
|
|
describe("graphic order helpers", () => {
|
|
it("detects marked graphic vnode types and ignores invalid values", () => {
|
|
expect(getType(undefined)).toBeNull();
|
|
expect(getType(1)).toBeNull();
|
|
expect(getType({ type: "div" } as any)).toBeNull();
|
|
expect(
|
|
getType(
|
|
h({
|
|
render: () => null,
|
|
}),
|
|
),
|
|
).toBeNull();
|
|
expect(getType(h(RectGraphic))).toBe("rect");
|
|
});
|
|
|
|
it("returns current order for non-object entries", () => {
|
|
const orderMap = new Map<string, number>();
|
|
const order = collectOrder(42, orderMap, 3);
|
|
|
|
expect(order).toBe(3);
|
|
expect(orderMap.size).toBe(0);
|
|
});
|
|
|
|
it("collects id order from regular graphic children", () => {
|
|
const orderMap = new Map<string, number>();
|
|
const container = h("div", [h(RectGraphic, { id: "first" }), h(RectGraphic, { id: "second" })]);
|
|
|
|
const order = collectOrder(container, orderMap, 0);
|
|
|
|
expect(order).toBe(2);
|
|
expect(orderMap.get("id:first")).toBe(0);
|
|
expect(orderMap.get("id:second")).toBe(1);
|
|
});
|
|
|
|
it("descends into group default slot content", () => {
|
|
const orderMap = new Map<string, number>();
|
|
const group = h(GroupGraphic, { id: "group-1" }, () => [h(RectGraphic, { id: "child-1" })]);
|
|
|
|
const order = collectOrder(group, orderMap, 0);
|
|
|
|
expect(order).toBe(2);
|
|
expect(orderMap.get("id:group-1")).toBe(0);
|
|
expect(orderMap.get("id:child-1")).toBe(1);
|
|
});
|
|
|
|
it("handles group vnode without default slot content", () => {
|
|
const orderMap = new Map<string, number>();
|
|
const group = h(GroupGraphic, { id: "group-empty" });
|
|
|
|
const order = collectOrder(group, orderMap, 0);
|
|
|
|
expect(order).toBe(1);
|
|
expect(orderMap.get("id:group-empty")).toBe(0);
|
|
});
|
|
});
|