user-idle-tracker
Version:
A library to check the status of the user and to run a callback when its considered Idle.
48 lines (39 loc) • 1.27 kB
JavaScript
import UserIdleTracker from './index'
describe('UserIdleTracker', () => {
let callback
let tracker
const idleTime = 1000
beforeEach(() => {
jest.useFakeTimers()
callback = jest.fn()
tracker = new UserIdleTracker(callback, idleTime)
})
it('should call a callback after the idleTime is passed', () => {
jest.advanceTimersByTime(idleTime)
expect(callback).toHaveBeenCalled()
})
it('should not call a callback if an event is triggered before the idleTime', () => {
jest.advanceTimersByTime(500)
document.dispatchEvent(new Event('scroll'))
jest.advanceTimersByTime(500)
expect(callback).not.toHaveBeenCalled()
})
it('should call callback only once', () => {
jest.advanceTimersByTime(idleTime)
jest.advanceTimersByTime(idleTime)
expect(callback).toHaveBeenCalledTimes(1)
})
it('should ignore idle time when destroyed', () => {
tracker.destroy()
jest.advanceTimersByTime(idleTime)
expect(callback).not.toHaveBeenCalled()
})
it('should allow to restart the timer', () => {
jest.advanceTimersByTime(500)
tracker.init()
jest.advanceTimersByTime(500)
expect(callback).not.toHaveBeenCalled()
jest.advanceTimersByTime(500)
expect(callback).toHaveBeenCalled()
})
})