Adds Pending and Finished tabs to pipelines page
Fix broken test
This commit is contained in:
parent
b632bdddee
commit
0f36cfd7f5
|
@ -23,7 +23,7 @@ const CommitPipelinesStoreWithTimeAgo = require('../commit/pipelines/pipelines_s
|
||||||
apiScope: 'all',
|
apiScope: 'all',
|
||||||
pageInfo: {},
|
pageInfo: {},
|
||||||
pagenum: 1,
|
pagenum: 1,
|
||||||
count: { all: 0, running_or_pending: 0 },
|
count: {},
|
||||||
pageRequest: false,
|
pageRequest: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
@ -13,9 +13,15 @@ class Projects::PipelinesController < Projects::ApplicationController
|
||||||
.page(params[:page])
|
.page(params[:page])
|
||||||
.per(30)
|
.per(30)
|
||||||
|
|
||||||
@running_or_pending_count = PipelinesFinder
|
@running_count = PipelinesFinder
|
||||||
.new(project).execute(scope: 'running').count
|
.new(project).execute(scope: 'running').count
|
||||||
|
|
||||||
|
@pending_count = PipelinesFinder
|
||||||
|
.new(project).execute(scope: 'pending').count
|
||||||
|
|
||||||
|
@finished_count = PipelinesFinder
|
||||||
|
.new(project).execute(scope: 'finished').count
|
||||||
|
|
||||||
@pipelines_count = PipelinesFinder
|
@pipelines_count = PipelinesFinder
|
||||||
.new(project).execute.count
|
.new(project).execute.count
|
||||||
|
|
||||||
|
@ -29,7 +35,9 @@ class Projects::PipelinesController < Projects::ApplicationController
|
||||||
.represent(@pipelines),
|
.represent(@pipelines),
|
||||||
count: {
|
count: {
|
||||||
all: @pipelines_count,
|
all: @pipelines_count,
|
||||||
running_or_pending: @running_or_pending_count
|
running: @running_count,
|
||||||
|
pending: @pending_count,
|
||||||
|
finished: @finished_count,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,7 +10,11 @@ class PipelinesFinder
|
||||||
scoped_pipelines =
|
scoped_pipelines =
|
||||||
case scope
|
case scope
|
||||||
when 'running'
|
when 'running'
|
||||||
pipelines.running_or_pending
|
pipelines.running
|
||||||
|
when 'pending'
|
||||||
|
pipelines.pending
|
||||||
|
when 'finished'
|
||||||
|
pipelines.finished
|
||||||
when 'branches'
|
when 'branches'
|
||||||
from_ids(ids_for_ref(branches))
|
from_ids(ids_for_ref(branches))
|
||||||
when 'tags'
|
when 'tags'
|
||||||
|
|
|
@ -5,23 +5,35 @@
|
||||||
%div{ class: container_class }
|
%div{ class: container_class }
|
||||||
.top-area
|
.top-area
|
||||||
%ul.nav-links
|
%ul.nav-links
|
||||||
%li{ class: active_when(@scope.nil?) }>
|
%li.js-pipelines-tab-all{ class: active_when(@scope.nil?) }>
|
||||||
= link_to project_pipelines_path(@project) do
|
= link_to project_pipelines_path(@project) do
|
||||||
All
|
All
|
||||||
%span.badge.js-totalbuilds-count
|
%span.badge.js-totalbuilds-count
|
||||||
= number_with_delimiter(@pipelines_count)
|
= number_with_delimiter(@pipelines_count)
|
||||||
|
|
||||||
%li{ class: active_when(@scope == 'running') }>
|
%li.js-pipelines-tab-pending{ class: active_when(@scope == 'pending') }>
|
||||||
|
= link_to project_pipelines_path(@project, scope: :pending) do
|
||||||
|
Pending
|
||||||
|
%span.badge
|
||||||
|
= number_with_delimiter(@pending_count)
|
||||||
|
|
||||||
|
%li.js-pipelines-tab-running{ class: active_when(@scope == 'running') }>
|
||||||
= link_to project_pipelines_path(@project, scope: :running) do
|
= link_to project_pipelines_path(@project, scope: :running) do
|
||||||
Running
|
Running
|
||||||
%span.badge.js-running-count
|
%span.badge.js-running-count
|
||||||
= number_with_delimiter(@running_or_pending_count)
|
= number_with_delimiter(@running_count)
|
||||||
|
|
||||||
%li{ class: active_when(@scope == 'branches') }>
|
%li.js-pipelines-tab-finished{ class: active_when(@scope == 'finished') }>
|
||||||
|
= link_to project_pipelines_path(@project, scope: :finished) do
|
||||||
|
Finished
|
||||||
|
%span.badge
|
||||||
|
= number_with_delimiter(@finished_count)
|
||||||
|
|
||||||
|
%li.js-pipelines-tab-branches{ class: active_when(@scope == 'branches') }>
|
||||||
= link_to project_pipelines_path(@project, scope: :branches) do
|
= link_to project_pipelines_path(@project, scope: :branches) do
|
||||||
Branches
|
Branches
|
||||||
|
|
||||||
%li{ class: active_when(@scope == 'tags') }>
|
%li.js-pipelines-tab-tags{ class: active_when(@scope == 'tags') }>
|
||||||
= link_to project_pipelines_path(@project, scope: :tags) do
|
= link_to project_pipelines_path(@project, scope: :tags) do
|
||||||
Tags
|
Tags
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Adds Pending and Finished tabs to pipelines page
|
||||||
|
merge_request:
|
||||||
|
author:
|
|
@ -25,7 +25,9 @@ describe Projects::PipelinesController do
|
||||||
expect(json_response).to include('pipelines')
|
expect(json_response).to include('pipelines')
|
||||||
expect(json_response['pipelines'].count).to eq 2
|
expect(json_response['pipelines'].count).to eq 2
|
||||||
expect(json_response['count']['all']).to eq 2
|
expect(json_response['count']['all']).to eq 2
|
||||||
expect(json_response['count']['running_or_pending']).to eq 2
|
expect(json_response['count']['running']).to eq 0
|
||||||
|
expect(json_response['count']['pending']).to eq 2
|
||||||
|
expect(json_response['count']['finished']).to eq 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,41 @@ describe 'Pipelines', :feature, :js do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'header tabs' do
|
||||||
|
before do
|
||||||
|
visit namespace_project_pipelines_path(project.namespace, project)
|
||||||
|
wait_for_vue_resource
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows a tab for All pipelines and count' do
|
||||||
|
expect(page.find('.js-pipelines-tab-all a').text).to include('All')
|
||||||
|
expect(page.find('.js-pipelines-tab-all .badge').text).to include('1')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows a tab for Pending pipelines and count' do
|
||||||
|
expect(page.find('.js-pipelines-tab-pending a').text).to include('Pending')
|
||||||
|
expect(page.find('.js-pipelines-tab-pending .badge').text).to include('0')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows a tab for Running pipelines and count' do
|
||||||
|
expect(page.find('.js-pipelines-tab-running a').text).to include('Running')
|
||||||
|
expect(page.find('.js-pipelines-tab-running .badge').text).to include('1')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows a tab for Finished pipelines and count' do
|
||||||
|
expect(page.find('.js-pipelines-tab-finished a').text).to include('Finished')
|
||||||
|
expect(page.find('.js-pipelines-tab-finished .badge').text).to include('0')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows a tab for Branches' do
|
||||||
|
expect(page.find('.js-pipelines-tab-branches a').text).to include('Branches')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows a tab for Tags' do
|
||||||
|
expect(page.find('.js-pipelines-tab-tags a').text).to include('Tags')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when pipeline is cancelable' do
|
context 'when pipeline is cancelable' do
|
||||||
let!(:build) do
|
let!(:build) do
|
||||||
create(:ci_build, pipeline: pipeline,
|
create(:ci_build, pipeline: pipeline,
|
||||||
|
|
|
@ -39,8 +39,8 @@ describe PipelinesFinder do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Scoping to running will speed up the test as it doesn't hit the FS
|
# Scoping to pending will speed up the test as it doesn't hit the FS
|
||||||
let(:params) { { scope: 'running' } }
|
let(:params) { { scope: 'pending' } }
|
||||||
|
|
||||||
it 'orders in descending order on ID' do
|
it 'orders in descending order on ID' do
|
||||||
feature_pipeline = create(:ci_pipeline, project: project, ref: 'feature')
|
feature_pipeline = create(:ci_pipeline, project: project, ref: 'feature')
|
||||||
|
|
Loading…
Reference in New Issue