diff --git a/test/settings/ShortUrlsListSettings.test.tsx b/test/settings/ShortUrlsListSettings.test.tsx
index c167ea4e..104fd6f3 100644
--- a/test/settings/ShortUrlsListSettings.test.tsx
+++ b/test/settings/ShortUrlsListSettings.test.tsx
@@ -1,52 +1,43 @@
-import { shallow, ShallowWrapper } from 'enzyme';
+import userEvent from '@testing-library/user-event';
+import { render, screen } from '@testing-library/react';
import { Mock } from 'ts-mockery';
-import {
- DEFAULT_SHORT_URLS_ORDERING,
- Settings,
- ShortUrlsListSettings as ShortUrlsSettings,
-} from '../../src/settings/reducers/settings';
+import { Settings, ShortUrlsListSettings as ShortUrlsSettings } from '../../src/settings/reducers/settings';
import { ShortUrlsListSettings } from '../../src/settings/ShortUrlsListSettings';
-import { OrderingDropdown } from '../../src/utils/OrderingDropdown';
import { ShortUrlsOrder } from '../../src/short-urls/data';
describe('', () => {
- let wrapper: ShallowWrapper;
const setSettings = jest.fn();
- const createWrapper = (shortUrlsList?: ShortUrlsSettings) => {
- wrapper = shallow(
+ const setUp = (shortUrlsList?: ShortUrlsSettings) => ({
+ user: userEvent.setup(),
+ ...render(
({ shortUrlsList })} setShortUrlsListSettings={setSettings} />,
- );
+ ),
+ });
- return wrapper;
- };
-
- afterEach(() => wrapper?.unmount());
afterEach(jest.clearAllMocks);
it.each([
- [undefined, DEFAULT_SHORT_URLS_ORDERING],
- [{}, DEFAULT_SHORT_URLS_ORDERING],
- [{ defaultOrdering: {} }, {}],
- [{ defaultOrdering: { field: 'longUrl', dir: 'DESC' } as ShortUrlsOrder }, { field: 'longUrl', dir: 'DESC' }],
- [{ defaultOrdering: { field: 'visits', dir: 'ASC' } as ShortUrlsOrder }, { field: 'visits', dir: 'ASC' }],
+ [undefined, 'Order by: Created at - DESC'],
+ [{}, 'Order by: Created at - DESC'],
+ [{ defaultOrdering: {} }, 'Order by...'],
+ [{ defaultOrdering: { field: 'longUrl', dir: 'DESC' } as ShortUrlsOrder }, 'Order by: Long URL - DESC'],
+ [{ defaultOrdering: { field: 'visits', dir: 'ASC' } as ShortUrlsOrder }, 'Order by: Visits - ASC'],
])('shows expected ordering', (shortUrlsList, expectedOrder) => {
- const wrapper = createWrapper(shortUrlsList);
- const dropdown = wrapper.find(OrderingDropdown);
-
- expect(dropdown.prop('order')).toEqual(expectedOrder);
+ setUp(shortUrlsList);
+ expect(screen.getByRole('button')).toHaveTextContent(expectedOrder);
});
it.each([
- [undefined, undefined],
- ['longUrl', 'ASC'],
- ['visits', undefined],
- ['title', 'DESC'],
- ])('invokes setSettings when ordering changes', (field, dir) => {
- const wrapper = createWrapper();
- const dropdown = wrapper.find(OrderingDropdown);
+ ['Clear selection', undefined, undefined],
+ ['Long URL', 'longUrl', 'ASC'],
+ ['Visits', 'visits', 'ASC'],
+ ['Title', 'title', 'ASC'],
+ ])('invokes setSettings when ordering changes', async (name, field, dir) => {
+ const { user } = setUp();
expect(setSettings).not.toHaveBeenCalled();
- dropdown.simulate('change', field, dir);
+ await user.click(screen.getByRole('button'));
+ await user.click(screen.getByRole('menuitem', { name }));
expect(setSettings).toHaveBeenCalledWith({ defaultOrdering: { field, dir } });
});
});