Skip to content
Snippets Groups Projects
Commit 0f7cb967 authored by Felipe Artur's avatar Felipe Artur
Browse files

Fix milestones destroy service

parent 31ada792
No related branches found
No related tags found
No related merge requests found
module Milestones
class DestroyService < Milestones::BaseService
def execute(milestone)
return unless milestone.is_project_milestone?
Milestone.transaction do
update_params = { milestone: nil }
 
milestone.issues.each do |issue|
Issues::UpdateService.new(project, current_user, update_params).execute(issue)
Issues::UpdateService.new(parent, current_user, update_params).execute(issue)
end
 
milestone.merge_requests.each do |merge_request|
MergeRequests::UpdateService.new(project, current_user, update_params).execute(merge_request)
MergeRequests::UpdateService.new(parent, current_user, update_params).execute(merge_request)
end
 
event_service.destroy_milestone(milestone, current_user)
Loading
Loading
require 'spec_helper'
describe Milestones::DestroyService, services: true do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:milestone) { create(:milestone, title: 'Milestone v1.0', project: project) }
let(:issue) { create(:issue, project: project, milestone: milestone) }
let(:merge_request) { create(:merge_request, source_project: project, milestone: milestone) }
before do
project.team << [user, :master]
end
def service
described_class.new(project, user, {})
end
describe '#execute' do
it 'deletes milestone' do
service.execute(milestone)
expect { milestone.reload }.to raise_error ActiveRecord::RecordNotFound
end
it 'deletes milestone id from issuables' do
service.execute(milestone)
expect(issue.reload.milestone).to be_nil
expect(merge_request.reload.milestone).to be_nil
end
context 'group milestones' do
let(:group) { create(:group) }
let(:group_milestone) { create(:milestone, group: group) }
before do
project.update(namespace: group)
group.add_developer(user)
end
it { expect(service.execute(group_milestone)).to be_nil }
it 'does not update milestone issuables' do
expect(MergeRequests::UpdateService).not_to receive(:new)
expect(Issues::UpdateService).not_to receive(:new)
service.execute(group_milestone)
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment