53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
buildVideoSubmissionKey,
|
|
createVideoSubmissionBaseline,
|
|
shouldResolveVideoSubmissionLock,
|
|
} from '@/lib/novel-promotion/stages/video-stage-runtime/immediate-video-submission'
|
|
|
|
describe('immediate video submission lock', () => {
|
|
it('regenerating an existing video -> keeps local lock until task state or output changes', () => {
|
|
const panel = {
|
|
panelId: 'panel-1',
|
|
storyboardId: 'storyboard-1',
|
|
panelIndex: 0,
|
|
videoUrl: 'https://example.com/original.mp4',
|
|
videoErrorMessage: null,
|
|
videoTaskRunning: false,
|
|
}
|
|
const baseline = createVideoSubmissionBaseline(panel)
|
|
|
|
expect(buildVideoSubmissionKey(panel)).toBe('panel-1')
|
|
expect(
|
|
shouldResolveVideoSubmissionLock(
|
|
{
|
|
...panel,
|
|
videoTaskRunning: false,
|
|
},
|
|
baseline,
|
|
baseline.startedAt + 1_000,
|
|
),
|
|
).toBe(false)
|
|
expect(
|
|
shouldResolveVideoSubmissionLock(
|
|
{
|
|
...panel,
|
|
videoTaskRunning: true,
|
|
},
|
|
baseline,
|
|
baseline.startedAt + 1_000,
|
|
),
|
|
).toBe(true)
|
|
expect(
|
|
shouldResolveVideoSubmissionLock(
|
|
{
|
|
...panel,
|
|
videoUrl: 'https://example.com/regenerated.mp4',
|
|
},
|
|
baseline,
|
|
baseline.startedAt + 1_000,
|
|
),
|
|
).toBe(true)
|
|
})
|
|
})
|