- `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.
85 lines
2.1 KiB
JavaScript
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);
|
|
});
|
|
});
|