From 27b75b2b2d9c274fca005949f645d97ce9333d71 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 6 Oct 2015 20:36:22 +0200 Subject: Refactor commit/build tests and fix CI cancel Signed-off-by: Dmitriy Zaporozhets --- CHANGELOG | 1 + app/controllers/ci/commits_controller.rb | 2 +- spec/features/builds_spec.rb | 22 ++++++++++ spec/features/ci/builds_spec.rb | 28 ------------ spec/features/ci/commits_spec.rb | 73 -------------------------------- spec/features/commits_spec.rb | 52 +++++++++++++++++++++++ 6 files changed, 76 insertions(+), 102 deletions(-) create mode 100644 spec/features/builds_spec.rb delete mode 100644 spec/features/ci/commits_spec.rb create mode 100644 spec/features/commits_spec.rb diff --git a/CHANGELOG b/CHANGELOG index 0400dbfabec..388fa2f8966 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -32,6 +32,7 @@ v 8.1.0 (unreleased) - Fix User Identities API. It now allows you to properly create or update user's identities. - Add user preference to change layout width (Peter Göbel) - Use commit status in merge request widget as preffered source of CI status + - Integrate CI commit and build pages into project pages v 8.0.4 - Fix Message-ID header to be RFC 2111-compliant to prevent e-mails being dropped (Stan Hu) diff --git a/app/controllers/ci/commits_controller.rb b/app/controllers/ci/commits_controller.rb index 404e0e4b412..7e6705c9702 100644 --- a/app/controllers/ci/commits_controller.rb +++ b/app/controllers/ci/commits_controller.rb @@ -16,7 +16,7 @@ module Ci def cancel commit.builds.running_or_pending.each(&:cancel) - redirect_to ci_project_commits_path(project, commit.sha) + redirect_to namespace_project_commit_path(commit.gl_project.namespace, commit.gl_project, commit.sha) end private diff --git a/spec/features/builds_spec.rb b/spec/features/builds_spec.rb new file mode 100644 index 00000000000..d0d60491b65 --- /dev/null +++ b/spec/features/builds_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe "Builds" do + + before do + login_as(:user) + @commit = FactoryGirl.create :ci_commit + @build = FactoryGirl.create :ci_build, commit: @commit + @gl_project = @commit.project.gl_project + @gl_project.team << [@user, :master] + end + + describe "GET /:project/builds/:id" do + before do + visit namespace_project_build_path(@gl_project.namespace, @gl_project, @build) + end + + it { expect(page).to have_content @commit.sha[0..7] } + it { expect(page).to have_content @commit.git_commit_message } + it { expect(page).to have_content @commit.git_author_name } + end +end diff --git a/spec/features/ci/builds_spec.rb b/spec/features/ci/builds_spec.rb index d65699dbefa..07f76e4065c 100644 --- a/spec/features/ci/builds_spec.rb +++ b/spec/features/ci/builds_spec.rb @@ -9,16 +9,6 @@ describe "Builds" do @commit.project.gl_project.team << [@user, :master] end - describe "GET /:project/builds/:id" do - before do - visit ci_project_build_path(@commit.project, @build) - end - - it { expect(page).to have_content @commit.sha[0..7] } - it { expect(page).to have_content @commit.git_commit_message } - it { expect(page).to have_content @commit.git_author_name } - end - describe "GET /:project/builds/:id/cancel" do before do @build.run! @@ -40,22 +30,4 @@ describe "Builds" do it { expect(page).to have_content 'Cancel' } end end - - context :public_project do - describe "Show page public accessible" do - before do - @commit = FactoryGirl.create :ci_commit - @commit.project.public = true - @commit.project.save - - @runner = FactoryGirl.create :ci_specific_runner - @build = FactoryGirl.create :ci_build, commit: @commit, runner: @runner - - stub_gitlab_calls - visit ci_project_build_path(@commit.project, @build) - end - - it { expect(page).to have_content @commit.sha[0..7] } - end - end end diff --git a/spec/features/ci/commits_spec.rb b/spec/features/ci/commits_spec.rb deleted file mode 100644 index b4236e1e589..00000000000 --- a/spec/features/ci/commits_spec.rb +++ /dev/null @@ -1,73 +0,0 @@ -require 'spec_helper' - -describe "Commits" do - include Ci::CommitsHelper - - context "Authenticated user" do - before do - @commit = FactoryGirl.create :ci_commit - @build = FactoryGirl.create :ci_build, commit: @commit - login_as :user - @commit.project.gl_project.team << [@user, :master] - end - - before do - stub_ci_commit_to_return_yaml_file - end - - describe "GET /:project/commits/:sha" do - before do - visit ci_commit_path(@commit) - end - - it { expect(page).to have_content @commit.sha[0..7] } - it { expect(page).to have_content @commit.git_commit_message } - it { expect(page).to have_content @commit.git_author_name } - end - - describe "Cancel commit" do - it "cancels commit" do - visit ci_commit_path(@commit) - click_on "Cancel" - - expect(page).to have_content "canceled" - end - end - - describe ".gitlab-ci.yml not found warning" do - it "does not show warning" do - visit ci_commit_path(@commit) - - expect(page).not_to have_content ".gitlab-ci.yml not found in this commit" - end - - it "shows warning" do - stub_ci_commit_yaml_file(nil) - - visit ci_commit_path(@commit) - - expect(page).to have_content ".gitlab-ci.yml not found in this commit" - end - end - end - - context "Public pages" do - before do - @commit = FactoryGirl.create :ci_commit - @commit.project.public = true - @commit.project.save - - @build = FactoryGirl.create :ci_build, commit: @commit - end - - describe "GET /:project/commits/:sha" do - before do - visit ci_commit_path(@commit) - end - - it { expect(page).to have_content @commit.sha[0..7] } - it { expect(page).to have_content @commit.git_commit_message } - it { expect(page).to have_content @commit.git_author_name } - end - end -end diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb new file mode 100644 index 00000000000..5da220859e3 --- /dev/null +++ b/spec/features/commits_spec.rb @@ -0,0 +1,52 @@ +require 'spec_helper' + +describe "Commits" do + include CiStatusHelper + + let(:project) { create(:project) } + + describe "CI" do + before do + login_as :user + project.team << [@user, :master] + @ci_project = project.ensure_gitlab_ci_project + @commit = FactoryGirl.create :ci_commit, gl_project: project, sha: project.commit.sha + @build = FactoryGirl.create :ci_build, commit: @commit + end + + before do + stub_ci_commit_to_return_yaml_file + end + + describe "GET /:project/commits/:sha" do + before do + visit ci_status_path(@commit) + end + + it { expect(page).to have_content @commit.sha[0..7] } + it { expect(page).to have_content @commit.git_commit_message } + it { expect(page).to have_content @commit.git_author_name } + end + + describe "Cancel commit" do + it "cancels commit" do + visit ci_status_path(@commit) + click_on "Cancel" + expect(page).to have_content "canceled" + end + end + + describe ".gitlab-ci.yml not found warning" do + it "does not show warning" do + visit ci_status_path(@commit) + expect(page).not_to have_content ".gitlab-ci.yml not found in this commit" + end + + it "shows warning" do + stub_ci_commit_yaml_file(nil) + visit ci_status_path(@commit) + expect(page).to have_content ".gitlab-ci.yml not found in this commit" + end + end + end +end -- cgit v1.2.1