Adjusts suggestions unable to be applied
1. Presents the system error message when available, when applying suggestions 2. Adjusts target branch updates affecting MRs pointing to it when there are previously created suggestions in the MR. We just need to compare the HEAD shas from position and MR source branch.
This commit is contained in:
parent
dc6091876d
commit
1b93b3b640
|
@ -415,12 +415,13 @@ export const submitSuggestion = (
|
|||
commit(types.APPLY_SUGGESTION, { discussionId, noteId, suggestionId });
|
||||
callback();
|
||||
})
|
||||
.catch(() => {
|
||||
Flash(
|
||||
__('Something went wrong while applying the suggestion. Please try again.'),
|
||||
'alert',
|
||||
flashContainer,
|
||||
.catch(err => {
|
||||
const defaultMessage = __(
|
||||
'Something went wrong while applying the suggestion. Please try again.',
|
||||
);
|
||||
const flashMessage = err.response.data ? `${err.response.data.message}.` : defaultMessage;
|
||||
|
||||
Flash(__(flashMessage), 'alert', flashContainer);
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@ module Suggestions
|
|||
return error('Suggestion is not appliable')
|
||||
end
|
||||
|
||||
unless latest_diff_refs?(suggestion)
|
||||
unless latest_source_head?(suggestion)
|
||||
return error('The file has been changed')
|
||||
end
|
||||
|
||||
|
@ -29,12 +29,13 @@ module Suggestions
|
|||
|
||||
private
|
||||
|
||||
# Checks whether the latest diff refs for the branch matches with
|
||||
# the position refs we're using to update the file content. Since
|
||||
# the persisted refs are updated async (for MergeRequest),
|
||||
# it's more consistent to fetch this data directly from the repository.
|
||||
def latest_diff_refs?(suggestion)
|
||||
suggestion.position.diff_refs == suggestion.noteable.repository_diff_refs
|
||||
# Checks whether the latest source branch HEAD matches with
|
||||
# the position HEAD we're using to update the file content. Since
|
||||
# the persisted HEAD is updated async (for MergeRequest),
|
||||
# it's more consistent to fetch this data directly from the
|
||||
# repository.
|
||||
def latest_source_head?(suggestion)
|
||||
suggestion.position.head_sha == suggestion.noteable.source_branch_sha
|
||||
end
|
||||
|
||||
def file_update_params(suggestion)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Adjusts suggestions unable to be applied
|
||||
merge_request: 24603
|
||||
author:
|
||||
type: fixed
|
|
@ -134,12 +134,11 @@ describe Suggestions::ApplyService do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when diff ref from position is different from repo diff refs' do
|
||||
context 'when HEAD from position is different from source branch HEAD on repo' do
|
||||
it 'returns error message' do
|
||||
outdated_refs = Gitlab::Diff::DiffRefs.new(base_sha: 'foo', start_sha: 'bar', head_sha: 'outdated')
|
||||
|
||||
allow(suggestion).to receive(:appliable?) { true }
|
||||
allow(suggestion.position).to receive(:diff_refs) { outdated_refs }
|
||||
allow(suggestion.position).to receive(:head_sha) { 'old-sha' }
|
||||
allow(suggestion.noteable).to receive(:source_branch_sha) { 'new-sha' }
|
||||
|
||||
result = subject.execute(suggestion)
|
||||
|
||||
|
|
Loading…
Reference in New Issue