import {mountWithTheme} from 'sentry-test/enzyme'; import withApi from 'app/utils/withApi'; describe('withApi', function () { let apiInstance; const MyComponent = jest.fn(props => { apiInstance = props.api; return
; }); it('renders MyComponent with an api prop', function () { const MyComponentWithApi = withApi(MyComponent); mountWithTheme(); expect(MyComponent).toHaveBeenCalledWith( expect.objectContaining({ api: expect.anything(), }), expect.anything() ); }); it('cancels pending API requests when component is unmounted', function () { const MyComponentWithApi = withApi(MyComponent); const wrapper = mountWithTheme(); jest.spyOn(apiInstance, 'clear'); expect(apiInstance.clear).not.toHaveBeenCalled(); wrapper.unmount(); expect(apiInstance.clear).toHaveBeenCalled(); apiInstance.clear.mockRestore(); }); it('does not cancels pending API requests if persistInFlight is enabled', function () { const MyComponentWithApi = withApi(MyComponent, {persistInFlight: true}); const wrapper = mountWithTheme(); jest.spyOn(apiInstance, 'clear'); wrapper.unmount(); expect(apiInstance.clear).not.toHaveBeenCalled(); apiInstance.clear.mockRestore(); }); });