mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 14:30:41 +00:00
fix: test(changeTracker): add regression test for multilineOrOptions forwarding in wrapped prompt (#9418)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
62
src/scripts/changeTracker.test.ts
Normal file
62
src/scripts/changeTracker.test.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import type { CanvasPointerEvent } from '@/lib/litegraph/src/litegraph'
|
||||
import { LGraphCanvas } from '@/lib/litegraph/src/litegraph'
|
||||
|
||||
import { ChangeTracker } from './changeTracker'
|
||||
|
||||
vi.mock('@/platform/workflow/management/stores/workflowStore', () => ({
|
||||
useWorkflowStore: vi.fn(() => ({
|
||||
activeWorkflow: null
|
||||
})),
|
||||
ComfyWorkflow: vi.fn()
|
||||
}))
|
||||
|
||||
vi.mock('./api', () => ({
|
||||
api: {
|
||||
addEventListener: vi.fn(),
|
||||
apiURL: vi.fn((path: string) => path)
|
||||
}
|
||||
}))
|
||||
|
||||
vi.mock('./app', () => ({
|
||||
app: {
|
||||
ui: { autoQueueEnabled: false, autoQueueMode: 'instant' },
|
||||
canvas: { ds: { scale: 1, offset: [0, 0] } },
|
||||
constructor: { maskeditor_is_opended: undefined }
|
||||
},
|
||||
ComfyApp: vi.fn()
|
||||
}))
|
||||
|
||||
describe('ChangeTracker.init', () => {
|
||||
it('forwards multiline argument to original prompt', () => {
|
||||
const originalPrompt = vi.fn()
|
||||
LGraphCanvas.prototype.prompt = originalPrompt
|
||||
|
||||
ChangeTracker.init()
|
||||
|
||||
const wrappedPrompt = LGraphCanvas.prototype.prompt
|
||||
expect(wrappedPrompt).not.toBe(originalPrompt)
|
||||
|
||||
const mockCallback = vi.fn()
|
||||
const mockEvent = {} as CanvasPointerEvent
|
||||
const multilineValue = true
|
||||
|
||||
wrappedPrompt.call(
|
||||
{} as LGraphCanvas,
|
||||
'Title',
|
||||
'value',
|
||||
mockCallback,
|
||||
mockEvent,
|
||||
multilineValue
|
||||
)
|
||||
|
||||
expect(originalPrompt).toHaveBeenCalledWith(
|
||||
'Title',
|
||||
'value',
|
||||
expect.any(Function),
|
||||
mockEvent,
|
||||
true
|
||||
)
|
||||
})
|
||||
})
|
||||
@@ -307,14 +307,21 @@ export class ChangeTracker {
|
||||
title: string,
|
||||
value: string | number,
|
||||
callback: (v: string) => void,
|
||||
event: CanvasPointerEvent
|
||||
event: CanvasPointerEvent,
|
||||
multiline?: boolean
|
||||
) {
|
||||
const extendedCallback = (v: string) => {
|
||||
callback(v)
|
||||
checkState()
|
||||
}
|
||||
logger.debug('checkState on prompt')
|
||||
return prompt.apply(this, [title, value, extendedCallback, event])
|
||||
return prompt.apply(this, [
|
||||
title,
|
||||
value,
|
||||
extendedCallback,
|
||||
event,
|
||||
multiline
|
||||
])
|
||||
}
|
||||
|
||||
// Handle litegraph context menu for COMBO widgets
|
||||
|
||||
Reference in New Issue
Block a user