dom.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import 'basic-mouse-event-polyfill-phantomjs'
  2. import { addEvent, removeEvent, offset, getRect, preventDefaultException, tap, click, prepend } from 'scroll/util/dom'
  3. describe('dom.js', () => {
  4. it('#addEvent() & #removeEvent()', () => {
  5. const ele = document.createElement('div')
  6. const cb = sinon.spy()
  7. addEvent(ele, 'click', cb)
  8. ele.click()
  9. expect(cb)
  10. .to.be.calledOnce
  11. removeEvent(ele, 'click', cb)
  12. ele.click()
  13. expect(cb)
  14. .not.to.be.calledTwice
  15. })
  16. it('#offset()', () => {
  17. const ele = document.createElement('div')
  18. const { left, top } = offset(ele)
  19. expect(left)
  20. .to.equal(0)
  21. expect(top)
  22. .to.equal(0)
  23. })
  24. it('#getRect()', () => {
  25. const ele = document.createElement('div')
  26. document.body.appendChild(ele)
  27. const { top, left, width, height } = getRect(ele)
  28. expect(top)
  29. .to.equal(8)
  30. expect(left)
  31. .to.equal(8)
  32. expect(width)
  33. .to.equal(359)
  34. expect(height)
  35. .to.equal(0)
  36. document.body.removeChild(ele)
  37. })
  38. it('#preventDefaultException()', () => {
  39. const exceptions = {
  40. tagName: /div/i
  41. }
  42. const divEl = document.createElement('div')
  43. const spanEl = document.createElement('span')
  44. expect(preventDefaultException(divEl, exceptions))
  45. .to.be.true
  46. expect(preventDefaultException(spanEl, exceptions))
  47. .to.be.false
  48. })
  49. it('#tap', () => {
  50. const ele = document.createElement('div')
  51. const cb = sinon.spy()
  52. const event = {
  53. pageX: 1,
  54. pageY: 2,
  55. target: ele
  56. }
  57. addEvent(ele, 'tap', cb)
  58. tap(event, 'tap')
  59. expect(cb)
  60. .to.be.calledOnce
  61. })
  62. it('#click', () => {
  63. let ele = document.createElement('div')
  64. let cb = sinon.spy()
  65. let event = {
  66. target: ele
  67. }
  68. addEvent(ele, 'click', cb)
  69. click(event)
  70. expect(cb)
  71. .to.be.calledOnce
  72. })
  73. it('#prepend', () => {
  74. const ele = document.createElement('div')
  75. const target = document.createElement('span')
  76. const el = document.createElement('section')
  77. prepend(el, ele)
  78. expect(ele.firstChild)
  79. .to.equal(el)
  80. expect(ele.childNodes.length)
  81. .to.equal(1)
  82. prepend(target, ele)
  83. expect(ele.firstChild)
  84. .to.equal(target)
  85. })
  86. })