Files
sentinel/static/app/utils/discover/genericDiscoverQuery.spec.tsx
2024-02-15 17:01:50 +00:00

48 lines
1.4 KiB
TypeScript

import {waitFor} from 'sentry-test/reactTestingLibrary';
import {doDiscoverQuery} from './genericDiscoverQuery';
describe('doDiscoverQuery', function () {
const api = new MockApiClient();
let eventsMock;
beforeEach(function () {
eventsMock = MockApiClient.addMockResponse({
url: '/organizations/org-slug/events/',
status: 429,
statusCode: 429,
});
});
it('retries discover query when given retry options', async function () {
await expect(
doDiscoverQuery(
api,
'/organizations/org-slug/events/',
{},
{retry: {statusCodes: [429], tries: 3, baseTimeout: 0}}
)
).rejects.toBeDefined();
expect(eventsMock).toHaveBeenCalledTimes(3);
});
it('fails first discover query and then passes on the retry', async function () {
const promise = doDiscoverQuery(
api,
'/organizations/org-slug/events/',
{},
{retry: {statusCodes: [429], tries: 3, baseTimeout: 10}}
);
await waitFor(function () {
expect(eventsMock).toHaveBeenCalledTimes(1);
});
// update mock to be successful on second request
eventsMock = MockApiClient.addMockResponse({
url: '/organizations/org-slug/events/',
status: 200,
statusCode: 200,
});
await expect(promise).resolves.toBeDefined();
expect(eventsMock).toHaveBeenCalledTimes(1);
});
});