genericDiscoverQuery.spec.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import {waitFor} from 'sentry-test/reactTestingLibrary';
  2. import {doDiscoverQuery} from './genericDiscoverQuery';
  3. describe('doDiscoverQuery', function () {
  4. const api = new MockApiClient();
  5. let eventsMock;
  6. beforeEach(function () {
  7. eventsMock = MockApiClient.addMockResponse({
  8. url: '/organizations/org-slug/events/',
  9. status: 429,
  10. statusCode: 429,
  11. });
  12. });
  13. it('retries discover query when given retry options', async function () {
  14. await expect(
  15. doDiscoverQuery(
  16. api,
  17. '/organizations/org-slug/events/',
  18. {},
  19. {retry: {statusCodes: [429], tries: 3, baseTimeout: 0}}
  20. )
  21. ).rejects.toBeDefined();
  22. expect(eventsMock).toHaveBeenCalledTimes(3);
  23. });
  24. it('fails first discover query and then passes on the retry', async function () {
  25. const promise = doDiscoverQuery(
  26. api,
  27. '/organizations/org-slug/events/',
  28. {},
  29. {retry: {statusCodes: [429], tries: 3, baseTimeout: 10}}
  30. );
  31. await waitFor(function () {
  32. expect(eventsMock).toHaveBeenCalledTimes(1);
  33. });
  34. // update mock to be successful on second request
  35. eventsMock = MockApiClient.addMockResponse({
  36. url: '/organizations/org-slug/events/',
  37. status: 200,
  38. statusCode: 200,
  39. });
  40. await expect(promise).resolves.toBeDefined();
  41. expect(eventsMock).toHaveBeenCalledTimes(1);
  42. });
  43. });