Files
ComfyUI_frontend/test/NodeSlot.test.ts
Chenlei Hu d20aab757c Serialize NodeInputSlot.widget (#622)
Serialize linked widget on node input slot properly according to current
save format in
76818b54e6/src/extensions/core/widgetInputs.ts
2025-02-26 14:15:31 -05:00

73 lines
2.0 KiB
TypeScript

import { describe, expect, it } from "vitest"
import { INodeInputSlot, INodeOutputSlot } from "@/interfaces"
import { serializeSlot } from "@/NodeSlot"
describe("NodeSlot", () => {
describe("serializeSlot", () => {
it("removes _data from serialized slot", () => {
const slot: INodeOutputSlot = {
_data: "test data",
name: "test-id",
type: "STRING",
links: [],
}
const serialized = serializeSlot(slot)
expect(serialized).not.toHaveProperty("_data")
})
it("removes pos from widget input slots", () => {
const widgetInputSlot: INodeInputSlot = {
name: "test-id",
pos: [10, 20],
type: "STRING",
link: null,
widget: {
name: "test-widget",
type: "combo",
value: "test-value-1",
options: {
values: ["test-value-1", "test-value-2"],
},
},
}
const serialized = serializeSlot(widgetInputSlot)
expect(serialized).not.toHaveProperty("pos")
})
it("preserves pos for non-widget input slots", () => {
const normalSlot: INodeInputSlot = {
name: "test-id",
type: "STRING",
pos: [10, 20],
link: null,
}
const serialized = serializeSlot(normalSlot)
expect(serialized).toHaveProperty("pos")
})
it("preserves only widget name during serialization", () => {
const widgetInputSlot: INodeInputSlot = {
name: "test-id",
type: "STRING",
link: null,
widget: {
name: "test-widget",
type: "combo",
value: "test-value-1",
options: {
values: ["test-value-1", "test-value-2"],
},
},
}
const serialized = serializeSlot(widgetInputSlot)
expect(serialized.widget).toEqual({ name: "test-widget" })
expect(serialized.widget).not.toHaveProperty("type")
expect(serialized.widget).not.toHaveProperty("value")
expect(serialized.widget).not.toHaveProperty("options")
})
})
})