fix: Dropdown menu not closing on Dashboard view (#11671)

This commit is contained in:
Kamil Gabryjelski
2020-11-12 23:48:48 +01:00
committed by GitHub
parent 5cb6c25ca0
commit 3ad65bc163
9 changed files with 250 additions and 241 deletions

View File

@@ -18,8 +18,7 @@
*/
import React from 'react';
import { shallow } from 'enzyme';
import { DropdownButton } from 'react-bootstrap';
import { Menu } from 'src/common/components';
import { Menu, NoAnimationDropdown } from 'src/common/components';
import RefreshIntervalModal from 'src/dashboard/components/RefreshIntervalModal';
import URLShortLinkModal from 'src/components/URLShortLinkModal';
import HeaderActionsDropdown from 'src/dashboard/components/HeaderActionsDropdown';
@@ -57,40 +56,43 @@ describe('HeaderActionsDropdown', () => {
const wrapper = shallow(
<HeaderActionsDropdown {...props} {...overrideProps} />,
);
return wrapper;
const menu = shallow(
<div>{wrapper.find(NoAnimationDropdown).props().overlay}</div>,
);
return { wrapper, menu };
}
describe('readonly-user', () => {
const overrideProps = { userCanSave: false };
it('should render the DropdownButton', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(DropdownButton)).toExist();
const { wrapper } = setup(overrideProps);
expect(wrapper.find(NoAnimationDropdown)).toExist();
});
it('should not render the SaveModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(SaveModal)).not.toExist();
const { menu } = setup(overrideProps);
expect(menu.find(SaveModal)).not.toExist();
});
it('should render five Menu items', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(Menu.Item)).toHaveLength(5);
const { menu } = setup(overrideProps);
expect(menu.find(Menu.Item)).toHaveLength(5);
});
it('should render the RefreshIntervalModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(RefreshIntervalModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(RefreshIntervalModal)).toExist();
});
it('should render the URLShortLinkModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(URLShortLinkModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(URLShortLinkModal)).toExist();
});
it('should not render the CssEditor', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(CssEditor)).not.toExist();
const { menu } = setup(overrideProps);
expect(menu.find(CssEditor)).not.toExist();
});
});
@@ -98,33 +100,33 @@ describe('HeaderActionsDropdown', () => {
const overrideProps = { userCanSave: true };
it('should render the DropdownButton', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(DropdownButton)).toExist();
const { wrapper } = setup(overrideProps);
expect(wrapper.find(NoAnimationDropdown)).toExist();
});
it('should render the SaveModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(SaveModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(SaveModal)).toExist();
});
it('should render six Menu items', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(Menu.Item)).toHaveLength(6);
const { menu } = setup(overrideProps);
expect(menu.find(Menu.Item)).toHaveLength(6);
});
it('should render the RefreshIntervalModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(RefreshIntervalModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(RefreshIntervalModal)).toExist();
});
it('should render the URLShortLinkModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(URLShortLinkModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(URLShortLinkModal)).toExist();
});
it('should not render the CssEditor', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(CssEditor)).not.toExist();
const { menu } = setup(overrideProps);
expect(menu.find(CssEditor)).not.toExist();
});
});
@@ -132,33 +134,33 @@ describe('HeaderActionsDropdown', () => {
const overrideProps = { userCanSave: true, editMode: true };
it('should render the DropdownButton', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(DropdownButton)).toExist();
const { wrapper } = setup(overrideProps);
expect(wrapper.find(NoAnimationDropdown)).toExist();
});
it('should render the SaveModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(SaveModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(SaveModal)).toExist();
});
it('should render seven MenuItems', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(Menu.Item)).toHaveLength(7);
const { menu } = setup(overrideProps);
expect(menu.find(Menu.Item)).toHaveLength(7);
});
it('should render the RefreshIntervalModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(RefreshIntervalModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(RefreshIntervalModal)).toExist();
});
it('should render the URLShortLinkModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(URLShortLinkModal)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(URLShortLinkModal)).toExist();
});
it('should render the CssEditor', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(CssEditor)).toExist();
const { menu } = setup(overrideProps);
expect(menu.find(CssEditor)).toExist();
});
});
});