|
|
|
@ -58,6 +58,8 @@ const createDefaultProps = (overrides = {}) => ({ |
|
|
|
const createDefaultState = (overrides = {}) => ({ |
|
|
|
edgeStyle: "angular" as const, |
|
|
|
nodes: [], |
|
|
|
runningNodeIds: new Set<string>(), |
|
|
|
currentNodeIds: [] as string[], |
|
|
|
...overrides, |
|
|
|
}); |
|
|
|
|
|
|
|
@ -287,6 +289,23 @@ describe("EditableEdge", () => { |
|
|
|
expect(stroke).toContain("-active"); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should show pulse animation when connected to selected node", () => { |
|
|
|
mockUseWorkflowStore.mockImplementation((selector) => { |
|
|
|
return selector(createDefaultState({ |
|
|
|
nodes: [{ id: "node-1", selected: true }], |
|
|
|
})); |
|
|
|
}); |
|
|
|
|
|
|
|
const { container } = render( |
|
|
|
<TestWrapper> |
|
|
|
<EditableEdge {...createDefaultProps()} /> |
|
|
|
</TestWrapper> |
|
|
|
); |
|
|
|
|
|
|
|
const paths = container.querySelectorAll("path"); |
|
|
|
expect(paths.length).toBeGreaterThan(2); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should have dimmed opacity when not connected to selected node", () => { |
|
|
|
mockUseWorkflowStore.mockImplementation((selector) => { |
|
|
|
return selector(createDefaultState({ |
|
|
|
@ -308,12 +327,33 @@ describe("EditableEdge", () => { |
|
|
|
}); |
|
|
|
|
|
|
|
describe("Loading Animation", () => { |
|
|
|
it("should show pulse animation when target node is loading", () => { |
|
|
|
it("should show pulse animation when target node is running", () => { |
|
|
|
mockUseWorkflowStore.mockImplementation((selector) => { |
|
|
|
return selector(createDefaultState({ |
|
|
|
nodes: [ |
|
|
|
{ id: "node-1", type: "prompt", selected: false }, |
|
|
|
{ id: "node-2", type: "generateVideo", selected: false, data: { status: "idle" } }, |
|
|
|
], |
|
|
|
runningNodeIds: new Set(["node-2"]), |
|
|
|
})); |
|
|
|
}); |
|
|
|
|
|
|
|
const { container } = render( |
|
|
|
<TestWrapper> |
|
|
|
<EditableEdge {...createDefaultProps()} /> |
|
|
|
</TestWrapper> |
|
|
|
); |
|
|
|
|
|
|
|
const paths = container.querySelectorAll("path"); |
|
|
|
expect(paths.length).toBeGreaterThan(2); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should show pulse animation when target node data is loading", () => { |
|
|
|
mockUseWorkflowStore.mockImplementation((selector) => { |
|
|
|
return selector(createDefaultState({ |
|
|
|
nodes: [ |
|
|
|
{ id: "node-1", type: "prompt", selected: false }, |
|
|
|
{ id: "node-2", type: "nanoBanana", selected: false, data: { status: "loading" } }, |
|
|
|
{ id: "node-2", type: "generateAudio", selected: false, data: { status: "loading" } }, |
|
|
|
], |
|
|
|
})); |
|
|
|
}); |
|
|
|
|