Files
gochat/frontend/app/javascript/dashboard/store/utils/specs/api.spec.js
T
rogee a0c6969da0
Build and publish Docker images / Build and publish images (push) Successful in 2m21s
fix(frontend): preserve timeout label success toast
2026-09-16 09:45:52 +08:00

106 lines
2.9 KiB
JavaScript

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]');
});
});