mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-08-10 01:31:45 +00:00
90 lines
3.1 KiB
JavaScript
90 lines
3.1 KiB
JavaScript
import { sprintf } from '~/locale';
|
|
import { createNoteErrorMessages, updateNoteErrorMessage, isSlashCommand } from '~/notes/utils';
|
|
import { HTTP_STATUS_UNPROCESSABLE_ENTITY, HTTP_STATUS_BAD_REQUEST } from '~/lib/utils/http_status';
|
|
import { COMMENT_FORM, UPDATE_COMMENT_FORM } from '~/notes/i18n';
|
|
|
|
describe('createNoteErrorMessages', () => {
|
|
describe('when http status is not HTTP_STATUS_UNPROCESSABLE_ENTITY', () => {
|
|
it('returns generic error', () => {
|
|
const errorMessages = createNoteErrorMessages(
|
|
{ errors: ['unknown error'] },
|
|
HTTP_STATUS_BAD_REQUEST,
|
|
);
|
|
|
|
expect(errorMessages).toStrictEqual([COMMENT_FORM.GENERIC_UNSUBMITTABLE_NETWORK]);
|
|
});
|
|
});
|
|
|
|
describe('when http status is HTTP_STATUS_UNPROCESSABLE_ENTITY', () => {
|
|
it('returns all errors', () => {
|
|
const errorMessages = createNoteErrorMessages(
|
|
{ errors: 'error 1 and error 2' },
|
|
HTTP_STATUS_UNPROCESSABLE_ENTITY,
|
|
);
|
|
|
|
expect(errorMessages).toStrictEqual([
|
|
sprintf(COMMENT_FORM.error, { reason: 'error 1 and error 2' }),
|
|
]);
|
|
});
|
|
|
|
describe('when response contains commands_only errors', () => {
|
|
it('only returns commands_only errors', () => {
|
|
const errorMessages = createNoteErrorMessages(
|
|
{
|
|
errors: {
|
|
base: ['base error 1'],
|
|
},
|
|
quick_actions_status: {
|
|
commands_only: true,
|
|
error_messages: ['commands_only error 1', 'commands_only error 2'],
|
|
},
|
|
},
|
|
HTTP_STATUS_UNPROCESSABLE_ENTITY,
|
|
);
|
|
|
|
expect(errorMessages).toStrictEqual(['commands_only error 1', 'commands_only error 2']);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('updateNoteErrorMessage', () => {
|
|
describe('with server error', () => {
|
|
it('returns error message with server error', () => {
|
|
const error = 'error 1 and error 2';
|
|
const errorMessage = updateNoteErrorMessage({ response: { data: { errors: error } } });
|
|
|
|
expect(errorMessage).toEqual(sprintf(UPDATE_COMMENT_FORM.error, { reason: error }));
|
|
});
|
|
});
|
|
|
|
describe('without server error', () => {
|
|
it('returns generic error message', () => {
|
|
const errorMessage = updateNoteErrorMessage(null);
|
|
|
|
expect(errorMessage).toEqual(UPDATE_COMMENT_FORM.defaultError);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('isSlashCommand', () => {
|
|
it.each`
|
|
message | shouldBeSlashCommand
|
|
${'/close'} | ${true}
|
|
${'/label ~bug'} | ${true}
|
|
${'/assign @user'} | ${true}
|
|
${'This is not a slash command'} | ${false}
|
|
${'Messsage with a / in the middle'} | ${false}
|
|
${' /not-a-command'} | ${false}
|
|
${'\n\n/command'} | ${true}
|
|
${''} | ${false}
|
|
${null} | ${false}
|
|
${undefined} | ${false}
|
|
`(
|
|
'when passed `$message` as a message parameter it returns `$shouldBeSlashCommand`',
|
|
({ message, shouldBeSlashCommand } = {}) => {
|
|
expect(isSlashCommand(message)).toBe(shouldBeSlashCommand);
|
|
},
|
|
);
|
|
});
|