import { describe, it, expect, vi, beforeEach } from 'vitest' import { useLobbyGames } from '../use-lobby-games' // Mock dependencies const mockNuxtApp = { $appCookies: vi.fn().mockReturnValue({ setTokenCookie: vi.fn(), getTokenCookie: vi.fn(), }), } const mockNadal = { game: { gameCategories: vi.fn(), gameProviders: vi.fn(), } } const mockUseGames = { playGame: vi.fn(), } const mockDevice = { isMobile: false, } vi.mock('#app', () => ({ useDevice: () => mockDevice, persistedState: vi.fn(), })) const mockRuntimeConfig = { public: { DEPOSIT_PAYWIN_DISABLE: '0', }, } vi.mock('nuxt/app', () => ({ useNuxtApp: () => mockNuxtApp, useRuntimeConfig: () => mockRuntimeConfig, useRoute: vi.fn(), useNuxtData: vi.fn().mockReturnValue({ data: [], }), useAsyncData: vi.fn().mockReturnValue({ data: [], }), })) vi.mock('#lib/composables', () => ({ useNadal: () => mockNadal, })) vi.mock('#lib/composables/game/use-games', () => ({ useGames: () => mockUseGames, })) vi.mock('#lib/composables/service/use-api-fetch', () => ({ useApiFetch: vi.fn().mockReturnValue({ request: vi.fn(), }), })) describe('useLobbyGames', () => { beforeEach(() => { vi.clearAllMocks() }) it('should fetch and update game providers', async () => { const mockProviders = [{ name: 'Provider 1', slug: 'provider-1' }] mockNadal.game.gameProviders.mockResolvedValueOnce(mockProviders) const { fetchGameProviders, gameProviders } = useLobbyGames() await fetchGameProviders() expect(gameProviders.value).toEqual(mockProviders) expect(mockNadal.game.gameProviders).toHaveBeenCalledTimes(1) }) it('should fetch and update game categories', async () => { const mockCategories = [{ id: 1, name: 'Category 1' }] mockNadal.game.gameCategories.mockResolvedValueOnce(mockCategories) const { fetchGameCategories, gameCategories } = useLobbyGames() await fetchGameCategories() expect(gameCategories.value).toEqual(mockCategories) expect(mockNadal.game.gameCategories).toHaveBeenCalledTimes(1) }) })