Add axios request queue interceptor with unit tests:

- Introduce `installAxiosRequestQueue` to manage and queue requests globally.
- Update `main.js` to install the interceptor at app initialization.
- Add `__skipRequestQueue` configuration in `authenticatedRequest` for bypassing the queue.
- Create unit tests to validate queue behavior and ensure request sequencing.
This commit is contained in:
Jeppe Bundgaard
2026-03-19 14:01:25 +01:00
parent a73c28795b
commit 3f1502184a
4 changed files with 135 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
import axios from "axios";
import { enqueueRequest } from "@/services/requestQueue.js";
let requestInterceptorId = null;
const isQueueBypassed = (config) => config?.__skipRequestQueue === true;
export const installAxiosRequestQueue = () => {
if (!axios?.interceptors?.request) {
return;
}
if (requestInterceptorId !== null) {
return;
}
requestInterceptorId = axios.interceptors.request.use((config) => {
if (isQueueBypassed(config) || config?.__queueAdapterWrapped) {
return config;
}
const resolvedAdapter = axios.getAdapter(config?.adapter ?? axios.defaults.adapter);
config.__queueAdapterWrapped = true;
config.adapter = (adapterConfig) => enqueueRequest(() => resolvedAdapter(adapterConfig));
return config;
});
};
export const __resetAxiosRequestQueueInstallerForTests = () => {
if (requestInterceptorId !== null && axios?.interceptors?.request) {
axios.interceptors.request.eject(requestInterceptorId);
}
requestInterceptorId = null;
};