diff options
Diffstat (limited to 'spec/services/releases/update_service_spec.rb')
-rw-r--r-- | spec/services/releases/update_service_spec.rb | 45 |
1 files changed, 12 insertions, 33 deletions
diff --git a/spec/services/releases/update_service_spec.rb b/spec/services/releases/update_service_spec.rb index 178bac3574f..944f3d8c9ad 100644 --- a/spec/services/releases/update_service_spec.rb +++ b/spec/services/releases/update_service_spec.rb @@ -50,60 +50,39 @@ describe Releases::UpdateService do end context 'when a milestone is passed in' do + let(:old_title) { 'v1.0' } let(:new_title) { 'v2.0' } - let(:milestone) { create(:milestone, project: project, title: 'v1.0') } + let(:milestone) { create(:milestone, project: project, title: old_title) } let(:new_milestone) { create(:milestone, project: project, title: new_title) } - let(:params_with_milestone) { params.merge!({ milestones: [new_title] }) } - let(:service) { described_class.new(new_milestone.project, user, params_with_milestone) } + let(:params_with_milestone) { params.merge!({ milestone: new_title }) } before do - release.milestones << milestone + release.milestone = milestone + release.save! - service.execute + described_class.new(new_milestone.project, user, params_with_milestone).execute release.reload end it 'updates the related milestone accordingly' do - expect(release.milestones.first.title).to eq(new_title) + expect(release.milestone.title).to eq(new_title) end end context "when an 'empty' milestone is passed in" do let(:milestone) { create(:milestone, project: project, title: 'v1.0') } - let(:params_with_empty_milestone) { params.merge!({ milestones: [] }) } + let(:params_with_empty_milestone) { params.merge!({ milestone: '' }) } before do - release.milestones << milestone + release.milestone = milestone + release.save! - service.params = params_with_empty_milestone - service.execute + described_class.new(milestone.project, user, params_with_empty_milestone).execute release.reload end it 'removes the old milestone and does not associate any new milestone' do - expect(release.milestones).not_to be_present - end - end - - context "when multiple new milestones are passed in" do - let(:new_title_1) { 'v2.0' } - let(:new_title_2) { 'v2.0-rc' } - let(:milestone) { create(:milestone, project: project, title: 'v1.0') } - let(:params_with_milestones) { params.merge!({ milestones: [new_title_1, new_title_2] }) } - let(:service) { described_class.new(project, user, params_with_milestones) } - - before do - create(:milestone, project: project, title: new_title_1) - create(:milestone, project: project, title: new_title_2) - release.milestones << milestone - - service.execute - release.reload - end - - it 'removes the old milestone and update the release with the new ones' do - milestone_titles = release.milestones.map(&:title) - expect(milestone_titles).to match_array([new_title_1, new_title_2]) + expect(release.milestone).to be_nil end end end |