Files
pleno-vue/tests/unit/authenticated-request.spec.js
T
Jeppe Bundgaard cef187956e Add unit tests for authenticatedRequest error handling and NavigationMenuDepartment functionality:
- `authenticatedRequest`: Test suppression of specific errors, rejection of non-suppressed errors, and general error handling.
- `NavigationMenuDepartment`: Test dynamic department label updates based on route changes.
- Add contract tests for `NavigationMenuItemsAdmin` reactive route context usage.
2026-03-19 13:22:55 +01:00

85 lines
2.1 KiB
JavaScript

import { beforeEach, describe, expect, it, vi } from 'vitest';
const { axiosMock } = vi.hoisted(() => ({
axiosMock: vi.fn()
}));
vi.mock('axios', () => ({
default: axiosMock
}));
import { authenticatedRequest } from '@/components/session/authenticatedRequest.vue';
describe('authenticatedRequest', () => {
beforeEach(() => {
axiosMock.mockReset();
localStorage.clear();
localStorage.setItem('token', 'token');
});
it('suppresses known scanner lpr extraction failures and resolves with response', async () => {
const response = {
status: 500,
data: {
success: false,
data: {
message: 'Internal server error: License plate extraction failed.'
},
meta: [],
includes: []
}
};
axiosMock.mockRejectedValueOnce({ response });
const catchCallable = vi.fn();
const result = await authenticatedRequest('/modules/scanner/lpr', 'POST', { base64_image: 'x' }, catchCallable);
expect(result).toBe(response);
expect(catchCallable).not.toHaveBeenCalled();
});
it('continues to reject non-suppressed scanner errors', async () => {
const error = {
response: {
status: 500,
data: {
success: false,
data: {
message: 'Internal server error: Different scanner problem.'
}
}
}
};
axiosMock.mockRejectedValueOnce(error);
const catchCallable = vi.fn();
await expect(
authenticatedRequest('/modules/scanner/lpr', 'POST', { base64_image: 'x' }, catchCallable)
).rejects.toBe(error);
expect(catchCallable).toHaveBeenCalledWith(error);
});
it('continues to reject non-lpr errors', async () => {
const error = {
response: {
status: 500,
data: {
success: false,
data: {
message: 'Internal server error: License plate extraction failed.'
}
}
}
};
axiosMock.mockRejectedValueOnce(error);
await expect(
authenticatedRequest('/auth/session', 'GET')
).rejects.toBe(error);
});
});