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
author:
type: fixed
......@@ -609,6 +609,14 @@
expect(find('.js-environment-link')['href']).to match("environments/#{environment.id}")
expect(find('.js-job-deployment-link')['href']).to include(second_deployment.deployable.project.path, second_deployment.deployable_id.to_s)
end
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
end
end
end
context 'job failed to deploy' do
......
......@@ -36,6 +36,15 @@
expect(subject).to include(:deployed_at)
end
context 'when deployable is nil' do
let(:entity) { described_class.new(deployment, 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)
end
end
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