summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/tags_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/projects/tags_controller_spec.rb')
-rw-r--r--spec/controllers/projects/tags_controller_spec.rb72
1 files changed, 65 insertions, 7 deletions
diff --git a/spec/controllers/projects/tags_controller_spec.rb b/spec/controllers/projects/tags_controller_spec.rb
index 57760088183..efb57494f82 100644
--- a/spec/controllers/projects/tags_controller_spec.rb
+++ b/spec/controllers/projects/tags_controller_spec.rb
@@ -9,18 +9,75 @@ RSpec.describe Projects::TagsController do
let(:user) { create(:user) }
describe 'GET index' do
- before do
- get :index, params: { namespace_id: project.namespace.to_param, project_id: project }
- end
+ subject { get :index, params: { namespace_id: project.namespace.to_param, project_id: project } }
it 'returns the tags for the page' do
+ subject
+
expect(assigns(:tags).map(&:name)).to include('v1.1.0', 'v1.0.0')
end
it 'returns releases matching those tags' do
+ subject
+
expect(assigns(:releases)).to include(release)
expect(assigns(:releases)).not_to include(invalid_release)
end
+
+ context '@tag_pipeline_status' do
+ context 'when no pipelines exist' do
+ it 'is empty' do
+ subject
+
+ expect(assigns(:tag_pipeline_statuses)).to be_empty
+ end
+ end
+
+ context 'when multiple tags exist' do
+ before do
+ create(:ci_pipeline,
+ project: project,
+ ref: 'v1.1.0',
+ sha: project.commit('v1.1.0').sha,
+ status: :running)
+ create(:ci_pipeline,
+ project: project,
+ ref: 'v1.0.0',
+ sha: project.commit('v1.0.0').sha,
+ status: :success)
+ end
+
+ it 'all relevant commit statuses are received' do
+ subject
+
+ expect(assigns(:tag_pipeline_statuses)['v1.1.0'].group).to eq("running")
+ expect(assigns(:tag_pipeline_statuses)['v1.0.0'].group).to eq("success")
+ end
+ end
+
+ context 'when a tag has multiple pipelines' do
+ before do
+ create(:ci_pipeline,
+ project: project,
+ ref: 'v1.0.0',
+ sha: project.commit('v1.0.0').sha,
+ status: :running,
+ created_at: 6.months.ago)
+ create(:ci_pipeline,
+ project: project,
+ ref: 'v1.0.0',
+ sha: project.commit('v1.0.0').sha,
+ status: :success,
+ created_at: 2.months.ago)
+ end
+
+ it 'chooses the latest to determine status' do
+ subject
+
+ expect(assigns(:tag_pipeline_statuses)['v1.0.0'].group).to eq("success")
+ end
+ end
+ end
end
describe 'GET show' do
@@ -70,7 +127,8 @@ RSpec.describe Projects::TagsController do
end
let(:release_description) { nil }
- let(:request) do
+
+ subject(:request) do
post(:create, params: {
namespace_id: project.namespace.to_param,
project_id: project,
@@ -81,7 +139,7 @@ RSpec.describe Projects::TagsController do
end
it 'creates tag' do
- request
+ subject
expect(response).to have_gitlab_http_status(:found)
expect(project.repository.find_tag('1.0')).to be_present
@@ -92,7 +150,7 @@ RSpec.describe Projects::TagsController do
let(:release_description) { 'some release description' }
it 'creates tag and release' do
- request
+ subject
expect(response).to have_gitlab_http_status(:found)
expect(project.repository.find_tag('1.0')).to be_present
@@ -118,7 +176,7 @@ RSpec.describe Projects::TagsController do
expect(service).to receive(:execute).and_call_original
end
- request
+ subject
aggregate_failures do
expect(response).to have_gitlab_http_status(:found)