import { describe, it, expect, vi, beforeEach } from 'vitest' import { useNuxtData } from 'nuxt/app' import { AppDataEnum } from '#lib/enums' import { useDataBank } from '#lib/composables' import type { UserBankItem } from '#lib/types' const mockUserBankItems: UserBankItem[] = [ { bank_account_name: 'John Doe', bank_account_no: '1234567890', bank_code: 'vcb', bank_name: 'Vietcombank', is_disable: false, _id: '60d0fe4f5311236168a109ca', }, { bank_account_name: 'Jane Smith', bank_account_no: '0987654321', bank_code: 'vcb', bank_name: 'Vietcombank', is_disable: false, _id: '60d0fe4f5311236168a109cb', }, ] vi.mock('nuxt/app', () => ({ useNuxtData: vi.fn(), })) vi.mock('#imports', () => ({ persistedState: vi.fn().mockReturnValue({ localStorage: {}, }), })) describe('useDataBank', () => { beforeEach(() => { vi.mocked(useNuxtData).mockReturnValue({ data: mockUserBankItems as UserBankItem, }) }) it('should retrieve user bank data from Nuxt data store', () => { const { banks } = useDataBank() expect(useNuxtData).toHaveBeenCalledWith(AppDataEnum.UserBanks) expect(banks).toEqual(mockUserBankItems) }) it('should return an empty array if no data is available', () => { vi.mocked(useNuxtData).mockReturnValue({ data: [] as UserBankItem, }) const { banks } = useDataBank() expect(useNuxtData).toHaveBeenCalledWith(AppDataEnum.UserBanks) expect(banks).toEqual([]) }) })