Commit 90952a0a authored by Shinya Maeda's avatar Shinya Maeda
Browse files

Fix deployable nil exception on job controller

When deployable is nil, we gracefully take care of the case.
parent f4660ae812bf
......@@ -23,7 +23,7 @@
expose :last?
expose :deployed_by, as: :user, using: UserEntity
expose :deployable do |deployment, opts|
expose :deployable, if: -> (deployment) { deployment.deployable.present? } do |deployment, opts|
deployment.deployable.yield_self do |deployable|
if include_details?
JobEntity.represent(deployable, opts)
title: Fix users cannot access job detail page when deployable does not exist
merge_request: 32247
type: fixed
......@@ -609,6 +609,14 @@
expect(find('.js-environment-link')['href']).to match("environments/#{}")
expect(find('.js-job-deployment-link')['href']).to include(second_deployment.deployable.project.path, second_deployment.deployable_id.to_s)
context 'when deployment does not have a deployable' do
let!(:second_deployment) { create(:deployment, :success, environment: environment, deployable: nil) }
it 'has an empty href' do
expect(find('.js-job-deployment-link')['href']).to be_empty
context 'job failed to deploy' do
......@@ -36,6 +36,15 @@
expect(subject).to include(:deployed_at)
context 'when deployable is nil' do
let(:entity) {, request: request, deployment_details: false) }
let(:deployment) { create(:deployment, deployable: nil, project: project) }
it 'does not expose deployable entry' do
expect(subject).not_to include(:deployable)
context 'when the pipeline has another manual action' do
let(:other_build) { create(:ci_build, :manual, name: 'another deploy', pipeline: pipeline) }
let!(:other_deployment) { create(:deployment, deployable: other_build) }
Supports Markdown
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