import { describe, it, expect, vi, beforeEach } from 'vitest' import { ref } from 'vue' const stateByKey: Record> = {} const useStateMock = vi.fn((key: string, init: () => unknown) => { if (!stateByKey[key]) { stateByKey[key] = ref(init()) } return stateByKey[key] }) vi.stubGlobal('useState', useStateMock) import { useToast } from '../useToast' describe('useToast', () => { beforeEach(() => { stateByKey['hnh-map-toasts'] = ref([]) }) it('exposes toasts and show/dismiss', () => { const { toasts, success, dismiss } = useToast() expect(toasts.value).toEqual([]) success('Done!') expect(toasts.value).toHaveLength(1) expect(toasts.value[0].type).toBe('success') expect(toasts.value[0].text).toBe('Done!') const id = toasts.value[0].id dismiss(id) expect(toasts.value).toHaveLength(0) }) it('error and info set type', () => { const { toasts, error, info } = useToast() error('Failed') expect(toasts.value[0].type).toBe('error') info('Note') expect(toasts.value[1].type).toBe('info') }) it('each toast has unique id', () => { const { toasts, success } = useToast() success('A') success('B') const ids = toasts.value.map((t) => t.id) expect(new Set(ids).size).toBe(2) }) })