fix(followup-audio): preserve roles chosen before first audio file

This commit is contained in:
2026-10-10 15:03:06 +08:00
parent b4acad8510
commit fc91908cf9
2 changed files with 51 additions and 3 deletions
+35 -1
View File
@@ -1512,10 +1512,44 @@ test('upload sends explicitly selected pre-extraction roles and clears them on p
})
test('a new recording never inherits the previous file role assignment', async () => {
test('a replacement recording never inherits the previous file role assignment', async () => {
const f = setupPanel(); await settle()
f.panel.file.value = new File(['previous'], 'previous.wav')
f.panel.uploadChannelRoles.value = 'left_service'
f.panel.chooseFile({ target: { files: [new File(['synthetic'], 'new.wav')] } })
assert.equal(f.panel.uploadChannelRoles.value, 'unconfirmed')
f.dispose()
})
for (const order of ['role-first', 'file-first']) test(`upload ${order} preserves roles through create and initial review without reselection`, async () => {
let createdRole = 'unconfirmed'
const f = setupPanel({
followupAudioCreate: async payload => { createdRole = payload.channel_roles; return { task_id: 2, status: 'queued' } },
followupAudioDetail: async id => stereoTask({ id, channel_roles: createdRole })
})
await settle(); f.panel.openUpload()
if (order === 'role-first') f.panel.uploadChannelRoles.value = 'left_service'
f.panel.chooseFile({ target: { files: [new File(['synthetic'], 'first.wav')] } })
if (order === 'file-first') f.panel.uploadChannelRoles.value = 'left_service'
f.panel.recordedAt.value = '2026-09-29 09:00:00'
await f.panel.submitUpload()
assert.equal(createdRole, 'left_service')
assert.equal(f.panel.channelRoles.value, 'left_service')
assert.equal(f.panel.savedChannelRoles.value, 'left_service')
assert.equal(f.panel.roleDirty.value, false)
assert.doesNotMatch(f.panel.applyIssue.value, /声道角色/)
f.dispose()
})
test('cancelled file selection keeps current file and roles; new upload starts unconfirmed', async () => {
const f = setupPanel(); await settle(); f.panel.openUpload()
const recording = new File(['synthetic'], 'existing.wav')
f.panel.file.value = recording; f.panel.uploadChannelRoles.value = 'left_service'
f.panel.chooseFile({ target: { files: [] } })
assert.equal(f.panel.file.value, recording)
assert.equal(f.panel.uploadChannelRoles.value, 'left_service')
f.panel.file.value = null; f.panel.closeUpload(); f.panel.openUpload()
assert.equal(f.panel.uploadChannelRoles.value, 'unconfirmed')
f.dispose()
})