Files
2026-03-02 12:14:13 -08:00

42 lines
1.3 KiB
TypeScript

import { describe, it, expect, vi, beforeEach } from 'vitest'
const mockGet = vi.fn()
vi.mock('axios', () => ({
default: {
create: () => ({
get: mockGet,
interceptors: {
request: { use: vi.fn(), eject: vi.fn() },
response: { use: vi.fn(), eject: vi.fn() },
},
}),
},
}))
describe('createApiClient getSafe', () => {
beforeEach(() => {
mockGet.mockReset()
})
it('returns { ok: false, data: null } when response status is 404', async () => {
const { createApiClient } = await import('./client')
mockGet.mockResolvedValue({ status: 404, data: { error: 'Not found' } })
const client = createApiClient('http://test')
const result = await client.getSafe<unknown>('/api/v1/transactions/138/0xabc')
expect(result).toEqual({ ok: false, data: null })
})
it('returns { ok: true, data } when response status is 200 and body has data', async () => {
const { createApiClient } = await import('./client')
mockGet.mockResolvedValue({ status: 200, data: { data: { hash: '0x123' } } })
const client = createApiClient('http://test')
const result = await client.getSafe<{ hash: string }>('/api/v1/transactions/138/0x123')
expect(result.ok).toBe(true)
expect(result.data).toEqual({ hash: '0x123' })
})
})