mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2024-12-23 09:30:31 +03:00
Added missing tests on ShortUrlsFilteringBar test
This commit is contained in:
parent
8fd07070b8
commit
248f887fb3
2 changed files with 47 additions and 5 deletions
|
@ -73,8 +73,7 @@ const ShortUrlsFilteringBar = (colorGenerator: ColorGenerator) => ({ selectedSer
|
||||||
tooltip={{ placement: 'left' }}
|
tooltip={{ placement: 'left' }}
|
||||||
onChange={toggleTagsMode}
|
onChange={toggleTagsMode}
|
||||||
>
|
>
|
||||||
{tagsMode === 'all' && 'Short URLs including all tags.'}
|
{tagsMode === 'all' ? 'Short URLs including all tags.' : 'Short URLs including any tag.'}
|
||||||
{tagsMode !== 'all' && 'Short URLs including any tag.'}
|
|
||||||
</TooltipToggleSwitch>
|
</TooltipToggleSwitch>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -7,7 +7,8 @@ import SearchField from '../../src/utils/SearchField';
|
||||||
import Tag from '../../src/tags/helpers/Tag';
|
import Tag from '../../src/tags/helpers/Tag';
|
||||||
import { DateRangeSelector } from '../../src/utils/dates/DateRangeSelector';
|
import { DateRangeSelector } from '../../src/utils/dates/DateRangeSelector';
|
||||||
import ColorGenerator from '../../src/utils/services/ColorGenerator';
|
import ColorGenerator from '../../src/utils/services/ColorGenerator';
|
||||||
import { SelectedServer } from '../../src/servers/data';
|
import { ReachableServer, SelectedServer } from '../../src/servers/data';
|
||||||
|
import { TooltipToggleSwitch } from '../../src/utils/TooltipToggleSwitch';
|
||||||
|
|
||||||
jest.mock('react-router-dom', () => ({
|
jest.mock('react-router-dom', () => ({
|
||||||
...jest.requireActual('react-router-dom'),
|
...jest.requireActual('react-router-dom'),
|
||||||
|
@ -21,11 +22,11 @@ describe('<ShortUrlsFilteringBar />', () => {
|
||||||
const ShortUrlsFilteringBar = filteringBarCreator(Mock.all<ColorGenerator>());
|
const ShortUrlsFilteringBar = filteringBarCreator(Mock.all<ColorGenerator>());
|
||||||
const navigate = jest.fn();
|
const navigate = jest.fn();
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const createWrapper = (search = '') => {
|
const createWrapper = (search = '', selectedServer?: SelectedServer) => {
|
||||||
(useLocation as any).mockReturnValue({ search });
|
(useLocation as any).mockReturnValue({ search });
|
||||||
(useNavigate as any).mockReturnValue(navigate);
|
(useNavigate as any).mockReturnValue(navigate);
|
||||||
|
|
||||||
wrapper = shallow(<ShortUrlsFilteringBar selectedServer={Mock.all<SelectedServer>()} />);
|
wrapper = shallow(<ShortUrlsFilteringBar selectedServer={selectedServer ?? Mock.all<SelectedServer>()} />);
|
||||||
|
|
||||||
return wrapper;
|
return wrapper;
|
||||||
};
|
};
|
||||||
|
@ -84,4 +85,46 @@ describe('<ShortUrlsFilteringBar />', () => {
|
||||||
dateRange.simulate('datesChange', dates);
|
dateRange.simulate('datesChange', dates);
|
||||||
expect(navigate).toHaveBeenCalledWith(`/server/1/list-short-urls/1?${expectedQuery}`);
|
expect(navigate).toHaveBeenCalledWith(`/server/1/list-short-urls/1?${expectedQuery}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
[ 'tags=foo,bar,baz', Mock.of<ReachableServer>({ version: '3.0.0' }), 1 ],
|
||||||
|
[ 'tags=foo,bar', Mock.of<ReachableServer>({ version: '3.1.0' }), 1 ],
|
||||||
|
[ 'tags=foo', Mock.of<ReachableServer>({ version: '3.0.0' }), 0 ],
|
||||||
|
[ '', Mock.of<ReachableServer>({ version: '3.0.0' }), 0 ],
|
||||||
|
[ 'tags=foo,bar,baz', Mock.of<ReachableServer>({ version: '2.10.0' }), 0 ],
|
||||||
|
[ '', Mock.of<ReachableServer>({ version: '2.10.0' }), 0 ],
|
||||||
|
])(
|
||||||
|
'renders tags mode toggle if the server supports it and there is more than one tag selected',
|
||||||
|
(search, selectedServer, expectedTagToggleComponents) => {
|
||||||
|
const wrapper = createWrapper(search, selectedServer);
|
||||||
|
const toggle = wrapper.find(TooltipToggleSwitch);
|
||||||
|
|
||||||
|
expect(toggle).toHaveLength(expectedTagToggleComponents);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
[ '', 'Short URLs including any tag.', false ],
|
||||||
|
[ '&tagsMode=all', 'Short URLs including all tags.', true ],
|
||||||
|
[ '&tagsMode=any', 'Short URLs including any tag.', false ],
|
||||||
|
])('expected tags mode tooltip title', (initialTagsMode, expectedToggleText, expectedChecked) => {
|
||||||
|
const wrapper = createWrapper(`tags=foo,bar${initialTagsMode}`, Mock.of<ReachableServer>({ version: '3.0.0' }));
|
||||||
|
const toggle = wrapper.find(TooltipToggleSwitch);
|
||||||
|
|
||||||
|
expect(toggle.prop('children')).toEqual(expectedToggleText);
|
||||||
|
expect(toggle.prop('checked')).toEqual(expectedChecked);
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
[ '', 'tagsMode=all' ],
|
||||||
|
[ '&tagsMode=all', 'tagsMode=any' ],
|
||||||
|
[ '&tagsMode=any', 'tagsMode=all' ],
|
||||||
|
])('redirects to first page when tags mode changes', (initialTagsMode, expectedRedirectTagsMode) => {
|
||||||
|
const wrapper = createWrapper(`tags=foo,bar${initialTagsMode}`, Mock.of<ReachableServer>({ version: '3.0.0' }));
|
||||||
|
const toggle = wrapper.find(TooltipToggleSwitch);
|
||||||
|
|
||||||
|
expect(navigate).not.toHaveBeenCalled();
|
||||||
|
toggle.simulate('change');
|
||||||
|
expect(navigate).toHaveBeenCalledWith(expect.stringContaining(expectedRedirectTagsMode));
|
||||||
|
});
|
||||||
});
|
});
|
Loading…
Reference in a new issue