mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 06:20:11 +00:00
test: bucket mock job outputs by media type
This commit is contained in:
@@ -12,17 +12,23 @@ export function buildMockJobOutputs(
|
||||
outputs: GeneratedOutputFixture[]
|
||||
): NonNullable<JobDetailResponse['outputs']> {
|
||||
const nodeId = job.nodeId ?? '5'
|
||||
const nodeOutputs: Pick<TaskOutput[string], 'audio' | 'images' | 'video'> = {}
|
||||
|
||||
const taskOutput = {
|
||||
[nodeId]: {
|
||||
[outputs[0].mediaType ?? 'images']: outputs.map((output) => ({
|
||||
for (const output of outputs) {
|
||||
const mediaType = output.mediaType ?? 'images'
|
||||
|
||||
nodeOutputs[mediaType] = [
|
||||
...(nodeOutputs[mediaType] ?? []),
|
||||
{
|
||||
filename: output.filename,
|
||||
subfolder: output.subfolder ?? '',
|
||||
type: output.type ?? 'output',
|
||||
display_name: output.displayName
|
||||
}))
|
||||
}
|
||||
} satisfies TaskOutput
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
const taskOutput = { [nodeId]: nodeOutputs } satisfies TaskOutput
|
||||
|
||||
return taskOutput
|
||||
}
|
||||
|
||||
100
scripts/browser_tests/buildMockJobOutputs.test.ts
Normal file
100
scripts/browser_tests/buildMockJobOutputs.test.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { buildMockJobOutputs } from '../../browser_tests/fixtures/helpers/buildMockJobOutputs'
|
||||
import type {
|
||||
GeneratedJobFixture,
|
||||
GeneratedOutputFixture
|
||||
} from '../../browser_tests/fixtures/helpers/assetScenarioTypes'
|
||||
|
||||
describe('buildMockJobOutputs', () => {
|
||||
it('defaults nodeId, mediaType, subfolder, and type for a single output', () => {
|
||||
const job = {
|
||||
jobId: 'job-1',
|
||||
outputs: [{ filename: 'single-output.png' }]
|
||||
} satisfies GeneratedJobFixture
|
||||
const outputs = [
|
||||
{
|
||||
filename: 'single-output.png',
|
||||
displayName: 'Single output'
|
||||
}
|
||||
] satisfies GeneratedOutputFixture[]
|
||||
|
||||
expect(buildMockJobOutputs(job, outputs)).toEqual({
|
||||
'5': {
|
||||
images: [
|
||||
{
|
||||
filename: 'single-output.png',
|
||||
subfolder: '',
|
||||
type: 'output',
|
||||
display_name: 'Single output'
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
it('buckets outputs by media type and preserves order within each bucket', () => {
|
||||
const job = {
|
||||
jobId: 'job-2',
|
||||
nodeId: '12',
|
||||
outputs: [{ filename: 'preview.png' }]
|
||||
} satisfies GeneratedJobFixture
|
||||
const outputs = [
|
||||
{
|
||||
filename: 'image-a.png',
|
||||
mediaType: 'images',
|
||||
subfolder: 'gallery',
|
||||
type: 'temp'
|
||||
},
|
||||
{
|
||||
filename: 'clip.mp4',
|
||||
mediaType: 'video',
|
||||
displayName: 'Clip'
|
||||
},
|
||||
{
|
||||
filename: 'image-b.png',
|
||||
mediaType: 'images',
|
||||
displayName: 'Second image'
|
||||
},
|
||||
{
|
||||
filename: 'sound.wav',
|
||||
mediaType: 'audio'
|
||||
}
|
||||
] satisfies GeneratedOutputFixture[]
|
||||
|
||||
expect(buildMockJobOutputs(job, outputs)).toEqual({
|
||||
'12': {
|
||||
images: [
|
||||
{
|
||||
filename: 'image-a.png',
|
||||
subfolder: 'gallery',
|
||||
type: 'temp',
|
||||
display_name: undefined
|
||||
},
|
||||
{
|
||||
filename: 'image-b.png',
|
||||
subfolder: '',
|
||||
type: 'output',
|
||||
display_name: 'Second image'
|
||||
}
|
||||
],
|
||||
video: [
|
||||
{
|
||||
filename: 'clip.mp4',
|
||||
subfolder: '',
|
||||
type: 'output',
|
||||
display_name: 'Clip'
|
||||
}
|
||||
],
|
||||
audio: [
|
||||
{
|
||||
filename: 'sound.wav',
|
||||
subfolder: '',
|
||||
type: 'output',
|
||||
display_name: undefined
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user