import {render} from 'sentry-test/reactTestingLibrary';
import {Client} from 'sentry/api';
import withApi from 'sentry/utils/withApi';
describe('withApi', function () {
let apiInstance: Client | undefined;
type Props = {
/**
* Test passthrough API clients
*/
api?: Client;
};
const MyComponent = jest.fn((props: Props) => {
apiInstance = props.api;
return
;
});
it('renders MyComponent with an api prop', function () {
const MyComponentWithApi = withApi(MyComponent);
render();
expect(MyComponent).toHaveBeenCalledWith(
expect.objectContaining({api: apiInstance}),
expect.anything()
);
});
it('cancels pending API requests when component is unmounted', function () {
const MyComponentWithApi = withApi(MyComponent);
const wrapper = render();
if (apiInstance === undefined) {
throw new Error("apiInstance wasn't defined");
}
jest.spyOn(apiInstance, 'clear');
expect(apiInstance?.clear).not.toHaveBeenCalled();
wrapper.unmount();
expect(apiInstance?.clear).toHaveBeenCalled();
});
});