pull.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import BScroll from 'scroll/index'
  2. import { dispatchTouchStart, dispatchTouchMove, dispatchTouchEnd } from '../../utils/event'
  3. describe('BScroll - pull', () => {
  4. let scroll
  5. let scroller
  6. let scrollOptions = {
  7. bindToWrapper: true,
  8. probeType: 3,
  9. pullDownRefresh: {
  10. threshold: 90,
  11. stop: 30
  12. },
  13. pullUpLoad: {
  14. threshold: 0,
  15. txt: 'There is no more data'
  16. }
  17. }
  18. beforeEach(() => {
  19. const wrapper = document.createElement('div')
  20. const list = document.createElement('ul')
  21. scroller = document.createElement('div')
  22. scroller.appendChild(list)
  23. wrapper.appendChild(scroller)
  24. document.body.appendChild(wrapper)
  25. wrapper.style.height = '500px'
  26. wrapper.style.overflow = 'hidden'
  27. // wrapper.style.position = 'relative'
  28. let listHTML = ''
  29. list.style.margin = '0'
  30. for (let i = 0; i < 100; i++) {
  31. listHTML += `<li>${i}</li>`
  32. }
  33. list.innerHTML = listHTML
  34. scroll = new BScroll(wrapper, scrollOptions)
  35. })
  36. it('pulldown event', () => {
  37. const pullingDownHandler = sinon.spy()
  38. scroll.on('pullingDown', pullingDownHandler)
  39. const wrapper = scroll.wrapper
  40. dispatchTouchStart(wrapper, {
  41. pageX: 50,
  42. pageY: 50
  43. })
  44. dispatchTouchMove(wrapper, {
  45. pageX: 50,
  46. pageY: 400
  47. })
  48. dispatchTouchEnd(wrapper, {
  49. pageX: 50,
  50. pageY: 400
  51. })
  52. expect(pullingDownHandler)
  53. .to.be.calledOnce
  54. })
  55. it('pulling down and reset', (done) => {
  56. scroll.on('pullingDown', () => {
  57. setTimeout(() => {
  58. scroll.finishPullDown()
  59. console.log('222', scroll.relativeY)
  60. expect(scroll.y)
  61. .to.equal(0)
  62. done()
  63. }, 500)
  64. })
  65. const wrapper = scroll.wrapper
  66. dispatchTouchStart(wrapper, {
  67. pageX: 50,
  68. pageY: 50
  69. })
  70. dispatchTouchMove(wrapper, {
  71. pageX: 50,
  72. pageY: 400
  73. })
  74. dispatchTouchEnd(wrapper, {
  75. pageX: 50,
  76. pageY: 400
  77. })
  78. })
  79. it('pullup event', () => {
  80. const pullingUpHandler = sinon.spy()
  81. scroll.on('pullingUp', () => {
  82. pullingUpHandler()
  83. setTimeout(() => {
  84. scroll.finishPullUp()
  85. }, 500)
  86. })
  87. const wrapper = scroll.wrapper
  88. dispatchTouchStart(wrapper, {
  89. pageX: 50,
  90. pageY: 100
  91. })
  92. dispatchTouchMove(wrapper, {
  93. pageX: 50,
  94. pageY: -2300
  95. })
  96. dispatchTouchEnd(wrapper, {
  97. pageX: 50,
  98. pageY: -2300
  99. })
  100. dispatchTouchStart(wrapper, {
  101. pageX: 50,
  102. pageY: -2300
  103. })
  104. dispatchTouchMove(wrapper, {
  105. pageX: 50,
  106. pageY: -2500
  107. })
  108. dispatchTouchStart(wrapper, {
  109. pageX: 50,
  110. pageY: -2800
  111. })
  112. expect(pullingUpHandler)
  113. .to.be.calledOnce
  114. })
  115. afterEach(() => {
  116. if (scroll) {
  117. document.body.removeChild(scroll.wrapper)
  118. scroll.destroy()
  119. }
  120. })
  121. })