test: bucket mock job outputs by media type

This commit is contained in:
Benjamin Lu
2026-04-09 13:13:35 -07:00
parent 728f3fb764
commit a721bdc67b
2 changed files with 112 additions and 6 deletions

View File

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

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