diff options
author | Rémy Coutable <remy@rymai.me> | 2018-11-29 14:36:16 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2018-11-29 14:36:16 +0300 |
commit | 7c0718cd79b9f7976e3a9d78fdc6661a6c9ebfba (patch) | |
tree | 9bcc63207ca7841414c7e5da0b1ad7589da3f4fd /spec/services | |
parent | 938b891f89403ced0268699a6295531db508be17 (diff) | |
parent | 14076062df5d9f369c42796e754b3918965a0623 (diff) |
Merge branch '51083-fix-move-api' into 'master'
Commits API: Preserve file content in move operations if unspecified
Closes #52974 et #51083
See merge request gitlab-org/gitlab-ce!23387
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/files/multi_service_spec.rb | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/spec/services/files/multi_service_spec.rb b/spec/services/files/multi_service_spec.rb index 5f3c8e82715..84c48d63c64 100644 --- a/spec/services/files/multi_service_spec.rb +++ b/spec/services/files/multi_service_spec.rb @@ -122,26 +122,47 @@ describe Files::MultiService do let(:action) { 'move' } let(:new_file_path) { 'files/ruby/new_popen.rb' } + let(:result) { subject.execute } + let(:blob) { repository.blob_at_branch(branch_name, new_file_path) } + context 'when original file has been updated' do before do update_file(original_file_path) end it 'rejects the commit' do - results = subject.execute - - expect(results[:status]).to eq(:error) - expect(results[:message]).to match(original_file_path) + expect(result[:status]).to eq(:error) + expect(result[:message]).to match(original_file_path) end end - context 'when original file have not been updated' do + context 'when original file has not been updated' do it 'moves the file' do - results = subject.execute - blob = project.repository.blob_at_branch(branch_name, new_file_path) - - expect(results[:status]).to eq(:success) + expect(result[:status]).to eq(:success) expect(blob).to be_present + expect(blob.data).to eq(file_content) + end + + context 'when content is nil' do + let(:file_content) { nil } + + it 'moves the existing content untouched' do + original_content = repository.blob_at_branch(branch_name, original_file_path).data + + expect(result[:status]).to eq(:success) + expect(blob).to be_present + expect(blob.data).to eq(original_content) + end + end + + context 'when content is an empty string' do + let(:file_content) { '' } + + it 'moves the file and empties it' do + expect(result[:status]).to eq(:success) + expect(blob).not_to be_nil + expect(blob.data).to eq('') + end end end end |