Files
ComfyUI_frontend/test/ToOutputRenderLink.test.ts

93 lines
2.3 KiB
TypeScript

import { describe, expect, it, vi } from "vitest"
import { ToOutputRenderLink } from "@/canvas/ToOutputRenderLink"
import { LinkDirection } from "@/types/globalEnums"
describe("ToOutputRenderLink", () => {
describe("connectToOutput", () => {
it("should return early if inputNode is null", () => {
// Setup
const mockNetwork = {}
const mockFromSlot = {}
const mockNode = { id: "test-id", inputs: [mockFromSlot], getInputPos: vi.fn().mockReturnValue([0, 0]) }
const renderLink = new ToOutputRenderLink(
mockNetwork as any,
mockNode as any,
mockFromSlot as any,
undefined,
LinkDirection.CENTER,
)
// Override the node property to simulate null case
Object.defineProperty(renderLink, "node", {
value: null,
})
const mockTargetNode = {
connectSlots: vi.fn(),
}
const mockEvents = {
dispatch: vi.fn(),
}
// Act
renderLink.connectToOutput(
mockTargetNode as any,
{} as any,
mockEvents as any,
)
// Assert
expect(mockTargetNode.connectSlots).not.toHaveBeenCalled()
expect(mockEvents.dispatch).not.toHaveBeenCalled()
})
it("should create connection and dispatch event when inputNode exists", () => {
// Setup
const mockNetwork = {}
const mockFromSlot = {}
const mockNode = {
id: "test-id",
inputs: [mockFromSlot],
getInputPos: vi.fn().mockReturnValue([0, 0]),
}
const renderLink = new ToOutputRenderLink(
mockNetwork as any,
mockNode as any,
mockFromSlot as any,
undefined,
LinkDirection.CENTER,
)
const mockNewLink = { id: "new-link" }
const mockTargetNode = {
connectSlots: vi.fn().mockReturnValue(mockNewLink),
}
const mockEvents = {
dispatch: vi.fn(),
}
// Act
renderLink.connectToOutput(
mockTargetNode as any,
{} as any,
mockEvents as any,
)
// Assert
expect(mockTargetNode.connectSlots).toHaveBeenCalledWith(
expect.anything(),
mockNode,
mockFromSlot,
undefined,
)
expect(mockEvents.dispatch).toHaveBeenCalledWith(
"link-created",
mockNewLink,
)
})
})
})