@better-scroll/shared-utils
Version:
shared-utils for BetterScroll
99 lines (79 loc) • 2.38 kB
text/typescript
import {
prepend,
removeChild,
addClass,
removeClass,
tap,
dblclick,
click,
} from '../dom'
describe('dom', () => {
it('prepend', () => {
// append operation
const target1 = document.createElement('div')
const el1 = document.createElement('p')
prepend(el1, target1)
expect(target1.children[0]).toBe(el1)
// prepend operation
const target2 = document.createElement('div')
const child = document.createElement('div')
target2.appendChild(child)
const el2 = document.createElement('p')
prepend(el2, target2)
expect(target2.children[0]).toBe(el2)
expect(target2.children[1]).toBe(child)
})
it('removeChild', () => {
// append operation
const target = document.createElement('div')
const el = document.createElement('p')
prepend(el, target)
expect(target.children[0]).toBe(el)
removeChild(target, el)
expect(target.children.length).toBe(0)
})
it('addClass & removeClass', () => {
const target = document.createElement('div')
addClass(target, 'test')
expect(target.className).toBe(' test')
// same classname
addClass(target, 'test')
addClass(target, 'test2')
expect(target.className).toBe(' test test2')
// exclude unexisted classname
removeClass(target, 'biz')
expect(target.className).toBe(' test test2')
removeClass(target, 'test test2')
expect(target.className).toBe(' ')
})
it('tap & dblclick', () => {
const mockFn1 = jest.fn()
const mockFn2 = jest.fn()
const target = document.createElement('div')
document.body.appendChild(target)
let e = { target } as any
window.addEventListener('tap', mockFn1)
window.addEventListener('dblclick', mockFn2)
tap(e, 'tap')
expect(mockFn1).toBeCalled()
dblclick(e)
expect(mockFn2).toBeCalled()
})
it('click ', () => {
const mockFn1 = jest.fn()
const target = document.createElement('div')
document.body.appendChild(target)
let e = { target, type: 'mouseup' } as any
window.addEventListener('click', mockFn1)
click(e)
expect(mockFn1).toBeCalled()
// fallback to createEvent
Object.defineProperty(window, 'MouseEvent', {
get() {
return undefined
},
})
click(Object.assign(e, { type: 'touchend', changedTouches: [{}] }))
expect(mockFn1).toBeCalledTimes(2)
})
})