diff --git a/app/services/boards/issues/move_service.rb b/app/services/boards/issues/move_service.rb index d6eb4adc5ddba0f4a5a23e09240469822ed5c6a5..84dc3f70e7661021c1fc94e4e61482748cf9aa54 100644 --- a/app/services/boards/issues/move_service.rb +++ b/app/services/boards/issues/move_service.rb @@ -11,7 +11,8 @@ module Boards private def valid_move? - moving_from_list.present? && moving_to_list.present? + moving_from_list.present? && moving_to_list.present? && + moving_from_list != moving_to_list end def moving_from_list diff --git a/spec/services/boards/issues/move_service_spec.rb b/spec/services/boards/issues/move_service_spec.rb index 65f2247918fc9ad40a9077ba6df354ddf091b7c4..0122159cab8066218a47a52673679a7401ee52bc 100644 --- a/spec/services/boards/issues/move_service_spec.rb +++ b/spec/services/boards/issues/move_service_spec.rb @@ -121,5 +121,20 @@ describe Boards::Issues::MoveService, services: true do expect(issue).to be_reopened end end + + context 'when moving to same list' do + let(:issue) { create(:labeled_issue, project: project, labels: [bug, development]) } + let(:params) { { from_list_id: list1.id, to_list_id: list1.id } } + + it 'returns false' do + expect(described_class.new(project, user, params).execute(issue)).to eq false + end + + it 'keeps issues labels' do + described_class.new(project, user, params).execute(issue) + + expect(issue.reload.labels).to contain_exactly(bug, development) + end + end end end