56 lines
2.0 KiB
TypeScript
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')
|
|
})
|
|
})
|