From 9aebaa96a8e464cf3b8259543eb21a33cd2c90ce Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 7 Sep 2022 10:30:11 -0400 Subject: [PATCH] Fix tests --- .../hooks/__mocks__/resize-observer.ts | 25 +++++++++++++++ .../hooks/__tests__/useDimensions.test.ts | 32 ++++--------------- 2 files changed, 32 insertions(+), 25 deletions(-) create mode 100644 app/soapbox/hooks/__mocks__/resize-observer.ts diff --git a/app/soapbox/hooks/__mocks__/resize-observer.ts b/app/soapbox/hooks/__mocks__/resize-observer.ts new file mode 100644 index 000000000..c75e292ea --- /dev/null +++ b/app/soapbox/hooks/__mocks__/resize-observer.ts @@ -0,0 +1,25 @@ +let listener: ((rect: any) => void) | undefined = undefined; +const mockDisconnect = jest.fn(); + +class ResizeObserver { + + constructor(ls: any) { + listener = ls; + } + + observe() { + // do nothing + } + unobserve() { + // do nothing + } + disconnect() { + mockDisconnect(); + } + +} + +// eslint-disable-next-line compat/compat +(window as any).ResizeObserver = ResizeObserver; + +export { ResizeObserver as default, listener, mockDisconnect }; \ No newline at end of file diff --git a/app/soapbox/hooks/__tests__/useDimensions.test.ts b/app/soapbox/hooks/__tests__/useDimensions.test.ts index 78524ad77..4e97fdef3 100644 --- a/app/soapbox/hooks/__tests__/useDimensions.test.ts +++ b/app/soapbox/hooks/__tests__/useDimensions.test.ts @@ -1,21 +1,13 @@ import { renderHook, act } from '@testing-library/react-hooks'; +import { listener, mockDisconnect } from '../__mocks__/resize-observer'; import { useDimensions } from '../useDimensions'; -let listener: ((rect: any) => void) | undefined = undefined; - -(window as any).ResizeObserver = class ResizeObserver { - - constructor(ls: any) { - listener = ls; - } - - observe() {} - disconnect() {} - -}; - describe('useDimensions()', () => { + beforeEach(() => { + mockDisconnect.mockClear(); + }); + it('defaults to 0', () => { const { result } = renderHook(() => useDimensions()); @@ -56,16 +48,6 @@ describe('useDimensions()', () => { }); it('disconnects on unmount', () => { - const disconnect = jest.fn(); - (window as any).ResizeObserver = class ResizeObserver { - - observe() {} - disconnect() { - disconnect(); - } - - }; - const { result, unmount } = renderHook(() => useDimensions()); act(() => { @@ -73,8 +55,8 @@ describe('useDimensions()', () => { (result.current[1] as any)(div); }); - expect(disconnect).toHaveBeenCalledTimes(0); + expect(mockDisconnect).toHaveBeenCalledTimes(0); unmount(); - expect(disconnect).toHaveBeenCalledTimes(1); + expect(mockDisconnect).toHaveBeenCalledTimes(1); }); });