summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-04-21 13:40:52 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-04-22 08:01:50 +0200
commit01ab6d704c36b211b5a06e290e6912346c8bf496 (patch)
treee30246d3411af0f34364fc6009236772c04c8c47
parent006d8b268ca2964ca3363fae53fdff7d26a9ae08 (diff)
downloadgitlab-ce-01ab6d704c36b211b5a06e290e6912346c8bf496.tar.gz
Use association search in issuable create service
-rw-r--r--app/services/issuable_base_service.rb12
-rw-r--r--spec/services/issues/create_service_spec.rb12
2 files changed, 12 insertions, 12 deletions
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb
index ab110001f91..2b16089df1b 100644
--- a/app/services/issuable_base_service.rb
+++ b/app/services/issuable_base_service.rb
@@ -57,10 +57,11 @@ class IssuableBaseService < BaseService
end
def filter_milestone
- return unless params[:milestone_id]
+ milestone_id = params[:milestone_id]
+ return unless milestone_id
- if params[:milestone_id] == IssuableFinder::NONE ||
- Milestone.find(params[:milestone_id]).try(:project) != project
+ if milestone_id == IssuableFinder::NONE ||
+ project.milestones.find_by(id: milestone_id).nil?
params[:milestone_id] = ''
end
end
@@ -68,9 +69,8 @@ class IssuableBaseService < BaseService
def filter_labels
return if params[:label_ids].to_a.empty?
- params[:label_ids].select! do |label_id|
- Label.find(label_id).try(:project) == project
- end
+ params[:label_ids] =
+ project.labels.where(id: params[:label_ids]).pluck(:id)
end
def update(issuable)
diff --git a/spec/services/issues/create_service_spec.rb b/spec/services/issues/create_service_spec.rb
index 2972c387836..ac28b6f71f9 100644
--- a/spec/services/issues/create_service_spec.rb
+++ b/spec/services/issues/create_service_spec.rb
@@ -4,13 +4,13 @@ describe Issues::CreateService, services: true do
let(:project) { create(:empty_project) }
let(:user) { create(:user) }
- describe :execute do
- let(:issue) { Issues::CreateService.new(project, user, opts).execute }
+ describe '#execute' do
+ let(:issue) { described_class.new(project, user, opts).execute }
- context 'valid params' do
+ context 'when params are valid' do
let(:assignee) { create(:user) }
let(:milestone) { create(:milestone, project: project) }
- let(:labels) { create_list(:label, 4, project: project) }
+ let(:labels) { create_pair(:label, project: project) }
before do
project.team << [user, :master]
@@ -45,7 +45,7 @@ describe Issues::CreateService, services: true do
expect(Todo.where(attributes).count).to eq 1
end
- context 'label that belongs to different project' do
+ context 'when label belongs to different project' do
let(:label) { create(:label) }
let(:opts) do
@@ -59,7 +59,7 @@ describe Issues::CreateService, services: true do
end
end
- context 'milestone that belongs to different project' do
+ context 'when milestone belongs to different project' do
let(:milestone) { create(:milestone) }
let(:opts) do