Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtienne BaquƩ <ebaque@gitlab.com>2019-09-05 18:51:33 +0300
committerEtienne BaquƩ <ebaque@gitlab.com>2019-09-12 00:37:15 +0300
commit98e992332fdaabc85a446f759b99362aff1274f7 (patch)
tree2635395e535438b3af74e8d1a70fc6deb8688700
parent18e5fafe3a8f24d0b0584cc794871f42fda76436 (diff)
Added and fixed tests releated to Release services
Added tests for Create and Update release services. Fixed DestroyService release rspec test.
-rw-r--r--app/services/releases/create_service.rb1
-rw-r--r--spec/services/milestones/destroy_service_spec.rb2
-rw-r--r--spec/services/releases/create_service_spec.rb35
-rw-r--r--spec/services/releases/destroy_service_spec.rb2
-rw-r--r--spec/services/releases/update_service_spec.rb22
5 files changed, 59 insertions, 3 deletions
diff --git a/app/services/releases/create_service.rb b/app/services/releases/create_service.rb
index 882618abb13..bf3444ec36e 100644
--- a/app/services/releases/create_service.rb
+++ b/app/services/releases/create_service.rb
@@ -49,7 +49,6 @@ module Releases
success(tag: tag, release: release)
rescue => e
- binding.pry
error(e.message, 400)
end
diff --git a/spec/services/milestones/destroy_service_spec.rb b/spec/services/milestones/destroy_service_spec.rb
index ff1e1256166..4f16421c39f 100644
--- a/spec/services/milestones/destroy_service_spec.rb
+++ b/spec/services/milestones/destroy_service_spec.rb
@@ -72,7 +72,7 @@ describe Milestones::DestroyService do
:release,
tag: 'v1.0',
project: project,
- milestone: milestone
+ milestones: [milestone]
)
expect { service.execute(milestone) }.not_to change { Release.count }
diff --git a/spec/services/releases/create_service_spec.rb b/spec/services/releases/create_service_spec.rb
index d5665bbe62f..9f04574201a 100644
--- a/spec/services/releases/create_service_spec.rb
+++ b/spec/services/releases/create_service_spec.rb
@@ -122,6 +122,41 @@ describe Releases::CreateService do
end
end
+ context 'when multiple existing milestone titles are passed in' do
+ let(:title_1) { 'v1.0' }
+ let(:title_2) { 'v1.0-rc' }
+ let!(:milestone_1) { create(:milestone, :active, project: project, title: title_1) }
+ let!(:milestone_2) { create(:milestone, :active, project: project, title: title_2) }
+ let!(:params_with_milestones) { params.merge!({ milestones: [title_1, title_2] }) }
+
+ it 'creates a release and ties it to these milestones' do
+ described_class.new(project, user, params_with_milestones).execute
+
+ release = project.releases.last
+ expect(release.milestones.map(&:title)).to include(title_1, title_2)
+ end
+ end
+
+ context 'when multiple miletone titles are passed in but one of them does not exist' do
+ let(:title) { 'v1.0' }
+ let(:inexistent_title) { 'v111.0' }
+ let!(:milestone) { create(:milestone, :active, project: project, title: title) }
+ let!(:params_with_milestones) { params.merge!({ milestones: [title, inexistent_title] }) }
+
+ it 'raises an error' do
+ result = described_class.new(milestone.project, user, params_with_milestones).execute
+
+ expect(result[:status]).to eq(:error)
+ expect(result[:message]).to eq("Inexistent milestone(s): #{inexistent_title}")
+ end
+
+ it 'does not create any release' do
+ expect do
+ described_class.new(milestone.project, user, params_with_milestones).execute
+ end.not_to change(Release, :count)
+ end
+ end
+
context 'when no milestone is passed in' do
it 'creates a release without a milestone tied to it' do
expect(params.key? :milestones).to be_falsey
diff --git a/spec/services/releases/destroy_service_spec.rb b/spec/services/releases/destroy_service_spec.rb
index c3172e5edbc..9d027767cd2 100644
--- a/spec/services/releases/destroy_service_spec.rb
+++ b/spec/services/releases/destroy_service_spec.rb
@@ -60,7 +60,7 @@ describe Releases::DestroyService do
context 'when a milestone is tied to the release' do
let!(:milestone) { create(:milestone, :active, project: project, title: 'v1.0') }
- let!(:release) { create(:release, milestone: milestone, project: project, tag: tag) }
+ let!(:release) { create(:release, milestones: [milestone], project: project, tag: tag) }
it 'destroys the release but leave the milestone intact' do
expect { subject }.not_to change { Milestone.count }
diff --git a/spec/services/releases/update_service_spec.rb b/spec/services/releases/update_service_spec.rb
index bbdd480e1f4..4fd8854a231 100644
--- a/spec/services/releases/update_service_spec.rb
+++ b/spec/services/releases/update_service_spec.rb
@@ -83,5 +83,27 @@ describe Releases::UpdateService do
expect(release.milestones).not_to be_present
end
end
+
+ context "when multiple new milestones are passed in" do
+ let(:old_title) { 'v1.0' }
+ let(:new_title_1) { 'v2.0' }
+ let(:new_title_2) { 'v2.0-rc' }
+ let(:milestone) { create(:milestone, project: project, title: old_title) }
+ let(:new_milestone_1) { create(:milestone, project: project, title: new_title_1) }
+ let!(:new_milestone_2) { create(:milestone, project: project, title: new_title_2) }
+ let(:params_with_milestones) { params.merge!({ milestones: [new_title_1, new_title_2] }) }
+
+ before do
+ release.milestones << milestone
+
+ described_class.new(new_milestone_1.project, user, params_with_milestones).execute
+ release.reload
+ end
+
+ it 'removes the old milestone and update the release with the new ones' do
+ expect(release.milestones.map(&:title)).to include(new_title_1, new_title_2)
+ expect(release.milestones.map(&:title)).not_to include(old_title)
+ end
+ end
end
end