@better-scroll/core
Version:
Minimalistic core scrolling for BetterScroll, it is pure and tiny
72 lines (67 loc) • 1.64 kB
text/typescript
import Scroller from '../scroller/Scroller'
import { OptionsConstructor } from '../Options'
import { EventEmitter } from '@better-scroll/shared-utils'
jest.mock('../scroller/Scroller')
jest.mock('../Options')
const BScroll = jest.fn().mockImplementation((wrapper, options) => {
options = Object.assign(new OptionsConstructor(), options)
const eventEmitter = new EventEmitter([
// bscroll
'refresh',
'enable',
'disable',
'destroy',
// scroller
'beforeScrollStart',
'scrollStart',
'scroll',
'scrollEnd',
'touchEnd',
'flick',
'alterOptions',
'mousewheelStart',
'mousewheelMove',
'mousewheelEnd',
])
const res = {
wrapper: wrapper,
options: options,
hooks: new EventEmitter([
'refresh',
'enable',
'disable',
'destroy',
'beforeInitialScrollTo',
]),
scroller: new Scroller(wrapper, wrapper.children[0], options),
// own methods
proxy: jest.fn(),
refresh: jest.fn(),
// proxy methods
scrollTo: jest.fn(),
resetPosition: jest.fn(),
registerType: jest.fn().mockImplementation((names: string[]) => {
names.forEach((name) => {
const eventTypes = eventEmitter.eventTypes
eventTypes[name] = name
})
}),
disable: jest.fn(),
enable: jest.fn(),
stop: jest.fn(),
plugins: {},
x: 0,
y: 0,
maxScrollY: 0,
maxScrollX: 0,
minScrollX: 0,
minScrollY: 0,
hasVerticalScroll: true,
hasHorizontalScroll: false,
enabled: true,
pending: false,
}
Object.setPrototypeOf(res, eventEmitter)
return res
})
export default BScroll