diff --git a/test/tags/TagsList.test.tsx b/test/tags/TagsList.test.tsx
index 47618322..86cf429e 100644
--- a/test/tags/TagsList.test.tsx
+++ b/test/tags/TagsList.test.tsx
@@ -9,6 +9,8 @@ import { Result } from '../../src/utils/Result';
import { TagsModeDropdown } from '../../src/tags/TagsModeDropdown';
import SearchField from '../../src/utils/SearchField';
import { Settings } from '../../src/settings/reducers/settings';
+import { OrderableFields } from '../../src/tags/data/TagsListChildrenProps';
+import SortingDropdown from '../../src/utils/SortingDropdown';
describe('', () => {
let wrapper: ShallowWrapper;
@@ -76,9 +78,42 @@ describe('', () => {
it('triggers tags filtering when search field changes', () => {
const wrapper = createWrapper({ filteredTags: [] });
+ const searchField = wrapper.find(SearchField);
+ expect(searchField).toHaveLength(1);
expect(filterTags).not.toHaveBeenCalled();
- wrapper.find(SearchField).simulate('change');
+ searchField.simulate('change');
expect(filterTags).toHaveBeenCalledTimes(1);
});
+
+ it('triggers ordering when sorting dropdown changes', () => {
+ const wrapper = createWrapper({ filteredTags: [] });
+
+ expect(wrapper.find(SortingDropdown).prop('orderField')).not.toBeDefined();
+ expect(wrapper.find(SortingDropdown).prop('orderDir')).not.toBeDefined();
+ wrapper.find(SortingDropdown).simulate('change', 'tag', 'DESC');
+ expect(wrapper.find(SortingDropdown).prop('orderField')).toEqual('tag');
+ expect(wrapper.find(SortingDropdown).prop('orderDir')).toEqual('DESC');
+ wrapper.find(SortingDropdown).simulate('change', 'visits', 'ASC');
+ expect(wrapper.find(SortingDropdown).prop('orderField')).toEqual('visits');
+ expect(wrapper.find(SortingDropdown).prop('orderDir')).toEqual('ASC');
+ });
+
+ it('can update current order via orderByColumn from table component', () => {
+ const wrapper = createWrapper({ filteredTags: [ 'foo', 'bar' ], stats: {} });
+ const callOrderBy = (field: OrderableFields) => {
+ ((wrapper.find(TagsTable).prop('orderByColumn') as Function)(field) as Function)();
+ };
+
+ wrapper.find(TagsModeDropdown).simulate('change'); // Make sure table is rendered
+
+ callOrderBy('visits');
+ expect(wrapper.find(TagsTable).prop('currentOrder')).toEqual({ field: 'visits', dir: 'ASC' });
+ callOrderBy('visits');
+ expect(wrapper.find(TagsTable).prop('currentOrder')).toEqual({ field: 'visits', dir: 'DESC' });
+ callOrderBy('tag');
+ expect(wrapper.find(TagsTable).prop('currentOrder')).toEqual({ field: 'tag', dir: 'ASC' });
+ callOrderBy('shortUrls');
+ expect(wrapper.find(TagsTable).prop('currentOrder')).toEqual({ field: 'shortUrls', dir: 'ASC' });
+ });
});