From fa02d8fcc588b3720640131e7cc9ef7b06470932 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Thu, 21 Jul 2016 19:09:46 +0800 Subject: Merge shared context into controller test and update accordingly --- .../requests/projects/artifacts_controller_spec.rb | 77 +++++++++++++++++----- 1 file changed, 62 insertions(+), 15 deletions(-) (limited to 'spec/requests/projects') diff --git a/spec/requests/projects/artifacts_controller_spec.rb b/spec/requests/projects/artifacts_controller_spec.rb index 1782d37008a..b823676d9e1 100644 --- a/spec/requests/projects/artifacts_controller_spec.rb +++ b/spec/requests/projects/artifacts_controller_spec.rb @@ -1,9 +1,20 @@ require 'spec_helper' -require_relative '../shared/artifacts_context' describe Projects::ArtifactsController do + let(:user) { create(:user) } + let(:project) { create(:project) } + let(:pipeline) do + create(:ci_pipeline, + project: project, + sha: project.commit.sha, + ref: project.default_branch) + end + let(:build) { create(:ci_build, :success, :artifacts, pipeline: pipeline) } + describe 'GET /:project/builds/artifacts/:ref_name/browse?job=name' do - include_context 'artifacts from ref and build name' + before do + project.team << [user, :developer] + end before do login_as(user) @@ -19,33 +30,69 @@ describe Projects::ArtifactsController do job: job) end - context '404' do - def verify - expect(response.status).to eq(404) + context 'cannot find the build' do + shared_examples 'not found' do + it { expect(response).to have_http_status(:not_found) } end - it_behaves_like 'artifacts from ref with 404' + context 'has no such ref' do + before do + get path_from_ref('TAIL', build.name) + end + + it_behaves_like 'not found' + end + + context 'has no such build' do + before do + get path_from_ref(pipeline.ref, 'NOBUILD') + end + + it_behaves_like 'not found' + end context 'has no path' do before do get path_from_ref(pipeline.sha, build.name, '') end - it('gives 404') { verify } + it_behaves_like 'not found' end end - context '302' do - def verify - path = browse_namespace_project_build_artifacts_path( - project.namespace, - project, - build) + context 'found the build and redirect' do + shared_examples 'redirect to the build' do + it 'redirects' do + path = browse_namespace_project_build_artifacts_path( + project.namespace, + project, + build) - expect(response).to redirect_to(path) + expect(response).to redirect_to(path) + end + end + + context 'with regular branch' do + before do + pipeline.update(ref: 'master', + sha: project.commit('master').sha) + + get path_from_ref('master') + end + + it_behaves_like 'redirect to the build' end - it_behaves_like 'artifacts from ref successfully' + context 'with branch name containing slash' do + before do + pipeline.update(ref: 'improve/awesome', + sha: project.commit('improve/awesome').sha) + + get path_from_ref('improve/awesome') + end + + it_behaves_like 'redirect to the build' + end end end end -- cgit v1.2.1