diff options
Diffstat (limited to 'spec/controllers/projects/tags_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/tags_controller_spec.rb | 72 |
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) |