ytptube/ui/tests/composables/usePresetOptions.test.ts
2026-04-08 01:10:43 +03:00

58 lines
1.6 KiB
TypeScript

import { describe, expect, it } from 'bun:test'
import { usePresetOptions } from '~/composables/usePresetOptions'
import type { Preset } from '~/types/presets'
const buildPreset = (name: string, isDefault: boolean): Preset => ({
name,
default: isDefault,
description: '',
folder: '',
template: '',
cookies: '',
cli: '',
priority: 0,
})
const setConfigStore = (presets: Preset[]) => {
;(globalThis as any).useConfigStore = () => ({
presets,
app: {
download_path: '/downloads',
},
})
}
describe('usePresetOptions', () => {
it('groups custom presets before default presets by default', () => {
setConfigStore([
buildPreset('default_video', true),
buildPreset('custom_audio', false),
])
const { selectItems } = usePresetOptions()
expect(selectItems.value).toEqual([
{ type: 'label', label: 'Custom presets' },
{ label: 'Custom Audio', value: 'custom_audio' },
{ type: 'label', label: 'Default presets' },
{ label: 'Default Video', value: 'default_video' },
])
})
it('supports default-first grouping when requested', () => {
setConfigStore([
buildPreset('default_video', true),
buildPreset('custom_audio', false),
])
const { selectItems } = usePresetOptions(undefined, { order: 'default-first' })
expect(selectItems.value).toEqual([
{ type: 'label', label: 'Default presets' },
{ label: 'Default Video', value: 'default_video' },
{ type: 'label', label: 'Custom presets' },
{ label: 'Custom Audio', value: 'custom_audio' },
])
})
})