index.spec.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import Swipe from '..';
  2. import SwipeItem from '../../swipe-item';
  3. import { mount, triggerDrag, later } from '../../../test/utils';
  4. const Component = {
  5. template: `
  6. <swipe ref="swipe" v-bind="$props">
  7. <swipe-item :style="style">1</swipe-item>
  8. <swipe-item :style="style">2</swipe-item>
  9. <swipe-item :style="style">3</swipe-item>
  10. </swipe>
  11. `,
  12. components: {
  13. Swipe,
  14. SwipeItem
  15. },
  16. props: {
  17. vertical: Boolean,
  18. loop: {
  19. type: Boolean,
  20. default: true
  21. },
  22. touchable: {
  23. type: Boolean,
  24. default: true
  25. },
  26. autoplay: {
  27. type: Number,
  28. default: 0
  29. },
  30. initialSwipe: {
  31. type: Number,
  32. default: 0
  33. }
  34. },
  35. data() {
  36. return {
  37. style: {
  38. width: '100px',
  39. height: '100px'
  40. }
  41. };
  42. }
  43. };
  44. test('swipeTo', async () => {
  45. const wrapper = mount(Component);
  46. const { swipe } = wrapper.vm.$refs;
  47. swipe.swipeTo(2);
  48. await later(30);
  49. expect(swipe.active).toEqual(2);
  50. });
  51. test('initial swipe', () => {
  52. const wrapper = mount(Component);
  53. const { swipe } = wrapper.vm.$refs;
  54. expect(swipe.active).toEqual(0);
  55. wrapper.setProps({ initialSwipe: 2 });
  56. expect(swipe.active).toEqual(2);
  57. });
  58. test('vertical swipe', () => {
  59. const wrapper = mount(Component, {
  60. propsData: {
  61. vertical: true
  62. }
  63. });
  64. const { swipe } = wrapper.vm.$refs;
  65. const track = wrapper.find('.van-swipe__track');
  66. triggerDrag(track, 0, -100);
  67. expect(swipe.active).toEqual(1);
  68. });
  69. test('untouchable', () => {
  70. const wrapper = mount(Component, {
  71. propsData: {
  72. touchable: false
  73. }
  74. });
  75. const { swipe } = wrapper.vm.$refs;
  76. const track = wrapper.find('.van-swipe__track');
  77. triggerDrag(track, 100, 0);
  78. expect(swipe.active).toEqual(0);
  79. });
  80. test('loop', () => {
  81. const wrapper = mount(Component);
  82. const { swipe } = wrapper.vm.$refs;
  83. const track = wrapper.find('.van-swipe__track');
  84. triggerDrag(track, -100, 0);
  85. expect(swipe.active).toEqual(1);
  86. triggerDrag(track, -100, 0);
  87. expect(swipe.active).toEqual(2);
  88. triggerDrag(track, -100, 0);
  89. expect(swipe.active).toEqual(3);
  90. triggerDrag(track, -100, 0);
  91. expect(swipe.active).toEqual(1);
  92. triggerDrag(track, 100, 0);
  93. expect(swipe.active).toEqual(0);
  94. triggerDrag(track, 100, 0);
  95. expect(swipe.active).toEqual(-1);
  96. triggerDrag(track, 100, 0);
  97. expect(swipe.active).toEqual(1);
  98. });
  99. test('not loop', () => {
  100. const wrapper = mount(Component, {
  101. propsData: {
  102. loop: false
  103. }
  104. });
  105. const { swipe } = wrapper.vm.$refs;
  106. const track = wrapper.find('.van-swipe__track');
  107. triggerDrag(track, -100, 0);
  108. expect(swipe.active).toEqual(1);
  109. triggerDrag(track, -100, 0);
  110. expect(swipe.active).toEqual(2);
  111. triggerDrag(track, -100, 0);
  112. expect(swipe.active).toEqual(2);
  113. });