import { Notify } from 'quasar'; import { onRequest, onResponseError } from 'src/boot/axios'; import { describe, expect, it, vi } from 'vitest'; vi.mock('src/composables/useSession', () => ({ useSession: () => ({ getToken: () => 'DEFAULT_TOKEN', isLoggedIn: () => vi.fn(), destroy: () => vi.fn(), }), })); vi.mock('src/stores/useStateQueryStore', () => ({ useStateQueryStore: () => ({ add: () => vi.fn(), remove: () => vi.fn(), }), })); describe('Axios boot', () => { describe('onRequest()', async () => { it('should set the "Authorization" property on the headers', async () => { const config = { headers: {} }; const resultConfig = onRequest(config); expect(resultConfig).toEqual( expect.objectContaining({ headers: { Authorization: 'DEFAULT_TOKEN', }, }) ); }); }); describe('onResponseError()', async () => { it('should call to the Notify plugin with a message error for an status code "500"', async () => { Notify.create = vi.fn(); const error = { response: { status: 500, }, }; const result = onResponseError(error); expect(result).rejects.toEqual(expect.objectContaining(error)); expect(Notify.create).toHaveBeenCalledWith( expect.objectContaining({ message: 'An internal server error has ocurred', type: 'negative', }) ); }); it('should call to the Notify plugin with a message from the response property', async () => { Notify.create = vi.fn(); const error = { response: { status: 401, data: { error: { message: 'Invalid user or password', }, }, }, }; const result = onResponseError(error); expect(result).rejects.toEqual(expect.objectContaining(error)); expect(Notify.create).toHaveBeenCalledWith( expect.objectContaining({ message: 'Invalid user or password', type: 'negative', }) ); }); }); });