diff options
Diffstat (limited to 'spec/services/merge_requests/rebase_service_spec.rb')
-rw-r--r-- | spec/services/merge_requests/rebase_service_spec.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/spec/services/merge_requests/rebase_service_spec.rb b/spec/services/merge_requests/rebase_service_spec.rb index ca561376581..e671bbf2cd6 100644 --- a/spec/services/merge_requests/rebase_service_spec.rb +++ b/spec/services/merge_requests/rebase_service_spec.rb @@ -80,6 +80,27 @@ RSpec.describe MergeRequests::RebaseService do end end + context 'with a pre-receive failure' do + let(:pre_receive_error) { "Commit message does not follow the pattern 'ACME'" } + let(:merge_error) { "Something went wrong during the rebase pre-receive hook: #{pre_receive_error}." } + + before do + allow(repository).to receive(:gitaly_operation_client).and_raise(Gitlab::Git::PreReceiveError, "GitLab: #{pre_receive_error}") + end + + it 'saves a specific message' do + subject.execute(merge_request) + + expect(merge_request.reload.merge_error).to eq merge_error + end + + it 'returns an error' do + expect(service.execute(merge_request)).to match( + status: :error, + message: merge_error) + end + end + context 'with git command failure' do before do allow(repository).to receive(:gitaly_operation_client).and_raise(Gitlab::Git::Repository::GitError, 'Something went wrong') |