import { DifyClient, BASE_URL, routes } from "."; import axios from 'axios' jest.mock('axios') describe('Client', () => { let difyClient beforeEach(() => { difyClient = new DifyClient('test') }) test('should create a client', () => { expect(difyClient).toBeDefined(); }) // test updateApiKey test('should update the api key', () => { difyClient.updateApiKey('test2'); expect(difyClient.apiKey).toBe('test2'); }) }); describe('Send Requests', () => { let difyClient beforeEach(() => { difyClient = new DifyClient('test') }) afterEach(() => { jest.resetAllMocks() }) it('should make a successful request to the application parameter', async () => { const method = 'GET' const endpoint = routes.application.url const expectedResponse = { data: 'response' } axios.mockResolvedValue(expectedResponse) await difyClient.sendRequest(method, endpoint) expect(axios).toHaveBeenCalledWith({ method, url: `${BASE_URL}${endpoint}`, params: null, headers: { Authorization: `Bearer ${difyClient.apiKey}`, 'Content-Type': 'application/json', }, responseType: 'json', }) }) it('should handle errors from the API', async () => { const method = 'GET' const endpoint = '/test-endpoint' const errorMessage = 'Request failed with status code 404' axios.mockRejectedValue(new Error(errorMessage)) await expect(difyClient.sendRequest(method, endpoint)).rejects.toThrow( errorMessage ) }) })