index.spec.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import Checkbox from '..';
  2. import CheckboxGroup from '../../checkbox-group';
  3. import { mount, later } from '../../../test/utils';
  4. test('switch checkbox', async () => {
  5. const wrapper = mount(Checkbox);
  6. wrapper.vm.$on('input', value => {
  7. wrapper.setData({ value });
  8. });
  9. const icon = wrapper.find('.van-checkbox__icon');
  10. icon.trigger('click');
  11. await later();
  12. icon.trigger('click');
  13. await later();
  14. expect(wrapper.emitted('input')).toEqual([[true], [false]]);
  15. expect(wrapper.emitted('change')).toEqual([[true], [false]]);
  16. });
  17. test('disabled', () => {
  18. const wrapper = mount(Checkbox, {
  19. propsData: {
  20. disabled: true
  21. }
  22. });
  23. wrapper.find('.van-checkbox__icon').trigger('click');
  24. expect(wrapper.emitted('input')).toBeFalsy();
  25. });
  26. test('label disabled', () => {
  27. const wrapper = mount(Checkbox, {
  28. slots: {
  29. default: '<div />'
  30. },
  31. propsData: {
  32. labelDisabled: true
  33. }
  34. });
  35. wrapper.find('.van-checkbox__label').trigger('click');
  36. expect(wrapper.emitted('input')).toBeFalsy();
  37. });
  38. test('checkbox group', async () => {
  39. const wrapper = mount({
  40. template: `
  41. <checkbox-group v-model="result" :max="2">
  42. <checkbox v-for="item in list" :key="item" :name="item"></checkbox>
  43. </checkbox-group>
  44. `,
  45. components: {
  46. Checkbox,
  47. CheckboxGroup
  48. },
  49. data() {
  50. return {
  51. result: [],
  52. list: ['a', 'b', 'c']
  53. };
  54. }
  55. });
  56. const icons = wrapper.findAll('.van-checkbox__icon');
  57. icons.at(0).trigger('click');
  58. await later();
  59. icons.at(1).trigger('click');
  60. await later();
  61. icons.at(2).trigger('click');
  62. expect(wrapper.vm.result).toEqual(['a', 'b']);
  63. await later();
  64. icons.at(0).trigger('click');
  65. await later();
  66. expect(wrapper.vm.result).toEqual(['b']);
  67. });
  68. test('click event', () => {
  69. const onClick = jest.fn();
  70. const wrapper = mount(Checkbox, {
  71. listeners: {
  72. click: onClick
  73. }
  74. });
  75. wrapper.trigger('click');
  76. expect(onClick).toHaveBeenCalledTimes(1);
  77. const icon = wrapper.find('.van-checkbox__icon');
  78. icon.trigger('click');
  79. expect(onClick).toHaveBeenCalledTimes(2);
  80. });