Files
hermes-desktop/tests/client/use-voice-settings-mimo.test.ts
T
toor 01d9e301fc
Build / build (push) Canceled after 0s
Playwright / browser (push) Canceled after 0s
initialize Electron desktop app and remove unused files
2026-10-25 01:09:01 +08:00

56 lines
2.0 KiB
TypeScript

// @vitest-environment jsdom
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { nextTick } from 'vue'
const STORAGE_KEY = 'hermes-tts-settings-v2'
describe('useVoiceSettings MiMo settings', () => {
beforeEach(() => {
vi.resetModules()
localStorage.clear()
})
it('defaults MiMo auth and voice clone settings', async () => {
const { useVoiceSettings } = await import('../../packages/client/src/composables/useVoiceSettings')
const settings = useVoiceSettings()
expect(settings.mimoAuthMode.value).toBe('bearer')
expect(settings.mimoVoiceCloneDataUri.value).toBe('')
expect(settings.mimoVoiceCloneFileName.value).toBe('')
expect(settings.mimoVoiceCloneFormat.value).toBe('wav')
})
it('persists MiMo auth mode and voice clone fields', async () => {
const { useVoiceSettings } = await import('../../packages/client/src/composables/useVoiceSettings')
const settings = useVoiceSettings()
settings.setMimoAuthMode('api-key')
settings.setMimoModel('mimo-v2.5-tts-voiceclone')
settings.setMimoVoiceCloneDataUri('data:audio/mp3;base64,ZmFrZQ==')
settings.setMimoVoiceCloneFileName('sample.mp3')
settings.setMimoVoiceCloneFormat('mp3')
await nextTick()
expect(JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}')).toMatchObject({
mimoAuthMode: 'api-key',
mimoModel: 'mimo-v2.5-tts-voiceclone',
mimoVoiceCloneDataUri: 'data:audio/mp3;base64,ZmFrZQ==',
mimoVoiceCloneFileName: 'sample.mp3',
mimoVoiceCloneFormat: 'mp3',
})
})
it('sanitizes invalid persisted MiMo auth mode and clone format', async () => {
localStorage.setItem(STORAGE_KEY, JSON.stringify({
mimoAuthMode: 'bad-mode',
mimoVoiceCloneFormat: 'ogg',
}))
const { useVoiceSettings } = await import('../../packages/client/src/composables/useVoiceSettings')
const settings = useVoiceSettings()
expect(settings.mimoAuthMode.value).toBe('bearer')
expect(settings.mimoVoiceCloneFormat.value).toBe('wav')
})
})