summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRubén Dávila <rdavila84@gmail.com>2016-03-01 19:14:52 -0500
committerRubén Dávila <rdavila84@gmail.com>2016-03-01 19:16:27 -0500
commitd9e01915924836722b4ed67e26535076efba1be4 (patch)
treefd3f2a06f0fc8f209480c813ab45f6e1ab0b66e1
parent0c116d8ed6736de0d08ca838ae03aeca7dcaf142 (diff)
downloadgitlab-ce-issue_13716.tar.gz
Add some specs for Repository#revert.issue_13716
-rw-r--r--app/models/repository.rb2
-rw-r--r--spec/models/repository_spec.rb35
2 files changed, 32 insertions, 5 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 16a8aa3ad01..c135ab61f6a 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -656,7 +656,7 @@ class Repository
def revert(user, commit, base_branch, revert_tree_id = nil)
source_sha = find_branch(base_branch).target
- revert_tree_id = check_revert_content(commit, base_branch) unless revert_tree_id
+ revert_tree_id ||= check_revert_content(commit, base_branch)
return false unless revert_tree_id
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 51ae2c04ed0..1c7d66398cb 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -457,11 +457,38 @@ describe Repository, models: true do
end
end
- describe '#revert_merge' do
- it 'should revert the changes' do
- repository.revert(user, merge_commit, 'master')
+ describe '#revert' do
+ let(:new_image_commit) { repository.commit('33f3729a45c02fc67d00adb1b8bca394b0e761d9') }
+ let(:update_image_commit) { repository.commit('2f63565e7aac07bcdadb654e253078b727143ec4') }
- expect(repository.blob_at_branch('master', 'files/ruby/feature.rb')).not_to be_present
+ context 'when there is a conflict' do
+ it 'should abort the operation' do
+ expect(repository.revert(user, new_image_commit, 'master')).to eq(false)
+ end
+ end
+
+ context 'when commit was already reverted' do
+ it 'should abort the operation' do
+ repository.revert(user, update_image_commit, 'master')
+
+ expect(repository.revert(user, update_image_commit, 'master')).to eq(false)
+ end
+ end
+
+ context 'when commit can be reverted' do
+ it 'should revert the changes' do
+ expect(repository.revert(user, update_image_commit, 'master')).to be_truthy
+ end
+ end
+
+ context 'reverting a merge commit' do
+ it 'should revert the changes' do
+ merge_commit
+ expect(repository.blob_at_branch('master', 'files/ruby/feature.rb')).to be_present
+
+ repository.revert(user, merge_commit, 'master')
+ expect(repository.blob_at_branch('master', 'files/ruby/feature.rb')).not_to be_present
+ end
end
end