Adds Pending and Finished tabs to pipelines page

Fix broken test
This commit is contained in:
Filipa Lacerda 2017-02-15 14:06:00 +00:00
parent b632bdddee
commit 0f36cfd7f5
8 changed files with 77 additions and 12 deletions

View file

@ -23,7 +23,7 @@ const CommitPipelinesStoreWithTimeAgo = require('../commit/pipelines/pipelines_s
apiScope: 'all',
pageInfo: {},
pagenum: 1,
count: { all: 0, running_or_pending: 0 },
count: {},
pageRequest: false,
};
},

View file

@ -13,9 +13,15 @@ class Projects::PipelinesController < Projects::ApplicationController
.page(params[:page])
.per(30)
@running_or_pending_count = PipelinesFinder
@running_count = PipelinesFinder
.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
.new(project).execute.count
@ -29,7 +35,9 @@ class Projects::PipelinesController < Projects::ApplicationController
.represent(@pipelines),
count: {
all: @pipelines_count,
running_or_pending: @running_or_pending_count
running: @running_count,
pending: @pending_count,
finished: @finished_count,
}
}
end

View file

@ -10,7 +10,11 @@ class PipelinesFinder
scoped_pipelines =
case scope
when 'running'
pipelines.running_or_pending
pipelines.running
when 'pending'
pipelines.pending
when 'finished'
pipelines.finished
when 'branches'
from_ids(ids_for_ref(branches))
when 'tags'

View file

@ -5,23 +5,35 @@
%div{ class: container_class }
.top-area
%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
All
%span.badge.js-totalbuilds-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
Running
%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
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
Tags

View file

@ -0,0 +1,4 @@
---
title: Adds Pending and Finished tabs to pipelines page
merge_request:
author:

View file

@ -25,7 +25,9 @@ describe Projects::PipelinesController do
expect(json_response).to include('pipelines')
expect(json_response['pipelines'].count).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

View file

@ -42,6 +42,41 @@ describe 'Pipelines', :feature, :js do
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
let!(:build) do
create(:ci_build, pipeline: pipeline,

View file

@ -39,8 +39,8 @@ describe PipelinesFinder do
end
end
# Scoping to running will speed up the test as it doesn't hit the FS
let(:params) { { scope: 'running' } }
# Scoping to pending will speed up the test as it doesn't hit the FS
let(:params) { { scope: 'pending' } }
it 'orders in descending order on ID' do
feature_pipeline = create(:ci_pipeline, project: project, ref: 'feature')