import { jest, describe, expect, it, beforeAll } from '@jest/globals'; import { createWrapper } from 'app/tests/jest/jestHelpers'; import App from '../App.vue'; import { useSession } from 'src/composables/useSession'; const mockPush = jest.fn(); const mockLoggedIn = jest.fn(); const mockDestroy = jest.fn(); const session = useSession(); jest.mock('vue-router', () => ({ useRouter: () => ({ push: mockPush, currentRoute: { value: 'myCurrentRoute' } }), })); jest.mock('src/composables/useSession', () => ({ useSession: () => ({ isLoggedIn: mockLoggedIn, destroy: mockDestroy }), })); jest.mock('vue-i18n', () => ({ createI18n: () => { }, useI18n: () => ({ t: () => { } }), })); describe('App', () => { let vm; beforeAll(() => { const options = { global: { stubs: ['router-view'] } }; vm = createWrapper(App, options).vm; }); it('should return a login error message', async () => { jest.spyOn(vm.quasar, 'notify'); session.isLoggedIn.mockReturnValue(false); const response = { response: { status: 401 } }; expect(vm.responseError(response)).rejects.toEqual(expect.objectContaining(response)); expect(vm.quasar.notify).toHaveBeenCalledWith(expect.objectContaining( { type: 'negative', message: 'login.loginError' } )); }); it('should return an unauthorized error message', async () => { jest.spyOn(vm.quasar, 'notify'); session.isLoggedIn.mockReturnValue(true); const response = { response: { status: 401 } }; expect(vm.responseError(response)).rejects.toEqual(expect.objectContaining(response)); expect(vm.quasar.notify).toHaveBeenCalledWith(expect.objectContaining( { type: 'negative', message: 'errors.statusUnauthorized' } )); expect(session.destroy).toHaveBeenCalled(); }); });