|
|
|
@ -3,6 +3,10 @@ import MockAdapter from 'axios-mock-adapter'; |
|
|
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest'; |
|
|
|
|
|
|
|
import { RequestClient } from './request-client'; |
|
|
|
import { |
|
|
|
defaultResponseInterceptor, |
|
|
|
errorMessageResponseInterceptor, |
|
|
|
} from './preset-interceptors'; |
|
|
|
|
|
|
|
describe('requestClient', () => { |
|
|
|
let mock: MockAdapter; |
|
|
|
@ -64,6 +68,38 @@ describe('requestClient', () => { |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should preserve response metadata when an interceptor rejects', async () => { |
|
|
|
requestClient.addResponseInterceptor( |
|
|
|
defaultResponseInterceptor({ |
|
|
|
codeField: 'code', |
|
|
|
dataField: 'data', |
|
|
|
successCode: 0, |
|
|
|
}), |
|
|
|
); |
|
|
|
requestClient.addResponseInterceptor(errorMessageResponseInterceptor()); |
|
|
|
mock.onGet('/test/interceptor-error').reply(200, { |
|
|
|
code: 1001, |
|
|
|
data: null, |
|
|
|
message: 'request failed', |
|
|
|
}); |
|
|
|
|
|
|
|
await expect( |
|
|
|
requestClient.get('/test/interceptor-error', { |
|
|
|
responseReturn: 'data', |
|
|
|
}), |
|
|
|
).rejects.toMatchObject({ |
|
|
|
response: { |
|
|
|
data: { |
|
|
|
code: 1001, |
|
|
|
data: null, |
|
|
|
message: 'request failed', |
|
|
|
}, |
|
|
|
status: 200, |
|
|
|
}, |
|
|
|
status: 200, |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should successfully upload a file', async () => { |
|
|
|
const fileData = new Blob(['file contents'], { type: 'text/plain' }); |
|
|
|
|
|
|
|
|