// @ts-nocheck import { describe, it, expect, vi, beforeEach } from 'vitest' import { useUser } from '../use-user' import { formatNumberWithCommas, getTokenCookie } from '#lib/utils' import { useNuxtApp } from 'nuxt/app' // Mock dependencies const mockUserStore = { data: { token: 'user-token', gptoken: 'gp-token', gpMemberId: 12345, member_id: 67890, deny_game_ids: ['game1', 'game2'], }, getTotalBalance: vi.fn(), getSubWalletUser: vi.fn(), getBalance: () => 500, } vi.mock('#lib/stores', () => ({ useUserStore: () => mockUserStore, })) vi.mock('#lib/utils', () => ({ formatNumberWithCommas: vi.fn(), })) vi.mock('nuxt/app', () => ({ useRuntimeConfig: vi.fn().mockReturnValue({ public: { MAIN_CREDIT_UNIT: 'K' }, }), useNuxtApp: vi.fn().mockReturnValue({ $appCookies: vi.mocked({ getTokenCookie: vi.fn(), token: { value: 'user-token' } }), }), })) describe('useUser composable', () => { let $appCookies: any beforeEach(() => { vi.clearAllMocks() mockUserStore.data.value = { token: 'user-token', gptoken: 'gp-token', gpMemberId: 12345, member_id: 67890, deny_game_ids: ['game1', 'game2'], } $appCookies = useNuxtApp().$appCookies }) it('should return the user token from the store when process.client is true', () => { vi.stubGlobal('process', { client: true }) const userComposable = useUser() expect(userComposable.token.value).toBe('user-token') }) it("should return the user's gpToken", () => { const userComposable = useUser() expect(userComposable.gpToken.value).toBe('gp-token') }) it('should return an empty string if gpToken is not defined', () => { mockUserStore.data.gptoken = undefined const userComposable = useUser() expect(userComposable.gpToken.value).toBe('') }) it("should return the user's gpMemberId as a string", () => { const userComposable = useUser() expect(userComposable.gpMemberId.value).toBe('12345') }) it('should return an empty string if gpMemberId is not defined', () => { mockUserStore.data.gpMemberId = undefined const userComposable = useUser() expect(userComposable.gpMemberId.value).toBe('') }) it("should return the user's memberId as a string", () => { const userComposable = useUser() expect(userComposable.memberId.value).toBe('67890') }) it('should return an empty string if memberId is not defined', () => { mockUserStore.data.member_id = undefined const userComposable = useUser() expect(userComposable.memberId.value).toBe('') }) it("should return the user's denyGameIds", () => { const userComposable = useUser() expect(userComposable.denyGameIds.value).toEqual(['game1', 'game2']) }) it('should return an empty array if denyGameIds is not defined', () => { mockUserStore.data.deny_game_ids = undefined const userComposable = useUser() expect(userComposable.denyGameIds.value).toEqual([]) }) it('should return whether the user is not logged in', () => { vi.mocked($appCookies, { token: { value: '' }, }) const userComposable2 = useUser() expect(userComposable2.isLogged.value).toBe(true) }) it('should return the user object', () => { const userComposable = useUser() expect(userComposable.user.value).toEqual(mockUserStore.data) }) it('should return the total balance', () => { mockUserStore.getTotalBalance.mockReturnValue(1000) const userComposable = useUser() expect(userComposable.totalBalance.value).toBe(1000) }) it('should return the sub balance', () => { mockUserStore.getSubWalletUser.mockReturnValue(500) const userComposable = useUser() expect(userComposable.balance.value).toBe(500) }) it('should return the formatted sub balance', () => { vi.mocked(formatNumberWithCommas).mockReturnValue('500,00') mockUserStore.getSubWalletUser.mockReturnValue(500) const userComposable = useUser() expect(userComposable.formattedBalance.value).toBe('500,00 K') }) })