| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- import BScroll from 'scroll/index'
- import { dispatchTouchStart, dispatchTouchMove, dispatchSwipe } from '../../utils/event'
- describe('BScroll - core scroll', () => {
- let scroll
- let scroller
- let scrollOptions = {
- bindToWrapper: true,
- probeType: 3,
- deceleration: 0.001
- }
- beforeEach(() => {
- const wrapper = document.createElement('div')
- const list = document.createElement('ul')
- scroller = document.createElement('div')
- scroller.appendChild(list)
- wrapper.appendChild(scroller)
- document.body.appendChild(wrapper)
- wrapper.style.height = '500px'
- wrapper.style.overflow = 'hidden'
- let listHTML = ''
- list.style.margin = '0'
- for (let i = 0; i < 100; i++) {
- listHTML += `<li>${i}</li>`
- }
- list.innerHTML = listHTML
- scroll = new BScroll(wrapper, scrollOptions)
- })
- afterEach(() => {
- if (scroll) {
- document.body.removeChild(scroll.wrapper)
- scroll.destroy()
- }
- })
- it('start', () => {
- const wrapper = scroll.wrapper
- const startHandler = sinon.spy()
- scroll.on('beforeScrollStart', startHandler)
- dispatchTouchStart(wrapper, {
- pageX: 100,
- pageY: 50
- })
- expect(startHandler)
- .to.be.calledOnce
- expect(scroll.pointX)
- .to.equal(100)
- expect(scroll.pointY)
- .to.equal(50)
- })
- it('move', () => {
- const wrapper = scroll.wrapper
- const startHandler = sinon.spy()
- const scrollHandler = sinon.spy()
- scroll.on('scrollStart', startHandler)
- scroll.on('scroll', scrollHandler)
- dispatchTouchStart(wrapper, {
- pageX: 100,
- pageY: 100
- })
- dispatchTouchMove(wrapper, {
- pageX: 100,
- pageY: 50
- })
- expect(startHandler)
- .to.be.calledOnce
- expect(scrollHandler)
- .to.be.calledOnce
- })
- it('end', (done) => {
- const wrapper = scroll.wrapper
- const endHandler = sinon.spy()
- scroll.on('touchEnd', endHandler)
- scroll.on('scrollEnd', () => {
- done()
- })
- dispatchSwipe(wrapper, [
- {
- pageX: 100,
- pageY: 100
- },
- {
- pageX: 100,
- pageY: 80
- }
- ], 100, () => {
- expect(endHandler)
- .to.be.calledOnce
- })
- expect(scroll.x)
- .to.equal(0)
- expect(scroll.y)
- .to.equal(0)
- })
- it('scrollStop', (done) => {
- const endHandler = sinon.spy()
- scroll.on('scrollEnd', endHandler)
- scroll.scrollToElement(scroller, 100000, 0, 500)
- setTimeout(() => {
- scroll.stop()
- expect(endHandler)
- .to.be.calledOnce
- done()
- }, 5000)
- })
- it('scrollToElement', () => {
- scroll.scrollToElement(scroller, 1000, 0, 500)
- expect(scroll.y)
- .to.equal(-500)
- scroll.scrollToElement(scroller, 1000, 0, 400)
- expect(scroll.y)
- .to.equal(-400)
- })
- it('scrollBy', () => {
- scroll.scrollBy(0, -300, 1000)
- expect(scroll.y)
- .to.equal(-300)
- scroll.scrollBy(0, -200, 1000)
- expect(scroll.y)
- .to.equal(-500)
- })
- it('resize', (done) => {
- const refreshHandle = sinon.spy()
- scroll.on('refresh', refreshHandle)
- if (document.createEvent) {
- var event = document.createEvent('HTMLEvents')
- event.initEvent('resize', true, true)
- window.dispatchEvent(event)
- } else if (document.createEventObject) {
- window.fireEvent('onresize')
- }
- setTimeout(() => {
- expect(refreshHandle)
- .to.be.called
- done()
- }, 5000)
- })
- })
|