diff options
Diffstat (limited to 'spec/lib/gitlab/git/conflict/resolver_spec.rb')
-rw-r--r-- | spec/lib/gitlab/git/conflict/resolver_spec.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/lib/gitlab/git/conflict/resolver_spec.rb b/spec/lib/gitlab/git/conflict/resolver_spec.rb new file mode 100644 index 00000000000..2783e955c33 --- /dev/null +++ b/spec/lib/gitlab/git/conflict/resolver_spec.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Git::Conflict::Resolver do + let(:repository) { instance_double(Gitlab::Git::Repository) } + let(:our_commit_oid) { 'our-commit-oid' } + let(:their_commit_oid) { 'their-commit-oid' } + let(:gitaly_conflicts_client) { instance_double(Gitlab::GitalyClient::ConflictsService) } + + subject(:resolver) { described_class.new(repository, our_commit_oid, their_commit_oid) } + + describe '#conflicts' do + before do + allow(repository).to receive(:gitaly_conflicts_client).and_return(gitaly_conflicts_client) + end + + it 'returns list of conflicts' do + conflicts = [double] + + expect(gitaly_conflicts_client).to receive(:list_conflict_files).and_return(conflicts) + expect(resolver.conflicts).to eq(conflicts) + end + + context 'when GRPC::FailedPrecondition is raised' do + it 'rescues and raises Gitlab::Git::Conflict::Resolver::ConflictSideMissing' do + expect(gitaly_conflicts_client).to receive(:list_conflict_files).and_raise(GRPC::FailedPrecondition) + expect { resolver.conflicts }.to raise_error(Gitlab::Git::Conflict::Resolver::ConflictSideMissing) + end + end + end +end |