Files
MealQuest/web/src/api/queryClient.test.ts
T
dev_agent 048d5dd71a
CI / ci (push) Successful in 1m32s
CI / ci (pull_request) Successful in 1m33s
API client, auth bootstrap and job polling (#42)
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com>
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com>
2026-10-04 08:46:40 -04:00

19 lines
936 B
TypeScript

import { describe, expect, it } from 'vitest'
import { ApiError, createQueryClient, shouldRetry } from './index.ts'
describe('query retries', () => {
it('retry only an ApiError the server marked retryable, a bounded number of times', () => {
expect(shouldRetry(0, new ApiError(503, 'unavailable', 'try later', true))).toBe(true)
expect(shouldRetry(3, new ApiError(503, 'unavailable', 'try later', true))).toBe(false)
expect(shouldRetry(0, new ApiError(401, 'unauthenticated', 'sign in required', false))).toBe(false)
expect(shouldRetry(0, new ApiError(403, 'csrf', 'bad token', false))).toBe(false)
expect(shouldRetry(0, new Error('network down'))).toBe(false)
})
it('are the QueryClient default for queries and mutations', () => {
const options = createQueryClient().getDefaultOptions()
expect(options.queries?.retry).toBe(shouldRetry)
expect(options.mutations?.retry).toBe(shouldRetry)
})
})