UNPKG

buefy

Version:

Lightweight UI components for Vue.js (v3) based on Bulma

53 lines (44 loc) 1.47 kB
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import debounce from './debounce' describe('debounce', () => { let func: () => void beforeEach(() => { vi.useFakeTimers() func = vi.fn() }) afterEach(() => { vi.useRealTimers() }) it('is not called immediately', () => { const debouncedFunc = debounce(func, 1000) debouncedFunc() expect(func).toHaveBeenCalledTimes(0) }) it('is not called upon several rapid calls', () => { const debouncedFunc = debounce(func, 1000) for (let i = 0; i < 10; i++) { vi.advanceTimersByTime(500) debouncedFunc() } expect(func).toHaveBeenCalledTimes(0) }) it('is called after debounce time', () => { const debouncedFunc = debounce(func, 1000) debouncedFunc() vi.advanceTimersByTime(1000) expect(func).toHaveBeenCalledTimes(1) }) it('is called immediately if immediate is true', () => { const debouncedFunc = debounce(func, 1000, true) debouncedFunc() expect(func).toHaveBeenCalledTimes(1) }) it('is called once upon several rapid calls if immediate is true', () => { const debouncedFunc = debounce(func, 1000, true) for (let i = 0; i < 10; i++) { vi.advanceTimersByTime(500) debouncedFunc() } expect(func).toHaveBeenCalledTimes(1) }) })