diff --git a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue index bfa2f2cc14ff000d14b92410a7e50941d85f5daf..a6c31faa45dbd4846ed4e5d26840e16564e56151 100644 --- a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue +++ b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue @@ -283,10 +283,11 @@ export default { redirectTo(data.web_url); // eslint-disable-line import/no-deprecated } catch (error) { this.isSaving = false; + const message = + error?.response?.data?.message?.join('. ') || + s__('ForkProject|An error occurred while forking the project. Please try again.'); createAlert({ - message: s__( - 'ForkProject|An error occurred while forking the project. Please try again.', - ), + message, }); } }, diff --git a/spec/frontend/pages/projects/forks/new/components/fork_form_spec.js b/spec/frontend/pages/projects/forks/new/components/fork_form_spec.js index b0bfa4620c6c3bc02d95243cf165fd41c3d97ca0..532ad52b37e6fd70e7906f745a67c8cf651f04f7 100644 --- a/spec/frontend/pages/projects/forks/new/components/fork_form_spec.js +++ b/spec/frontend/pages/projects/forks/new/components/fork_form_spec.js @@ -578,7 +578,21 @@ describe('ForkForm component', () => { expect(urlUtility.redirectTo).toHaveBeenCalledWith(webUrl); // eslint-disable-line import/no-deprecated }); - it('displays an alert when POST is unsuccessful', async () => { + it('displays an alert with message coming from server when POST is unsuccessful', async () => { + const error = { response: { data: { message: ['Update error'] } } }; + + jest.spyOn(axios, 'post').mockRejectedValue(error); + + setupComponent(); + await submitForm(); + + expect(urlUtility.redirectTo).not.toHaveBeenCalled(); // eslint-disable-line import/no-deprecated + expect(createAlert).toHaveBeenCalledWith({ + message: 'Update error', + }); + }); + + it('displays an alert with general error when POST is unsuccessful', async () => { const dummyError = 'Fork project failed'; jest.spyOn(axios, 'post').mockRejectedValue(dummyError);