import { getLoadingStatus, parseAPIErrorResponse, setLoadingStatus, throwErrorMessage, parseLinearAPIErrorResponse, } from '../api'; describe('#getLoadingStatus', () => { it('returns correct status', () => { expect(getLoadingStatus({ fetchAPIloadingStatus: true })).toBe(true); }); }); describe('#setLoadingStatus', () => { it('set correct status', () => { const state = { fetchAPIloadingStatus: true }; setLoadingStatus(state, false); expect(state.fetchAPIloadingStatus).toBe(false); }); }); describe('#parseAPIErrorResponse', () => { it('returns correct values', () => { expect( parseAPIErrorResponse({ response: { data: { message: 'Error Message [message]' } }, }) ).toBe('Error Message [message]'); expect( parseAPIErrorResponse({ response: { data: { error: 'Error Message [error]' } }, }) ).toBe('Error Message [error]'); expect(parseAPIErrorResponse('Error: 422 Failed')).toBe( '提交的信息有误,请检查后重试。' ); expect(parseAPIErrorResponse('timeout of 10000ms exceeded')).toBe( '请求超时,请稍后再试。' ); expect(parseAPIErrorResponse('已从会话 ID 14 移除标签 #超时关闭')).toBe( '已从会话 ID 14 移除标签 #超时关闭' ); expect( parseAPIErrorResponse(new Error('Request failed with status code 401')) ).toBe('身份验证失败,请重新登录。'); expect( parseAPIErrorResponse({ response: { status: 401, data: { error: 'invalid email or password' } }, }) ).toBe('邮箱或密码错误,请重试。'); expect( parseAPIErrorResponse({ response: { status: 403, data: { error: 'administrator role required' }, }, }) ).toBe('需要管理员权限才能执行此操作。'); expect( parseAPIErrorResponse({ response: { status: 500, data: { error: 'database error' } }, }) ).toBe('服务器发生错误,请稍后再试。'); expect(parseAPIErrorResponse(new Error('Network Error'))).toBe( '网络连接失败,请检查网络后重试。' ); }); }); describe('#throwErrorMessage', () => { it('throws correct error', () => { const errorFn = function throwErrorMessageFn() { throwErrorMessage({ response: { data: { message: 'Error Message [message]' } }, }); }; expect(errorFn).toThrow('Error Message [message]'); }); }); describe('#parseLinearAPIErrorResponse', () => { it('returns correct values', () => { expect( parseLinearAPIErrorResponse( { response: { data: { error: { errors: [ { message: 'Error Message [message]', }, ], }, }, }, }, 'Default Message' ) ).toBe('Error Message [message]'); }); });