diff options
author | Alejandro RodrÃguez <alejorro70@gmail.com> | 2017-12-05 22:42:04 +0300 |
---|---|---|
committer | Alejandro RodrÃguez <alejorro70@gmail.com> | 2017-12-27 21:12:30 +0300 |
commit | 351f205c0580e43ace9d5a47e0b923ffb7cda3b8 (patch) | |
tree | 512d30b7f8f54f26a9fca851b473ce6acf8a6544 /spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb | |
parent | f1d5e509b52c8c05fd570503389930121e12d87f (diff) |
Incorporate ConflictsService.ListConflictFiles Gitaly RPC
Diffstat (limited to 'spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb')
-rw-r--r-- | spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb b/spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb new file mode 100644 index 00000000000..de027fc1423 --- /dev/null +++ b/spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb @@ -0,0 +1,58 @@ +require 'spec_helper' + +describe Gitlab::GitalyClient::ConflictsService do + let(:project) { create(:project, :repository) } + let(:target_project) { create(:project, :repository) } + let(:repository) { project.repository } + let(:gitaly_repositoy) { repository.gitaly_repository } + let(:target_repository) { target_project.repository } + let(:target_gitaly_repository) { target_repository.gitaly_repository } + + describe '#list_conflict_files' do + let(:request) do + Gitaly::ListConflictFilesRequest.new( + repository: target_gitaly_repository, our_commit_oid: our_commit_oid, + their_commit_oid: their_commit_oid + ) + end + let(:our_commit_oid) { 'f00' } + let(:their_commit_oid) { 'f44' } + let(:our_path) { 'our/path' } + let(:their_path) { 'their/path' } + let(:our_mode) { 0744 } + let(:header) do + double(repository: target_gitaly_repository, commit_oid: our_commit_oid, + our_path: our_path, our_mode: 0744, their_path: their_path) + end + let(:response) do + [ + double(files: [double(header: header), double(content: 'foo', header: nil)]), + double(files: [double(content: 'bar', header: nil)]) + ] + end + let(:file) { subject[0] } + let(:client) { described_class.new(target_repository) } + + subject { client.list_conflict_files(our_commit_oid, their_commit_oid) } + + it 'sends an RPC request' do + expect_any_instance_of(Gitaly::ConflictsService::Stub).to receive(:list_conflict_files) + .with(request, kind_of(Hash)).and_return([]) + + subject + end + + it 'forms a Gitlab::Git::ConflictFile collection from the response' do + allow_any_instance_of(Gitaly::ConflictsService::Stub).to receive(:list_conflict_files) + .with(request, kind_of(Hash)).and_return(response) + + expect(subject.size).to be(1) + expect(file.content).to eq('foobar') + expect(file.their_path).to eq(their_path) + expect(file.our_path).to eq(our_path) + expect(file.our_mode).to be(our_mode) + expect(file.repository).to eq(target_repository) + expect(file.commit_oid).to eq(our_commit_oid) + end + end +end |