Show 'All' tab by default in the builds page

This commit is contained in:
Douglas Barbosa Alexandre 2015-12-30 12:25:42 -02:00
parent b9ec1aaec8
commit 567dc62b6d
7 changed files with 105 additions and 69 deletions

View file

@ -14,6 +14,8 @@ v 8.4.0 (unreleased)
- Revert back upvote and downvote button to the issue and MR pages
- Swap position of Assignee and Author selector on Issuables (Zeger-Jan van de Weg)
- Fix version check image in Safari
- Enable "Add key" button when user fills in a proper key (Stan Hu)
- Show 'All' tab by default in the builds page
v 8.3.3 (unreleased)
- Fix project transfer e-mail sending incorrect paths in e-mail notification (Stan Hu)

View file

@ -5,12 +5,12 @@ class Admin::BuildsController < Admin::ApplicationController
@builds = @all_builds.order('created_at DESC')
@builds =
case @scope
when 'all'
@builds
when 'running'
@builds.running_or_pending.reverse_order
when 'finished'
@builds.finished
else
@builds.running_or_pending.reverse_order
@builds
end
@builds = @builds.page(params[:page]).per(30)
end

View file

@ -12,12 +12,12 @@ class Projects::BuildsController < Projects::ApplicationController
@builds = @all_builds.order('created_at DESC')
@builds =
case @scope
when 'all'
@builds
when 'running'
@builds.running_or_pending.reverse_order
when 'finished'
@builds.finished
else
@builds.running_or_pending.reverse_order
@builds
end
@builds = @builds.page(params[:page]).per(30)
end

View file

@ -7,6 +7,11 @@
%ul.center-top-menu
%li{class: ('active' if @scope.nil?)}
= link_to admin_builds_path do
All
%span.badge.js-totalbuilds-count= @all_builds.count(:id)
%li{class: ('active' if @scope == 'running')}
= link_to admin_builds_path(scope: :running) do
Running
%span.badge.js-running-count= number_with_delimiter(@all_builds.running_or_pending.count(:id))
@ -15,11 +20,6 @@
Finished
%span.badge.js-running-count= number_with_delimiter(@all_builds.finished.count(:id))
%li{class: ('active' if @scope == 'all')}
= link_to admin_builds_path(scope: :all) do
All
%span.badge.js-totalbuilds-count= number_with_delimiter(@all_builds.count(:id))
.gray-content-block
#{(@scope || 'running').capitalize} builds

View file

@ -11,6 +11,12 @@
%ul.center-top-menu
%li{class: ('active' if @scope.nil?)}
= link_to project_builds_path(@project) do
All
%span.badge.js-totalbuilds-count
= number_with_delimiter(@all_builds.count(:id))
%li{class: ('active' if @scope == 'running')}
= link_to project_builds_path(@project, scope: :running) do
Running
%span.badge.js-running-count
= number_with_delimiter(@all_builds.running_or_pending.count(:id))
@ -21,12 +27,6 @@
%span.badge.js-running-count
= number_with_delimiter(@all_builds.finished.count(:id))
%li{class: ('active' if @scope == 'all')}
= link_to project_builds_path(@project, scope: :all) do
All
%span.badge.js-totalbuilds-count
= number_with_delimiter(@all_builds.count(:id))
.gray-content-block
#{(@scope || 'running').capitalize} builds from this project

View file

