summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-04-29 22:21:06 +0200
committerYorick Peterse <yorickpeterse@gmail.com>2016-04-29 22:21:06 +0200
commite28d1fa3cc2e8c2f696f6740c8a8441100542470 (patch)
treee353ecddd503675ed9154331d105e423d1f43ce8
parent47698071d9685b763b2ba87f99b62c36d7735299 (diff)
downloadgitlab-ce-e28d1fa3cc2e8c2f696f6740c8a8441100542470.tar.gz
Use a query in Project#protected_branch?
This changes Project#protected_branch? to use a query to check if a branch is protected, instead of loading all ProtectedBranch records into memory just to check if the list of names includes a given branch name.
-rw-r--r--app/models/project.rb2
-rw-r--r--spec/models/project_spec.rb14
2 files changed, 15 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 5c6c36e6b31..bbc929e9bd4 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -764,7 +764,7 @@ class Project < ActiveRecord::Base
# Check if current branch name is marked as protected in the system
def protected_branch?(branch_name)
- protected_branches_names.include?(branch_name)
+ protected_branches.where(name: branch_name).any?
end
def developers_can_push_to_protected_branch?(branch_name)
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index e33c7d62ff4..5b1cf71337e 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -798,4 +798,18 @@ describe Project, models: true do
end
end
end
+
+ describe '#protected_branch?' do
+ let(:project) { create(:empty_project) }
+
+ it 'returns true when a branch is a protected branch' do
+ project.protected_branches.create!(name: 'foo')
+
+ expect(project.protected_branch?('foo')).to eq(true)
+ end
+
+ it 'returns false when a branch is not a protected branch' do
+ expect(project.protected_branch?('foo')).to eq(false)
+ end
+ end
end