|
1 | 1 | /* eslint-disable react/no-render-return-value, max-classes-per-file, func-names, no-console */ |
2 | 2 | import React, { cloneElement } from 'react'; |
3 | 3 | import { act } from 'react-dom/test-utils'; |
4 | | -import { mount, ReactWrapper } from 'enzyme'; |
| 4 | +import type { ReactWrapper } from 'enzyme'; |
| 5 | +import { mount } from 'enzyme'; |
5 | 6 | import Portal from 'rc-util/lib/Portal'; |
6 | 7 | import KeyCode from 'rc-util/lib/KeyCode'; |
7 | | -import Dialog, { DialogProps } from '../src'; |
| 8 | +import type { DialogProps } from '../src'; |
| 9 | +import Dialog from '../src'; |
8 | 10 |
|
9 | 11 | describe('dialog', () => { |
10 | 12 | beforeEach(() => { |
@@ -250,10 +252,7 @@ describe('dialog', () => { |
250 | 252 | }); |
251 | 253 |
|
252 | 254 | expect( |
253 | | - (wrapper |
254 | | - .find('.rc-dialog') |
255 | | - .at(0) |
256 | | - .getDOMNode() as HTMLDivElement).style['transform-origin'], |
| 255 | + (wrapper.find('.rc-dialog').at(0).getDOMNode() as HTMLDivElement).style['transform-origin'], |
257 | 256 | ).toBeTruthy(); |
258 | 257 | }); |
259 | 258 |
|
@@ -295,18 +294,6 @@ describe('dialog', () => { |
295 | 294 | expect(onClose).not.toHaveBeenCalled(); |
296 | 295 | }); |
297 | 296 |
|
298 | | - it('afterClose', () => { |
299 | | - const afterClose = jest.fn(); |
300 | | - |
301 | | - const wrapper = mount(<Dialog afterClose={afterClose} visible />); |
302 | | - jest.runAllTimers(); |
303 | | - |
304 | | - wrapper.setProps({ visible: false }); |
305 | | - jest.runAllTimers(); |
306 | | - |
307 | | - expect(afterClose).toHaveBeenCalledTimes(1); |
308 | | - }); |
309 | | - |
310 | 297 | it('zIndex', () => { |
311 | 298 | const wrapper = mount(<Dialog visible zIndex={903} />); |
312 | 299 | expect(wrapper.find('.rc-dialog-wrap').props().style.zIndex).toBe(903); |
@@ -397,4 +384,42 @@ describe('dialog', () => { |
397 | 384 | expect(getRenderTimes()).toEqual(2); |
398 | 385 | }); |
399 | 386 | }); |
| 387 | + |
| 388 | + describe('afterClose', () => { |
| 389 | + it('should trigger afterClose when set visible to false', () => { |
| 390 | + const afterClose = jest.fn(); |
| 391 | + |
| 392 | + const wrapper = mount(<Dialog afterClose={afterClose} visible />); |
| 393 | + jest.runAllTimers(); |
| 394 | + |
| 395 | + wrapper.setProps({ visible: false }); |
| 396 | + jest.runAllTimers(); |
| 397 | + |
| 398 | + expect(afterClose).toHaveBeenCalledTimes(1); |
| 399 | + }); |
| 400 | + |
| 401 | + it('should not trigger afterClose when mount dialog of getContainer={false}', () => { |
| 402 | + const afterClose = jest.fn(); |
| 403 | + |
| 404 | + const wrapper = mount(<Dialog afterClose={afterClose} getContainer={false} />); |
| 405 | + jest.runAllTimers(); |
| 406 | + |
| 407 | + wrapper.setProps({ visible: false }); |
| 408 | + jest.runAllTimers(); |
| 409 | + |
| 410 | + expect(afterClose).toHaveBeenCalledTimes(0); |
| 411 | + }); |
| 412 | + |
| 413 | + it('should not trigger afterClose when mount dialog of forceRender={true}', () => { |
| 414 | + const afterClose = jest.fn(); |
| 415 | + |
| 416 | + const wrapper = mount(<Dialog afterClose={afterClose} forceRender />); |
| 417 | + jest.runAllTimers(); |
| 418 | + |
| 419 | + wrapper.setProps({ visible: false }); |
| 420 | + jest.runAllTimers(); |
| 421 | + |
| 422 | + expect(afterClose).toHaveBeenCalledTimes(0); |
| 423 | + }); |
| 424 | + }); |
400 | 425 | }); |
0 commit comments