index.spec.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import Picker from '..';
  2. import PickerColumn from '../PickerColumn';
  3. import { mount, triggerDrag, later } from '../../../test/utils';
  4. const simpleColumn = ['1990', '1991', '1992', '1993', '1994', '1995'];
  5. const columns = [
  6. {
  7. values: ['vip', 'normal'],
  8. className: 'column1'
  9. },
  10. {
  11. values: simpleColumn,
  12. className: 'column2'
  13. }
  14. ];
  15. test('simple columns confirm & cancel event', () => {
  16. const wrapper = mount(Picker, {
  17. propsData: {
  18. showToolbar: true,
  19. columns: simpleColumn
  20. }
  21. });
  22. wrapper.find('.van-picker__confirm').trigger('click');
  23. wrapper.find('.van-picker__cancel').trigger('click');
  24. expect(wrapper.emitted('confirm')[0]).toEqual(['1990', 0]);
  25. expect(wrapper.emitted('cancel')[0]).toEqual(['1990', 0]);
  26. wrapper.destroy();
  27. });
  28. test('multiple columns confirm & cancel event', () => {
  29. const wrapper = mount(Picker, {
  30. propsData: {
  31. showToolbar: true
  32. }
  33. });
  34. wrapper.find('.van-picker__confirm').trigger('click');
  35. wrapper.find('.van-picker__cancel').trigger('click');
  36. expect(wrapper.emitted('confirm')[0]).toEqual([[], []]);
  37. expect(wrapper.emitted('cancel')[0]).toEqual([[], []]);
  38. });
  39. test('set picker values', () => {
  40. const wrapper = mount(Picker, {
  41. propsData: {
  42. columns
  43. }
  44. });
  45. const { vm } = wrapper;
  46. expect(vm.getColumnValues(-1)).toEqual(undefined);
  47. expect(vm.getColumnValues(1).length).toEqual(6);
  48. expect(vm.getColumnValue(1)).toEqual('1990');
  49. vm.setColumnValue(0, 'normal');
  50. expect(vm.getColumnValue(0)).toEqual('normal');
  51. vm.setColumnIndex(0, 0);
  52. expect(vm.getColumnValue(0)).toEqual('vip');
  53. vm.setColumnValue(1, '1991');
  54. expect(vm.getColumnValue(1)).toEqual('1991');
  55. vm.setColumnValues(0, ['vip', 'normal', 'other']);
  56. expect(vm.getColumnValues(0).length).toEqual(3);
  57. expect(vm.getValues().length).toEqual(2);
  58. vm.setColumnValues(-1, []);
  59. expect(vm.getValues().length).toEqual(2);
  60. vm.setValues(['vip', '1992']);
  61. expect(vm.getColumnIndex(1)).toEqual(2);
  62. expect(vm.getColumnIndex(2)).toEqual(undefined);
  63. expect(vm.getIndexes(2)).toEqual([0, 2]);
  64. vm.setIndexes([1, 4]);
  65. expect(vm.getColumnValue(1)).toEqual('1994');
  66. expect(vm.getColumnValue(2)).toEqual(undefined);
  67. });
  68. test('drag columns', () => {
  69. const wrapper = mount(Picker, {
  70. propsData: {
  71. columns
  72. }
  73. });
  74. triggerDrag(wrapper.find('.van-picker-column'), 0, 0);
  75. triggerDrag(wrapper.find('.van-picker-column'), 0, -100);
  76. expect(wrapper.emitted('change')[0][1]).toEqual(['normal', '1990']);
  77. });
  78. test('drag simple columns', () => {
  79. const wrapper = mount(Picker, {
  80. propsData: {
  81. columns: simpleColumn
  82. }
  83. });
  84. triggerDrag(wrapper.find('.van-picker-column'), 0, -100);
  85. expect(wrapper.emitted('change')[0][1]).toEqual('1992');
  86. });
  87. test('column watch default index', async () => {
  88. const disabled = { disabled: true, text: 1 };
  89. const wrapper = mount(PickerColumn, {
  90. propsData: {
  91. initialOptions: [disabled, ...simpleColumn],
  92. valueKey: 'text',
  93. itemHeight: 50
  94. }
  95. });
  96. await later();
  97. expect(wrapper).toMatchSnapshot();
  98. wrapper.vm.defaultIndex = 2;
  99. expect(wrapper).toMatchSnapshot();
  100. });
  101. test('render title slot', () => {
  102. const wrapper = mount({
  103. template: `
  104. <picker show-toolbar>
  105. <template v-slot:title>Custom title</template>
  106. </picker>
  107. `,
  108. components: {
  109. Picker
  110. }
  111. });
  112. expect(wrapper).toMatchSnapshot();
  113. });