import { mount } from 'enzyme';
import React from 'react';
import Dropdown from '..';
import mountTest from '../../../tests/shared/mountTest';
import rtlTest from '../../../tests/shared/rtlTest';
import { act, fireEvent, render, sleep } from '../../../tests/utils';
import Menu from '../../menu';
describe('Dropdown', () => {
mountTest(() => (
}>
));
rtlTest(() => (
}>
));
it('overlay is function and has custom transitionName', () => {
const wrapper = mount(
,
);
expect(error).toHaveBeenCalledWith(
expect.stringContaining("[antd: Dropdown] You are using 'bottomCenter'"),
);
expect(error).toHaveBeenCalledWith(
expect.stringContaining("[antd: Dropdown] You are using 'topCenter'"),
);
});
// zombieJ: when replaced with react test lib, it may be mock fully content
it('dropdown should support auto adjust placement', () => {
const wrapper = mount(
menu} visible>
,
);
expect(wrapper.find('Trigger').prop('builtinPlacements')).toEqual(
expect.objectContaining({
bottomLeft: expect.objectContaining({
overflow: {
adjustX: 1,
adjustY: 1,
},
}),
}),
);
});
it('menu item with group', () => {
jest.useFakeTimers();
const { container } = render(
}
>
,
);
// Open
fireEvent.click(container.querySelector('a'));
act(() => {
jest.runAllTimers();
});
// Close
fireEvent.click(container.querySelector('.ant-dropdown-menu-item'));
// Force Motion move on
for (let i = 0; i < 10; i += 1) {
act(() => {
jest.runAllTimers();
});
}
// Motion End
fireEvent.animationEnd(container.querySelector('.ant-slide-up-leave-active'));
expect(container.querySelector('.ant-dropdown-hidden')).toBeTruthy();
jest.useRealTimers();
});
});