diff --git a/.vscode/launch.json b/.vscode/launch.json index 9a9c34c..4d89afe 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,9 @@ "${workspaceRoot}/node_modules/jest/bin/jest.js", // Linux: // "${workspaceRoot}/node_modules/.bin/jest", - "--runInBand" + "--runInBand", + "--watch", + "request.test.ts" ], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", diff --git a/src/interceptors/request.ts b/src/interceptors/request.ts index eb7e664..83553fb 100644 --- a/src/interceptors/request.ts +++ b/src/interceptors/request.ts @@ -1,5 +1,5 @@ import { AxiosCacheInstance, CacheRequestConfig } from '../axios/types'; -import { CachedResponse } from '../storage/types'; +import { CachedResponse, CachedStorageValue, LoadingStorageValue } from '../storage/types'; import { Deferred } from '../util/deferred'; import { CACHED_STATUS_CODE, CACHED_STATUS_TEXT } from '../util/status-codes'; import { AxiosInterceptor } from './types'; @@ -27,10 +27,19 @@ export class CacheRequestInterceptor implements AxiosInterceptor { it('tests against specified methods', async () => { @@ -26,4 +27,15 @@ describe('test request interceptor', () => { expect(cache.state).toBe('cached'); }); + + it('tests concurrent requests', async () => { + const axios = mockAxios(); + + const [resp1, resp2] = await Promise.all([axios.get(''), axios.get('')]); + + expect(resp1).toHaveProperty('status', axiosMock.statusCode); + expect(resp1).toHaveProperty('statusText', axiosMock.statusText); + expect(resp2).toHaveProperty('status', StatusCodes.CACHED_STATUS_CODE); + expect(resp2).toHaveProperty('statusText', StatusCodes.CACHED_STATUS_TEXT); + }); });