import { describe, it, expect, vi, beforeEach } from 'vitest' import { useAuthService } from '../use-auth-service' import { useAPI } from '#lib/composables' import { AUTH_API } from '#lib/configs' import type { UserStore, UserLoginRequest, BaseResponse } from '#lib/types' // Mock the useAPI function vi.mock('#lib/composables', () => ({ useAPI: vi.fn(), })) describe('useAuthService composable', () => { beforeEach(() => { vi.clearAllMocks() }) it('should make a POST request to log in a user', async () => { const mockUser: UserLoginRequest = { username: 'testuser', password: 'password123', } const mockResponse: BaseResponse = { success: true, data: { id: '1', username: 'testuser', email: 'testuser@example.com', }, } vi.mocked(useAPI).mockResolvedValue({ data: mockResponse }) const { requestLogin } = useAuthService() const response = await requestLogin(mockUser) expect(useAPI).toHaveBeenCalledWith(AUTH_API.LOG_IN, { method: 'POST', body: mockUser, }) expect(response.data).toEqual(mockResponse) }) it('should make a GET request to log out a user', async () => { const mockResponse: BaseResponse = { success: true, data: undefined, } vi.mocked(useAPI).mockResolvedValue({ data: mockResponse }) const { requestLogout } = useAuthService() const response = await requestLogout() expect(useAPI).toHaveBeenCalledWith(AUTH_API.LOG_OUT, { method: 'GET', }) expect(response.data).toEqual(mockResponse) }) })