@ -1,69 +1,98 @@
require 'spec_helper'
describe "Admin Builds" do
let(:commit) { FactoryGirl.create :ci_commit }
let(:build) { FactoryGirl.create :ci_build, commit: commit }
describe 'Admin Builds' do
before do
login_as :admin
end
describe "GET /admin/builds" do
before do
build
visit admin_builds_path
end
describe 'GET /admin/builds' do
let(:commit) { create(:ci_commit) }
it { expect(page).to have_content "Running" }
it { expect(page).to have_content build.short_sha }
end
context 'All tab' do
context 'when have builds' do
it 'shows all builds' do
create(:ci_build, commit: commit, status: :pending)
create(:ci_build, commit: commit, status: :running)
create(:ci_build, commit: commit, status: :success)
create(:ci_build, commit: commit, status: :failed)
describe "Tabs" do
it "shows all builds" do
FactoryGirl.create :ci_build, commit: commit, status: "pending"
FactoryGirl.create :ci_build, commit: commit, status: "running"
FactoryGirl.create :ci_build, commit: commit, status: "success"
FactoryGirl.create :ci_build, commit: commit, status: "failed"
visit admin_builds_path
visit admin_builds_path
within ".center-top-menu" do
click_on "All"
expect(page).to have_selector('.project-issuable-filter li.active', text: 'All')
expect(page.all('.build-link').size).to eq(4)
expect(page).to have_link 'Cancel all'
end
end
expect(page.all(".build-link").size).to eq(4)
context 'when have no builds' do
it 'shows a message' do
visit admin_builds_path
expect(page).to have_selector('.project-issuable-filter li.active', text: 'All')
expect(page).to have_content 'No builds to show'
expect(page).not_to have_link 'Cancel all'
end
end
end
it "shows finished builds" do
build = FactoryGirl.create :ci_build, commit: commit, status: "pending"
build1 = FactoryGirl.create :ci_build, commit: commit, status: "running"
build2 = FactoryGirl.create :ci_build, commit: commit, status: "success"
context 'Running tab' do
context 'when have running builds' do
it 'shows running builds' do
build1 = create(:ci_build, commit: commit, status: :pending)
build2 = create(:ci_build, commit: commit, status: :success)
build3 = create(:ci_build, commit: commit, status: :failed)
visit admin_builds_path
visit admin_builds_path(scope: :running)
within ".center-top-menu" do
click_on "Finished"
expect(page).to have_selector('.project-issuable-filter li.active', text: 'Running')
expect(page.find('.build-link')).to have_content(build1.id)
expect(page.find('.build-link')).not_to have_content(build2.id)
expect(page.find('.build-link')).not_to have_content(build3.id)
expect(page).to have_link 'Cancel all'
end
end
expect(page.find(".build-link")).not_to have_content(build.id)
expect(page.find(".build-link")).not_to have_content(build1.id)
expect(page.find(".build-link")).to have_content(build2.id)
context 'when have no builds running' do
it 'shows a message' do
create(:ci_build, commit: commit, status: :success)
visit admin_builds_path(scope: :running)
expect(page).to have_selector('.project-issuable-filter li.active', text: 'Running')
expect(page).to have_content 'No builds to show'
expect(page).not_to have_link 'Cancel all'
end
end
end
it "shows running builds" do
build = FactoryGirl.create :ci_build, commit: commit, status: "pending"
build2 = FactoryGirl.create :ci_build, commit: commit, status: "success"
build3 = FactoryGirl.create :ci_build, commit: commit, status: "failed"
context 'Finished tab' do
context 'when have finished builds' do
it 'shows finished builds' do
build1 = create(:ci_build, commit: commit, status: :pending)
build2 = create(:ci_build, commit: commit, status: :running)
build3 = create(:ci_build, commit: commit, status: :success)
visit admin_builds_path
visit admin_builds_path(scope: :finished)
within ".center-top-menu" do
click_on "Running"
expect(page).to have_selector('.project-issuable-filter li.active', text: 'Finished')
expect(page.find('.build-link')).not_to have_content(build1.id)
expect(page.find('.build-link')).not_to have_content(build2.id)
expect(page.find('.build-link')).to have_content(build3.id)
expect(page).to have_link 'Cancel all'
end
end
expect(page.find(".build-link")).to have_content(build.id)
expect(page.find(".build-link")).not_to have_content(build2.id)
expect(page.find(".build-link")).not_to have_content(build3.id)
context 'when have no builds finished' do
it 'shows a message' do
create(:ci_build, commit: commit, status: :running)
visit admin_builds_path(scope: :finished)
expect(page).to have_selector('.project-issuable-filter li.active', text: 'Finished')
expect(page).to have_content 'No builds to show'
expect(page).to have_link 'Cancel all'
end
end
end
end
end

View file

@ -15,11 +15,11 @@ describe "Builds" do
context "Running scope" do
before do
@build.run!
visit namespace_project_builds_path(@project.namespace, @project)
visit namespace_project_builds_path(@project.namespace, @project, scope: :running)
end
it { expect(page).to have_content 'Running' }
it { expect(page).to have_content 'Cancel running' }
it { expect(page).to have_selector('.project-issuable-filter li.active', text: 'Running') }
it { expect(page).to have_link 'Cancel running' }
it { expect(page).to have_content @build.short_sha }
it { expect(page).to have_content @build.ref }
it { expect(page).to have_content @build.name }
@ -31,21 +31,22 @@ describe "Builds" do
visit namespace_project_builds_path(@project.namespace, @project, scope: :finished)
end
it { expect(page).to have_selector('.project-issuable-filter li.active', text: 'Finished') }
it { expect(page).to have_content 'No builds to show' }
it { expect(page).to have_content 'Cancel running' }
it { expect(page).to have_link 'Cancel running' }
end
context "All builds" do
before do
@project.builds.running_or_pending.each(&:success)
visit namespace_project_builds_path(@project.namespace, @project, scope: :all)
visit namespace_project_builds_path(@project.namespace, @project)
end
it { expect(page).to have_content 'All' }
it { expect(page).to have_selector('.project-issuable-filter li.active', text: 'All') }
it { expect(page).to have_content @build.short_sha }
it { expect(page).to have_content @build.ref }
it { expect(page).to have_content @build.name }
it { expect(page).to_not have_content 'Cancel running' }
it { expect(page).to_not have_link 'Cancel running' }
end
end
@ -56,8 +57,12 @@ describe "Builds" do
click_link "Cancel running"
end
it { expect(page).to have_content 'No builds to show' }
it { expect(page).to_not have_content 'Cancel running' }
it { expect(page).to have_selector('.project-issuable-filter li.active', text: 'All') }
it { expect(page).to have_content 'canceled' }
it { expect(page).to have_content @build.short_sha }
it { expect(page).to have_content @build.ref }
it { expect(page).to have_content @build.name }
it { expect(page).to_not have_link 'Cancel running' }
end
describe "GET /:project/builds/:id" do