import { shallow, ShallowWrapper } from 'enzyme'; import { faCaretDown as caretDownIcon, faCaretUp as caretUpIcon } from '@fortawesome/free-solid-svg-icons'; import { TableOrderIcon } from '../../../src/utils/table/TableOrderIcon'; import { OrderDir } from '../../../src/utils/helpers/ordering'; describe('', () => { let wrapper: ShallowWrapper; const createWrapper = (field: string, currentDir?: OrderDir, className?: string) => { wrapper = shallow( , ); return wrapper; }; afterEach(() => wrapper?.unmount()); it.each([ ['foo', undefined], ['bar', 'DESC' as OrderDir], ['bar', 'ASC' as OrderDir], ])('renders empty when not all conditions are met', (field, dir) => { const wrapper = createWrapper(field, dir); expect(wrapper.html()).toEqual(null); }); it.each([ ['DESC' as OrderDir, caretDownIcon], ['ASC' as OrderDir, caretUpIcon], ])('renders an icon when all conditions are met', (dir, expectedIcon) => { const wrapper = createWrapper('foo', dir); expect(wrapper.html()).not.toEqual(null); expect(wrapper.prop('icon')).toEqual(expectedIcon); }); it.each([ [undefined, 'ms-1'], ['foo', 'foo'], ['bar', 'bar'], ])('renders expected classname', (className, expectedClassName) => { const wrapper = createWrapper('foo', 'ASC', className); expect(wrapper.prop('className')).toEqual(expectedClassName); }); });