import * as React from 'react'; import { FocusRects } from './useFocusRects'; import { IsFocusHiddenClassName, IsFocusVisibleClassName, setFocusVisibility } from './setFocusVisibility'; import * as getWindow from './dom/getWindow'; import { mount } from 'enzyme'; describe('setFocusVisibility', function () { var wrapper; var classNames = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any var mockWindow = { addEventListener: function (name, callback) { mockWindow[name] = callback; }, removeEventListener: function (name, callback) { if (mockWindow[name] === callback) { mockWindow[name] = undefined; } }, document: { body: { classList: { contains: function (name) { return classNames.indexOf(name) > -1; }, add: function (name) { return classNames.indexOf(name) < 0 && classNames.push(name); }, remove: function (name) { return classNames.indexOf(name) > -1 && classNames.splice(classNames.indexOf(name), 1); }, toggle: function (name, val) { var hasClass = classNames.indexOf(name) > -1; if (hasClass !== val) { if (hasClass) { classNames.splice(classNames.indexOf(name), 1); } else { classNames.push(name); } } }, }, }, }, }; var mockTarget = { ownerDocument: { defaultView: mockWindow, }, }; beforeEach(function () { jest.spyOn(getWindow, 'getWindow').mockReturnValue(mockWindow); classNames = []; wrapper = mount(React.createElement(FocusRects, null)); }); afterEach(function () { return wrapper.unmount(); }); it('hints to show focus', function () { setFocusVisibility(true); expect(classNames.indexOf(IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(IsFocusVisibleClassName) > -1).toEqual(true); }); it('hints to hide focus', function () { setFocusVisibility(true); expect(classNames.indexOf(IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(IsFocusVisibleClassName) > -1).toEqual(true); setFocusVisibility(false); expect(classNames.indexOf(IsFocusHiddenClassName) > -1).toEqual(true); expect(classNames.indexOf(IsFocusVisibleClassName) > -1).toEqual(false); }); it('hints to show focus with target specified', function () { setFocusVisibility(true, mockTarget); expect(classNames.indexOf(IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(IsFocusVisibleClassName) > -1).toEqual(true); }); it('hints to hide focus with target specified', function () { setFocusVisibility(true, mockTarget); expect(classNames.indexOf(IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(IsFocusVisibleClassName) > -1).toEqual(true); setFocusVisibility(false, mockTarget); expect(classNames.indexOf(IsFocusHiddenClassName) > -1).toEqual(true); expect(classNames.indexOf(IsFocusVisibleClassName) > -1).toEqual(false); }); }); //# sourceMappingURL=setFocusVisibility.test.js.map