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