index.spec.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import Vue from 'vue';
  2. import Dialog from '..';
  3. import DialogVue from '../Dialog';
  4. import { mount, later, trigger, transitionStub } from '../../../test/utils';
  5. transitionStub();
  6. test('Dialog function call', async () => {
  7. Dialog.close();
  8. Dialog.alert({
  9. message: '1',
  10. showCancelButton: true
  11. });
  12. await later();
  13. const callback = jest.fn();
  14. const dialog = document.querySelector('.van-dialog');
  15. expect(dialog.style.display).toEqual('');
  16. Dialog.close();
  17. await later();
  18. expect(dialog.style.display).toEqual('none');
  19. Dialog.confirm().catch(callback);
  20. document.querySelector('.van-dialog__cancel').click();
  21. await later();
  22. expect(callback).toHaveBeenCalledWith('cancel');
  23. Dialog.confirm().then(callback);
  24. document.querySelector('.van-dialog__confirm').click();
  25. await later();
  26. expect(callback).toHaveBeenNthCalledWith(2, 'confirm');
  27. });
  28. test('before close', () => {
  29. const wrapper = mount(DialogVue, {
  30. propsData: {
  31. value: true,
  32. showCancelButton: true,
  33. closeOnClickOverlay: true,
  34. beforeClose: (action, done) => done(false)
  35. }
  36. });
  37. const cancel = wrapper.find('.van-dialog__cancel');
  38. cancel.trigger('click');
  39. expect(wrapper.emitted('input')).toBeFalsy();
  40. wrapper.setProps({
  41. beforeClose: (action, done) => {
  42. if (action === 'cancel') {
  43. done();
  44. }
  45. }
  46. });
  47. const overlay = document.querySelector('.van-overlay');
  48. trigger(overlay, 'click');
  49. expect(wrapper.emitted('input')).toBeFalsy();
  50. cancel.trigger('click');
  51. expect(wrapper.emitted('input')[0]).toBeTruthy();
  52. });
  53. test('set default options', () => {
  54. Dialog.setDefaultOptions({ lockScroll: false });
  55. expect(Dialog.currentOptions.lockScroll).toBeFalsy();
  56. Dialog.resetDefaultOptions();
  57. expect(Dialog.currentOptions.lockScroll).toBeTruthy();
  58. });
  59. test('register component', () => {
  60. Vue.use(Dialog);
  61. expect(Vue.component(DialogVue.name)).toBeTruthy();
  62. });
  63. test('button color', () => {
  64. const wrapper = mount(DialogVue, {
  65. propsData: {
  66. value: true,
  67. showCancelButton: true,
  68. cancelButtonColor: 'white',
  69. confirmButtonColor: 'red'
  70. }
  71. });
  72. expect(wrapper).toMatchSnapshot();
  73. });
  74. test('button text', () => {
  75. const wrapper = mount(DialogVue, {
  76. propsData: {
  77. value: true,
  78. showCancelButton: true,
  79. cancelButtonText: 'Custom cancel',
  80. confirmButtonText: 'Custom confirm'
  81. }
  82. });
  83. expect(wrapper).toMatchSnapshot();
  84. });