Commit 0f36cfd7 authored by Filipa Lacerda's avatar Filipa Lacerda

Adds Pending and Finished tabs to pipelines page

Fix broken test
parent b632bddd
...@@ -23,7 +23,7 @@ const CommitPipelinesStoreWithTimeAgo = require('../commit/pipelines/pipelines_s ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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.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{ class: active_when(@scope == 'branches') }> %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
......
---
title: Adds Pending and Finished tabs to pipelines page
merge_request:
author:
...@@ -25,7 +25,9 @@ describe Projects::PipelinesController do ...@@ -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 ...@@ -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 ...@@ -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')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment