Compare commits

...

1 Commits

Author SHA1 Message Date
CodeRabbit Fixer
ce6588b523 fix: test(changeTracker): add regression test for multilineOrOptions forwarding in wrapped prompt (#9418)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 15:22:21 +01:00
2 changed files with 71 additions and 2 deletions

View 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
)
})
})

View File

@@ -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