mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2025-12-11 02:09:53 -06:00
Created ManageServersRowDropdown test
This commit is contained in:
parent
c7c32b494e
commit
8618519b6b
@ -16,6 +16,7 @@
|
||||
},
|
||||
"ignorePatterns": ["src/service*.ts"],
|
||||
"rules": {
|
||||
"complexity": "off"
|
||||
"complexity": "off",
|
||||
"@typescript-eslint/no-unnecessary-type-assertion": "off"
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,7 +24,7 @@ describe('<AppUpdateBanner />', () => {
|
||||
});
|
||||
|
||||
it('invokes toggle when alert is toggled', () => {
|
||||
(wrapper.prop('toggle') as Function)(); // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
(wrapper.prop('toggle') as Function)();
|
||||
|
||||
expect(toggle).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@ -42,7 +42,7 @@ describe('<EditDomainRedirectsModal />', () => {
|
||||
it('has different handlers to toggle the modal', () => {
|
||||
expect(toggle).not.toHaveBeenCalled();
|
||||
|
||||
(wrapper.prop('toggle') as Function)(); // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
(wrapper.prop('toggle') as Function)();
|
||||
(wrapper.find(ModalHeader).prop('toggle') as Function)();
|
||||
wrapper.find(Button).first().simulate('click');
|
||||
|
||||
|
||||
84
test/servers/ManageServersRowDropdown.test.tsx
Normal file
84
test/servers/ManageServersRowDropdown.test.tsx
Normal file
@ -0,0 +1,84 @@
|
||||
import { shallow, ShallowWrapper } from 'enzyme';
|
||||
import { Mock } from 'ts-mockery';
|
||||
import { DropdownItem } from 'reactstrap';
|
||||
import { ServerWithId } from '../../src/servers/data';
|
||||
import { ManageServersRowDropdown as createManageServersRowDropdown } from '../../src/servers/ManageServersRowDropdown';
|
||||
|
||||
describe('<ManageServersRowDropdown />', () => {
|
||||
const DeleteServerModal = () => null;
|
||||
const ManageServersRowDropdown = createManageServersRowDropdown(DeleteServerModal);
|
||||
const setAutoConnect = jest.fn();
|
||||
let wrapper: ShallowWrapper;
|
||||
const createWrapper = (autoConnect = false) => {
|
||||
const server = Mock.of<ServerWithId>({ id: 'abc123', autoConnect });
|
||||
|
||||
wrapper = shallow(<ManageServersRowDropdown setAutoConnect={setAutoConnect} server={server} />);
|
||||
|
||||
return wrapper;
|
||||
};
|
||||
|
||||
afterEach(jest.clearAllMocks);
|
||||
|
||||
it('renders expected amount of dropdown items', () => {
|
||||
const wrapper = createWrapper();
|
||||
const items = wrapper.find(DropdownItem);
|
||||
|
||||
expect(items).toHaveLength(5);
|
||||
expect(items.find('[divider]')).toHaveLength(1);
|
||||
expect(items.at(0).prop('to')).toEqual('/server/abc123');
|
||||
expect(items.at(1).prop('to')).toEqual('/server/abc123/edit');
|
||||
});
|
||||
|
||||
it('allows toggling auto-connect', () => {
|
||||
const wrapper = createWrapper();
|
||||
|
||||
expect(setAutoConnect).not.toHaveBeenCalled();
|
||||
wrapper.find(DropdownItem).at(2).simulate('click');
|
||||
expect(setAutoConnect).toHaveBeenCalledWith(expect.objectContaining({ id: 'abc123' }), true);
|
||||
});
|
||||
|
||||
it('renders a modal', () => {
|
||||
const wrapper = createWrapper();
|
||||
const modal = wrapper.find(DeleteServerModal);
|
||||
|
||||
expect(modal).toHaveLength(1);
|
||||
expect(modal.prop('redirectHome')).toEqual(false);
|
||||
expect(modal.prop('server')).toEqual(expect.objectContaining({ id: 'abc123' }));
|
||||
expect(modal.prop('isOpen')).toEqual(false);
|
||||
});
|
||||
|
||||
it('allows toggling the modal', () => {
|
||||
const wrapper = createWrapper();
|
||||
const modalToggle = wrapper.find(DropdownItem).last();
|
||||
|
||||
expect(wrapper.find(DeleteServerModal).prop('isOpen')).toEqual(false);
|
||||
|
||||
modalToggle.simulate('click');
|
||||
expect(wrapper.find(DeleteServerModal).prop('isOpen')).toEqual(true);
|
||||
|
||||
(wrapper.find(DeleteServerModal).prop('toggle') as Function)();
|
||||
expect(wrapper.find(DeleteServerModal).prop('isOpen')).toEqual(false);
|
||||
});
|
||||
|
||||
it('can be toggled', () => {
|
||||
const wrapper = createWrapper();
|
||||
|
||||
expect(wrapper.prop('isOpen')).toEqual(false);
|
||||
|
||||
(wrapper.prop('toggle') as Function)();
|
||||
expect(wrapper.prop('isOpen')).toEqual(true);
|
||||
|
||||
(wrapper.prop('toggle') as Function)();
|
||||
expect(wrapper.prop('isOpen')).toEqual(false);
|
||||
});
|
||||
|
||||
it.each([
|
||||
[ true, 'Do not auto-connect' ],
|
||||
[ false, 'Auto-connect' ],
|
||||
])('shows different auto-connect toggle text depending on current server status', (autoConnect, expectedText) => {
|
||||
const wrapper = createWrapper(autoConnect);
|
||||
const item = wrapper.find(DropdownItem).at(2);
|
||||
|
||||
expect(item.html()).toContain(expectedText);
|
||||
});
|
||||
});
|
||||
@ -13,6 +13,6 @@ describe('<Settings />', () => {
|
||||
|
||||
expect(layout).toHaveLength(1);
|
||||
expect(sections).toHaveLength(1);
|
||||
expect((sections.prop('items') as any[]).flat()).toHaveLength(4); // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
expect((sections.prop('items') as any[]).flat()).toHaveLength(4);
|
||||
});
|
||||
});
|
||||
|
||||
@ -77,7 +77,7 @@ describe('<ShortUrlsList />', () => {
|
||||
|
||||
it('invokes order icon rendering', () => {
|
||||
const renderIcon = (field: OrderableFields) =>
|
||||
(wrapper.find(ShortUrlsTable).prop('renderOrderIcon') as (field: OrderableFields) => ReactElement | null)(field); // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
(wrapper.find(ShortUrlsTable).prop('renderOrderIcon') as (field: OrderableFields) => ReactElement | null)(field);
|
||||
|
||||
expect(renderIcon('visits')).toEqual(null);
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ describe('<TagsCards />', () => {
|
||||
const card = () => wrapper.find(TagCard).at(5);
|
||||
|
||||
expect(card().prop('displayed')).toEqual(false);
|
||||
(card().prop('toggle') as Function)(); // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
(card().prop('toggle') as Function)();
|
||||
expect(card().prop('displayed')).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
@ -68,11 +68,11 @@ describe('<TagsTableRow />', () => {
|
||||
const wrapper = createWrapper();
|
||||
|
||||
expect(wrapper.find(EditTagModal).prop('isOpen')).toEqual(false);
|
||||
(wrapper.find(EditTagModal).prop('toggle') as Function)(); // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
(wrapper.find(EditTagModal).prop('toggle') as Function)();
|
||||
expect(wrapper.find(EditTagModal).prop('isOpen')).toEqual(true);
|
||||
|
||||
expect(wrapper.find(DeleteTagConfirmModal).prop('isOpen')).toEqual(false);
|
||||
(wrapper.find(DeleteTagConfirmModal).prop('toggle') as Function)(); // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
(wrapper.find(DeleteTagConfirmModal).prop('toggle') as Function)();
|
||||
expect(wrapper.find(DeleteTagConfirmModal).prop('isOpen')).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user